From 013d05ae5a46872e941fa7f08d7d0b03a020b0e1 Mon Sep 17 00:00:00 2001
From: milesstoetzner This document holds colors, fonts, and logos. This document holds the dependencies used in production. The list is available as CSV. We ensure, that only the licenses 0BSD, Apache-2.0, BSD-2-Clause, BSD-3-Clause, BlueOak-1.0.0, CC-BY-3.0, CC0-1.0, ISC, MIT, PSF, Public Domain, Python-2.0 are used. We fixed the following issues by patching the dependencies. No, Vintner is not an orchestrator. But it is possible to deploy applications using orchestrator plugins. Contributions are very much welcome. Please read Development and Code of Conduct. This project is licensed under Apache-2.0. In this example, we will deploy a textfile on our local machine which has a different content depending on our input. This is just a simple example without any dependencies, such as a Docker Engine or a cloud. For a more complex scenario including OpenStack and GCP see Motivating Scenario. First, we install OpenTOSCA Vintner. For more information see Installation. We currently support xOpera and Unfurl. Since both can only be installed on Linux, we provide a WSL integration for both. We configure and enable xOpera. For more information see Installation. Next, we clone the repository. Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/branding/index.html b/branding/index.html
index 7836db5808..40ccc5ae9c 100644
--- a/branding/index.html
+++ b/branding/index.html
@@ -1807,8 +1807,8 @@
Icons&
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/contributing/code-of-conduct/index.html b/contributing/code-of-conduct/index.html
index 440f092e47..82d754d04e 100644
--- a/contributing/code-of-conduct/index.html
+++ b/contributing/code-of-conduct/index.html
@@ -1807,8 +1807,8 @@
Attribution
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/contributing/development/index.html b/contributing/development/index.html
index b5beb6a267..aba27a257e 100644
--- a/contributing/development/index.html
+++ b/contributing/development/index.html
@@ -1807,8 +1807,8 @@
Night&
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/contributing/documentation/index.html b/contributing/documentation/index.html
index f314b4b809..3c26143a29 100644
--- a/contributing/documentation/index.html
+++ b/contributing/documentation/index.html
@@ -1807,8 +1807,8 @@
Limitations
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/contributing/notes/index.html b/contributing/notes/index.html
index fc53b74d0e..d2aaa81ac1 100644
--- a/contributing/notes/index.html
+++ b/contributing/notes/index.html
@@ -1807,8 +1807,8 @@
Limitations
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/contributing/release/index.html b/contributing/release/index.html
index 64350409f4..fd76d5f4aa 100644
--- a/contributing/release/index.html
+++ b/contributing/release/index.html
@@ -1807,8 +1807,8 @@
ZenodoSeptember 14, 2024
+ September 21, 2024
diff --git a/contributing/setup/index.html b/contributing/setup/index.html
index d47befda16..40c3052e8b 100644
--- a/contributing/setup/index.html
+++ b/contributing/setup/index.html
@@ -1807,8 +1807,8 @@
Excluded DirectoriesSeptember 14, 2024
+ September 21, 2024
diff --git a/dependencies/index.html b/dependencies/index.html
index c853bc3376..5cdc4f423c 100644
--- a/dependencies/index.html
+++ b/dependencies/index.html
@@ -1819,8 +1819,8 @@
Dependencies
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/edmm/index.html b/edmm/index.html
index c2126bcdef..4078652020 100644
--- a/edmm/index.html
+++ b/edmm/index.html
@@ -1809,8 +1809,8 @@
Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/faq/index.html b/faq/index.html
index 3320f05465..2fc072959f 100644
--- a/faq/index.html
+++ b/faq/index.html
@@ -1807,8 +1807,8 @@
Under which license is Vintner
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/features/index.html b/features/index.html
index 61a5fc8717..8b1fda7ba7 100644
--- a/features/index.html
+++ b/features/index.html
@@ -2062,8 +2062,8 @@
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Acknowledgements
Getting StartedSeptember 14, 2024
+ September 21, 2024
diff --git a/index.html b/index.html
index 1aa9a1a509..29c04f4dbd 100644
--- a/index.html
+++ b/index.html
@@ -1965,8 +1965,8 @@
Public KeySeptember 14, 2024
+ September 21, 2024
diff --git a/interface/index.html b/interface/index.html
index 9b87e3167c..11480e74d8 100644
--- a/interface/index.html
+++ b/interface/index.html
@@ -2501,8 +2501,8 @@
vintner utils rules
+
output format (choices: ["yaml","json","latex"], default: "yaml")
@@ -15302,7 +15302,7 @@ vintner utils scenarios
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/normative/index.html b/normative/index.html
index 462235905b..3d30a8a0ba 100644
--- a/normative/index.html
+++ b/normative/index.html
@@ -1809,8 +1809,8 @@
Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/orchestrators/index.html b/orchestrators/index.html
index b5e8f81022..0bc4d7e47e 100644
--- a/orchestrators/index.html
+++ b/orchestrators/index.html
@@ -1878,8 +1878,8 @@
Known LimitationsSeptember 14, 2024
+ September 21, 2024
diff --git a/publications/index.html b/publications/index.html
index 643a07d1ab..87636264d8 100644
--- a/publications/index.html
+++ b/publications/index.html
@@ -1899,8 +1899,8 @@
September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/getting-started/index.html b/queries4tosca/getting-started/index.html
index 0566369564..8af86a0b89 100644
--- a/queries4tosca/getting-started/index.html
+++ b/queries4tosca/getting-started/index.html
@@ -1809,8 +1809,8 @@
Example QueriesSeptember 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/specification/index.html b/queries4tosca/specification/index.html
index 0dac3f3336..ad41dfc756 100644
--- a/queries4tosca/specification/index.html
+++ b/queries4tosca/specification/index.html
@@ -1809,8 +1809,8 @@
Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/introduction/index.html b/queries4tosca/tests/introduction/index.html
index 624cb45ac2..4b35d2e95a 100644
--- a/queries4tosca/tests/introduction/index.html
+++ b/queries4tosca/tests/introduction/index.html
@@ -1809,8 +1809,8 @@
Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-all/index.html b/queries4tosca/tests/test-all/index.html
index bbe0abcc89..6439adac85 100644
--- a/queries4tosca/tests/test-all/index.html
+++ b/queries4tosca/tests/test-all/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-array-access/index.html b/queries4tosca/tests/test-array-access/index.html
index 1d5ef7dc39..d34d610bde 100644
--- a/queries4tosca/tests/test-array-access/index.html
+++ b/queries4tosca/tests/test-array-access/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-boolean-and/index.html b/queries4tosca/tests/test-boolean-and/index.html
index 20cf08ac9d..724c78c633 100644
--- a/queries4tosca/tests/test-boolean-and/index.html
+++ b/queries4tosca/tests/test-boolean-and/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-boolean-or/index.html b/queries4tosca/tests/test-boolean-or/index.html
index 7340649a38..91bbc559c3 100644
--- a/queries4tosca/tests/test-boolean-or/index.html
+++ b/queries4tosca/tests/test-boolean-or/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-filter-equals/index.html b/queries4tosca/tests/test-filter-equals/index.html
index df8b17da1e..ef1a52f4ce 100644
--- a/queries4tosca/tests/test-filter-equals/index.html
+++ b/queries4tosca/tests/test-filter-equals/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-filter-existence/index.html b/queries4tosca/tests/test-filter-existence/index.html
index 93cd234ae6..f18f74bb6e 100644
--- a/queries4tosca/tests/test-filter-existence/index.html
+++ b/queries4tosca/tests/test-filter-existence/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-filter-negation/index.html b/queries4tosca/tests/test-filter-negation/index.html
index 6e2565c823..70446af4f2 100644
--- a/queries4tosca/tests/test-filter-negation/index.html
+++ b/queries4tosca/tests/test-filter-negation/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-filter-nested/index.html b/queries4tosca/tests/test-filter-nested/index.html
index 21016b6c89..5273c8a1ab 100644
--- a/queries4tosca/tests/test-filter-nested/index.html
+++ b/queries4tosca/tests/test-filter-nested/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-filter-regex/index.html b/queries4tosca/tests/test-filter-regex/index.html
index c0ce76cd3f..27c7bc9e10 100644
--- a/queries4tosca/tests/test-filter-regex/index.html
+++ b/queries4tosca/tests/test-filter-regex/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-group/index.html b/queries4tosca/tests/test-group/index.html
index b3c5149e4d..7120410469 100644
--- a/queries4tosca/tests/test-group/index.html
+++ b/queries4tosca/tests/test-group/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-length-any/index.html b/queries4tosca/tests/test-match-length-any/index.html
index c0ea9412aa..60d04be740 100644
--- a/queries4tosca/tests/test-match-length-any/index.html
+++ b/queries4tosca/tests/test-match-length-any/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-length-range/index.html b/queries4tosca/tests/test-match-length-range/index.html
index 8abbcffdb4..1937ca7029 100644
--- a/queries4tosca/tests/test-match-length-range/index.html
+++ b/queries4tosca/tests/test-match-length-range/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-next/index.html b/queries4tosca/tests/test-match-next/index.html
index 31b6749ae7..2481fad00e 100644
--- a/queries4tosca/tests/test-match-next/index.html
+++ b/queries4tosca/tests/test-match-next/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-previous/index.html b/queries4tosca/tests/test-match-previous/index.html
index ab2762d520..945f3ba264 100644
--- a/queries4tosca/tests/test-match-previous/index.html
+++ b/queries4tosca/tests/test-match-previous/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-rel-filter/index.html b/queries4tosca/tests/test-match-rel-filter/index.html
index 97896eebe8..042c6f2d8c 100644
--- a/queries4tosca/tests/test-match-rel-filter/index.html
+++ b/queries4tosca/tests/test-match-rel-filter/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-match-single/index.html b/queries4tosca/tests/test-match-single/index.html
index cef4a61a3e..a72e8dd8ff 100644
--- a/queries4tosca/tests/test-match-single/index.html
+++ b/queries4tosca/tests/test-match-single/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-node-template/index.html b/queries4tosca/tests/test-node-template/index.html
index 889592afd7..57f10885b2 100644
--- a/queries4tosca/tests/test-node-template/index.html
+++ b/queries4tosca/tests/test-node-template/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-policy/index.html b/queries4tosca/tests/test-policy/index.html
index cae4078c1d..f9c4c1c7c6 100644
--- a/queries4tosca/tests/test-policy/index.html
+++ b/queries4tosca/tests/test-policy/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-resolve-chain/index.html b/queries4tosca/tests/test-resolve-chain/index.html
index df4cce9903..1fc9b32081 100644
--- a/queries4tosca/tests/test-resolve-chain/index.html
+++ b/queries4tosca/tests/test-resolve-chain/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-resolve-loop/index.html b/queries4tosca/tests/test-resolve-loop/index.html
index f70a102b08..7d34bb1332 100644
--- a/queries4tosca/tests/test-resolve-loop/index.html
+++ b/queries4tosca/tests/test-resolve-loop/index.html
@@ -1809,8 +1809,8 @@
Expected ErrorSeptember 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-resolve-self/index.html b/queries4tosca/tests/test-resolve-self/index.html
index c5a92731e2..beaec68101 100644
--- a/queries4tosca/tests/test-resolve-self/index.html
+++ b/queries4tosca/tests/test-resolve-self/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-resolve-simple/index.html b/queries4tosca/tests/test-resolve-simple/index.html
index 5e850e5005..5fcb43034b 100644
--- a/queries4tosca/tests/test-resolve-simple/index.html
+++ b/queries4tosca/tests/test-resolve-simple/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-result-structure-complex/index.html b/queries4tosca/tests/test-result-structure-complex/index.html
index 3755790e29..3a27f2ea70 100644
--- a/queries4tosca/tests/test-result-structure-complex/index.html
+++ b/queries4tosca/tests/test-result-structure-complex/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-result-structure-simple/index.html b/queries4tosca/tests/test-result-structure-simple/index.html
index f33c57a14c..dbc6526194 100644
--- a/queries4tosca/tests/test-result-structure-simple/index.html
+++ b/queries4tosca/tests/test-result-structure-simple/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/queries4tosca/tests/test-shortcut-property/index.html b/queries4tosca/tests/test-shortcut-property/index.html
index 264dccb648..7e51627be8 100644
--- a/queries4tosca/tests/test-shortcut-property/index.html
+++ b/queries4tosca/tests/test-shortcut-property/index.html
@@ -1809,8 +1809,8 @@
Query Result
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/resources/index.html b/resources/index.html
index 65ea8e5591..6497192cac 100644
--- a/resources/index.html
+++ b/resources/index.html
@@ -1807,8 +1807,8 @@
Other ResourcesSeptember 14, 2024
+ September 21, 2024
diff --git a/scsar/index.html b/scsar/index.html
index ec9ad10743..ab4bf0a9d0 100644
--- a/scsar/index.html
+++ b/scsar/index.html
@@ -1809,8 +1809,8 @@
Disclaimer of Warranty
Last update:
- September 14, 2024
+ September 21, 2024
diff --git a/search/search_index.json b/search/search_index.json
index e2c4692665..47a784527d 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"branding/","title":"Branding","text":"
","tags":["Misc"]},{"location":"branding/#fonts","title":"Fonts","text":"
","tags":["Misc"]},{"location":"branding/#logos","title":"Logos","text":"Vintner Logo Orange SVG Vintner Logo Orange PNG Vintner Logo Black SVG Vintner Logo Black PNG","tags":["Misc"]},{"location":"branding/#icons","title":"Icons","text":"Vintner Icon SVG","tags":["Misc"]},{"location":"dependencies/","title":"Dependencies","text":"
","tags":["Vintner"]},{"location":"faq/","title":"FAQ","text":"","tags":["Misc"]},{"location":"faq/#is-vintner-an-orchestrator","title":"Is Vintner an Orchestrator?","text":"curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template getting-started --path examples/xopera-getting-started\n
Next, we initialize an application instance.
vintner instances init --instance getting-started --template getting-started\n
The imported template contains the following conditional node templates.
first:\ntype: textfile\nconditions: {logic_expression: is_first}\nproperties:\ncontent: 'First Textfile has been selected!'\nrequirements:\n- host: node: localhost\nconditions: {logic_expression: is_first}\nsecond:\ntype: textfile\nconditions: {logic_expression: is_second}\nproperties:\ncontent: 'Second Textfile has been selected!'\nrequirements:\n- host: node: localhost\nconditions: {logic_expression: is_second}\n
We intend to deploy the first textfile. We specify this when resolving variability.
vintner instances resolve --instance getting-started --presets first\n
Finally, we deploy the application.
vintner instances deploy --instance getting-started\n
The deployed textfile has the content as expected.
/tmp/vintner-getting-started.txtFirst Textfile has been selected!\n
Eventually, we undeploy the application.
vintner instances undeploy --instance getting-started\n
","tags":["Vintner","Guide","xOpera","Unfurl"]},{"location":"installation/","title":"Installation","text":"This document holds instructions on installing Vintner.
","tags":["Vintner","Docker"]},{"location":"installation/#script","title":"Script","text":"Vintner can be installed on Linux x64/ arm64 and Windows x64 using our installation scripts.
Linux x64/ arm64Windows x64curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Install a specific version as follows.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo VERSION=${VERSION} bash -\n
powershell -Command \"& {Invoke-WebRequest -Uri 'https://vintner.opentosca.org/install.ps1' -UseBasicParsing | Invoke-Expression}\"\n
Install a specific version as follows.
Invoke-WebRequest -Uri \"https://vintner.opentosca.org/install.ps1\" -OutFile install.ps1\n$env:VERSION = \"DESIRED_VERSION\"\npowershell -ExecutionPolicy Bypass -File .\\install.ps1\nRemove-Item install.ps1\n
","tags":["Vintner","Docker"]},{"location":"installation/#npm","title":"NPM","text":"Vintner can be installed using npm
. Ensure, that npm bin -g
is in your $PATH
.
npm install --global opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#yarn-classic","title":"Yarn (Classic)","text":"Vintner can be installed using yarn
(classic). Ensure, that yarn global bin
is in your $PATH
.
yarn global add opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#yarn-modern","title":"Yarn (Modern)","text":"Vintner can be installed using yarn
(modern). However, this will not install Vintner permanently but only temporary.
yarn dlx opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#choco","title":"Choco","text":"Vintner can be installed using choco
.
choco install opentosca-vintner -y\n
","tags":["Vintner","Docker"]},{"location":"installation/#docker","title":"Docker","text":"Vintner can be installed using Docker. The Image is about 3GB large and contains tools, such as xOpera, Unfurl, Ansible, Terraform, and all of our examples.
","tags":["Vintner","Docker"]},{"location":"installation/#github-container-registry","title":"GitHub Container Registry","text":"Pull the latest image from the GitHub Container Registry.
docker pull ghcr.io/opentosca/opentosca-vintner:latest\n
","tags":["Vintner","Docker"]},{"location":"installation/#starting-the-container","title":"Starting the Container","text":"First, we create directories for persisting data.
mkdir vintner\ncd vintner\n\nmkdir data\nmkdir shared\n
Next, we start the container.
docker run \\\n--detach \\\n--volume ${PWD}/data:/vintner/data \\\n--volume ${PWD}/shared:/vintner/shared \\\n--network host \\\n--name vintner \\\nghcr.io/opentosca/opentosca-vintner:latest\n
The command consists of the following aspects.
--detach
starts the container in the background.--volume ${PWD}/data:/vintner/data
persists all data written by Vintner.--volume ${PWD}/shared:/vintner/shared
should be used to share data between the host and the container, e.g., CSARs or GCP credentials.--network host
uses the host network, e.g., for ipv6 support.--name vintner
is the container name. ghcr.io/opentosca/opentosca-vintner:latest
pulls the latest Docker ImageInside the container, the following directories are of interest.
/vintner/data
holds all data written by Vintner./vintner/shared
should be used to share data between the host and the container, e.g., CSARs or GCP credentials./vintner/examples
holds the examples directory of the repository.The container runs in the background. Vintner is executed as follows.
docker exec -it vintner vintner --version\n
On Linux, we set an alias to directly use Vintner as command in the terminal on the docker host. To persist the alias, add the alias, e.g., to ~/.bashrc
(requires reloading the session).
alias vintner=\"docker exec -it vintner vintner\"\n
Now, Vintner is available as follows.
vintner --version\n
","tags":["Vintner","Docker"]},{"location":"installation/#xopera","title":"xOpera","text":"xOpera is already installed inside the container and Vintner is already correctly configured to connect to xOpera. By default, xOpera is already enabled. Enable xOpera as follows.
docker exec -it vintner vintner orchestrators enable --orchestrator xopera\n
","tags":["Vintner","Docker"]},{"location":"installation/#unfurl","title":"Unfurl","text":"Unfurl is already installed inside the container and Vintner is already correctly configured to connect to Unfurl. Enable Unfurl as follows.
docker exec -it vintner vintner orchestrators enable --orchestrator unfurl\n
","tags":["Vintner","Docker"]},{"location":"installation/#stopping-the-container","title":"Stopping the Container","text":"Ensure to only stop Vintner, once Vintner is idle. Otherwise, data and deployments will be corrupted. Stop the container as follows.
docker stop vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#watching-the-logs-of-the-container","title":"Watching the Logs of the Container","text":"Watch the logs of the container as follows.
docker logs -f vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#debugging-the-container","title":"Debugging the Container","text":"In case we need to debug something inside the container or perform any administrative ./tasks, we can exec into the container as follows. This starts a shell inside the container.
docker exec -it vintner /bin/bash\n
","tags":["Vintner","Docker"]},{"location":"installation/#manual","title":"Manual","text":"Install Vintner manually by downloading the binary for your system and adding it to $PATH
. There are no other dependencies required. The following example shows the installation on selected platforms and architectures.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.xz\ntar -xf vintner-linux-x64.xz\nrm vintner-linux-x64.xz\nmv vintner-linux-x64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-arm64.xz\ntar -xf vintner-linux-arm64.xz\nrm vintner-linux-arm64.xz\nmv vintner-linux-arm64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-alpine-x64.xz\ntar -xf vintner-alpine-x64.xz\nrm vintner-alpine-x64.xz\nmv vintner-alpine-x64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
First, create the directory $env:USERPROFILE\\bin
and add it to your PATH. We recommend to do this manually.
$userBin = \"$env:USERPROFILE\\bin\"\nif (-not (Test-Path -Path $userBin)) {\nNew-Item -ItemType Directory -Force -Path \"$env:USERPROFILE\\bin\"\n$userPath = [System.Environment]::GetEnvironmentVariable(\"PATH\", [System.EnvironmentVariableTarget]::User)\n$newPath = \"$userPath$userBin;\"\n[System.Environment]::SetEnvironmentVariable(\"PATH\", $newPath, [System.EnvironmentVariableTarget]::User)\n}\n
Next, install vintner.
$userBin = \"$env:USERPROFILE\\bin\"\nInvoke-WebRequest -URI https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-win-x64.exe.xz -OutFile vintner-win-x64.exe.xz\ntar -xf vintner-win-x64.exe.xz\nRemove-Item vintner-win-x64.exe.xz\nMove-Item vintner-win-x64.exe $userBin\\vintner.exe\nvintner setup init\n
The following binaries are available:
Platform Architecture Binary Archive Signature Checksum Alpine x64 link link link link Linux arm64 link link link link Linux x64 link link link link Windows x64 link link link link","tags":["Vintner","Docker"]},{"location":"installation/#checksum","title":"Checksum","text":"To verify the integrity of a binary, proceed as follows. The following is a walkthrough for vintner-linux-x64
. We assume that vintner-linux-x64
is present in the current working directory.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.sha256\nsha256sum --check vintner-linux-x64.sha256\n
","tags":["Vintner","Docker"]},{"location":"installation/#signature","title":"Signature","text":"Every binary is cryptographically signed.
","tags":["Vintner","Docker"]},{"location":"installation/#verification","title":"Verification","text":"To verify a signature of a binary, first import our public key and download the respective signature. The following is a walkthrough for vintner-linux-x64
using gpg
. We assume that vintner-linux-x64
is present in the current working directory.
First, we import the public key.
curl https://vintner.opentosca.org/vintner-release.gpg | gpg --import\n
Next, we download the signature.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.asc\n
Next, we verify the signature.
gpg --verify vintner-linux-x64.asc\n
The output should be something as follows.
gpg: assuming signed data in 'vintner-linux-x64'\ngpg: Signature made Sun Oct 23 19:12:56 2022 UTC\ngpg: using RSA key 4BB862B810B792CC072D59DB964183A1485881AD\ngpg: Good signature from \"vintner-release\" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 4BB8 62B8 10B7 92CC 072D 59DB 9641 83A1 4858 81AD\n
","tags":["Vintner","Docker"]},{"location":"installation/#public-key","title":"Public Key","text":"The following public key shall be used for verifying signatures. The public key is also available as download.
pub rsa4096/964183A1485881AD 2022-10-23 [SC]\n4BB862B810B792CC072D59DB964183A1485881AD\nuid [unknown] vintner-release\nsub rsa4096/B230BD6651AA1BB8 2022-10-23 [E]\n
-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGNVcowBEAC0jzKuuLE6AqCaRvjp1mwCC76Px6wG4jgvrXfraCaOf3Y3uywW\nlD3NNfqb/rc/FYQXH9lIU9n6zIB47mK0zoeHWWqPjRp6BTTbbMjePinHCb2K1XM5\nwLglw0OeC2T/NvfbU7FbN/QVFgQPWL16UhuoQhfraax6TFGO9iF/+yhG7AYZ+vAE\n7GkaPQAlzGrbbyffaBYzoqgalHslmxG9RvAxDBaQXrcsqJiv6Zfv8rDNdPlGk7mX\nUIbMHUuFzcep15ZQy+9PY/JLyYBUUDNhAXKLomjNPuCQHvZ/DS/XveIW+l6EYSLq\nr6B/XCFkVWUO2RugvmpEacUSLrIL39ceUh0dYnpEDU4Z8dRlAyVaswR5j90bPrgz\nNSaLF5NQrWlE8gksvK2KYog9Q4lrAdD0wQNV0bnU6YG3TM71wXZim8PokTzxPrA0\nJAigEHzN9nbHSzjB71m8cVt6Zl4lGCCYqr8jSjKAUAN01koQVZd/lFljXfI27NcG\ny7yYBc97IWaOM039kyPKKVGAB3I3l9d90+RL3tSET2MwPN3Vjlq3ArJ6QBKeB80S\nHgRroYVXx+dCJpZhMeeTC8kVjWNL1kctwOMtxWU7N4fO+pi2BW1F5QHlYWJj2fRY\nMp9LE9NYXD1UO/8N1bT2RLGPwrmXXCJF20UDc63wuKzO0IBgXBvPArkUtwARAQAB\ntA92aW50bmVyLXJlbGVhc2WJAk4EEwEIADgWIQRLuGK4ELeSzActWduWQYOhSFiB\nrQUCY1VyjAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCWQYOhSFiBraf5\nD/4mHhD7nwLQ87bE4d6jPB9prwN86eT3bpz1wXoVwFJfArJ7I3wH/0uQe0GXGbJx\nG9TUdQHAGgN6/e99x54Dg4n4Qzap4W5baYlE3Klu6BUZOx9RKhSdtGfCk0+kUpxV\nlMNLWeXFeHepCp3CwKdH3gkwcWxaBBSsYE2ayk34+CXs3ftttRRUPmCCyxk+XiM9\nHSDO/1yIdiwO1XPFVuFZA150wdW2KYL4AuG4aB7lh1nd6jNgoz7LjwdpWN4Sa+38\n5AkQVez1n8Ru1ul4GRPbS2T+OZu6aoITe6i3JxDEAL/ljPN07ufiqFnTYKh8yUsl\npPOpoM6ytMgcPlSxDfyhWSKw4aFYEJYT6Teeniup4ElywOJsBHfQ6Tl9Ix9nVti1\n9h+xbO7mik802AVYdyXtBrZHNdaUClsJjYpL17mivuZ1JoFNAmLPo1nTr/4IVuiI\nA/LoKotLsL9OI+4rhXzsvIyvJBXHhcDp7TOjfEp8S9tLygDLnlC4lsJLzVdDamq2\n/iDnucQu3TMRoVLrZwVAtsr5GyazmAZcpBjkh88Rgf4iKWbAesG7yGgJdOJ5Bi81\nvmm25Sks+UxaXQzXcTe6ga80o5dqm1KYIkoj+assnA0LwOh1GZt7FZaSoQqXERKm\nyEjOAXNt8ZhewyJZGizYhGUslFOQA/8/kKBKcW9hxqTqLbkCDQRjVXKMARAA2MNq\nipSOqaLOzDz4EULTYknshTe34bKw4EDYVbTeHhIJKr1VWkPo8XK9o74+NgiwpI2H\nfPlO61BMm0FWRq9RUPQHNWU6qtV2KimQuvTdlwUiiX9uLeJvU6DO25350d7b9RdZ\naXUT1In9Ziya67ThsnXQqPusUyV7OEFI9xLX8EsmrZjw/7S3ACJ0ekehq0tRcPJo\nhS5bmN75V9YZVmQViW5nuUfg3iifhsn6xMSBV2oQ+vg0qFwKlTRO1a12ltJuJjCB\nFAtB3C8aI/tl//KRnkyuARmrtGtaht0oCbi+J3/1ChnTvbEXlMG65mNw/OXz+KsI\nGPn4dOvigMQMTfTcvSX6pT4H3xmadFl4pF+8gmysxZuSMhTrPhLXitu24r9DxRrY\ndAibrXOJu7J20+8ZttvRAiEUYAvUyQVtgsc0aAkbUGGBwt4NmdMb0mbN34X0bKPV\nXGc/JImn1pZd1h7zzO4nHlJPDtjb5/s4C3g9isnvFHFXmAIfV9q94e0lXmI5xsQY\nrGqcQzT8JT8S2SpvX/2ABPWyLBAxveDAKZpKNu6uasG2AeA8GpNqOGJq4S7IkaUx\n1xNaQzkJvemKWefslExVAhV1uv2cOxCIq8wTxsozRxs+5WzWxIfT/ob60edKgMkn\nz8NfPbCZw5PkHf/e0pbkbGJI8F2VerjubSSNDEMAEQEAAYkCNgQYAQgAIBYhBEu4\nYrgQt5LMBy1Z25ZBg6FIWIGtBQJjVXKMAhsMAAoJEJZBg6FIWIGtx80QAIOGvqB5\nX+E6VvblU5HHbj8mSZOqWKWgDpnKlehEjEx5UxFgJckmywhYy6UpxjLVGUvIaDLj\nXTmekqV32PUzaLEA5Z/n7nnNBXhVkAPReXqOrpMru+G6q5EgEBtAqVBx34J1Wq/f\nFBWVq4qoPVQrIuvJRtpQJTl7EDWfFZNDrbWCyNjWCQFOU0RzbpGN8Psr2yQZGBpa\n/BkobV3ffJnNvWd2qqP0eOsmOZUrERO3wlbb4Gfi7IvbBaqrwcXw9PwgQ0mWGXoH\nIGvcc3XgEoN4j/RCrkz8LufgkmDjjcomfwXMC/g7NWChCxlGAmZPqZnU5hCLLHpL\nnIyEZJEhpWXk2VGwgiSl+LhfSk1jWGStVL92bgW/YGu7+rjWA6+2hu9PZ0bneAWb\nB/ho86sE5y9eeSUM87aN0E5rWCmzx8ijTKOcukdpk+yJS1L1d/CxAv5twSrA23ne\naTBoNMm9JmUxJU8ILWY9DRBWV1FLsoBy3v3+ztQWz6i3bPZKNVgPdQD2XyXMZQfu\nZWvvd6zqXqPPX38sveW+jMyw4jUORWYkjF1MOP/YtmmuVbdcvJNTrwLlN+KWzSzd\ne83fmHrZs0iN43SQBPNtz3hYWnwpQLZCSgLa0UKzaVWLkhHA/QBFOPMQUNwdfaHq\nq2BZ9kJ+ruFawgv9hjTz2vYO/EGXwZuqcvHB\n=MPBe\n-----END PGP PUBLIC KEY BLOCK-----\n
","tags":["Vintner","Docker"]},{"location":"interface/","title":"Interface","text":"This document holds the interface specification.
","tags":["Vintner"]},{"location":"interface/#vintner-assets-clean","title":"vintner assets clean","text":"cleans all assets
CLIcURLJavaScriptPythonKotlinvintner assets clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/assets/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-assets-content","title":"vintner assets content","text":"shows content of an asset
CLIcURLJavaScriptPythonKotlinvintner assets content --name ${NAME}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\"}' \\\n${SERVER_ADDRESS}/assets/content\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/content\", {\nname: NAME\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/content\", json={\n\"name\": NAME\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/content\", json=mapOf(\n\"name\" to NAME\n))\n
Option Mandatory Type Description name true string name","tags":["Vintner"]},{"location":"interface/#vintner-assets-delete","title":"vintner assets delete","text":"deletes an asset
CLIcURLJavaScriptPythonKotlinvintner assets delete --name ${NAME}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\"}' \\\n${SERVER_ADDRESS}/assets/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/delete\", {\nname: NAME\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/delete\", json={\n\"name\": NAME\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/delete\", json=mapOf(\n\"name\" to NAME\n))\n
Option Mandatory Type Description name true string name","tags":["Vintner"]},{"location":"interface/#vintner-assets-import","title":"vintner assets import","text":"imports an asset
CLIcURLJavaScriptPythonKotlinvintner assets import --name ${NAME} --file ${FILE} --content ${CONTENT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\", \"file\": \"${FILE}\", \"content\": \"${CONTENT}\"}' \\\n${SERVER_ADDRESS}/assets/import\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/import\", {\nname: NAME,\nfile: FILE,\ncontent: CONTENT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/import\", json={\n\"name\": NAME,\n\"file\": FILE,\n\"content\": CONTENT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/import\", json=mapOf(\n\"name\" to NAME,\n\"file\" to FILE,\n\"content\" to CONTENT\n))\n
Option Mandatory Type Description name true string name (must match /^[a-z-]+$/) file true string path to a file content true string content to import","tags":["Vintner"]},{"location":"interface/#vintner-assets-list","title":"vintner assets list","text":"lists all assets
CLIcURLJavaScriptPythonKotlinvintner assets list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/assets/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-about","title":"vintner info about","text":"general information
CLIcURLJavaScriptPythonKotlinvintner info about
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/about\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/about\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/about\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/about\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-author","title":"vintner info author","text":"open author
CLIcURLJavaScriptPythonKotlinvintner info author
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/author\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/author\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/author\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/author\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-contact","title":"vintner info contact","text":"contact us
CLIcURLJavaScriptPythonKotlinvintner info contact
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/contact\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/contact\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/contact\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/contact\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-dependencies","title":"vintner info dependencies","text":"dependencies used to implement vintner
CLIcURLJavaScriptPythonKotlinvintner info dependencies
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/dependencies\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/dependencies\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/dependencies\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/dependencies\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-docs","title":"vintner info docs","text":"open documentation
CLIcURLJavaScriptPythonKotlinvintner info docs
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/docs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/docs\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/docs\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/docs\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-license","title":"vintner info license","text":"license of vintner
CLIcURLJavaScriptPythonKotlinvintner info license
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/license\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/license\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/license\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/license\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-repo","title":"vintner info repo","text":"open repository
CLIcURLJavaScriptPythonKotlinvintner info repo
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/repo\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/repo\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/repo\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/repo\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-ansible","title":"vintner install ansible","text":"installs Ansible
CLIcURLJavaScriptPythonKotlinvintner install ansible
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/ansible\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/ansible\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/ansible\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/ansible\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-docker","title":"vintner install docker","text":"installs Docker
CLIcURLJavaScriptPythonKotlinvintner install docker
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/docker\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/docker\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/docker\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/docker\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-gcloud","title":"vintner install gcloud","text":"installs GCloud
CLIcURLJavaScriptPythonKotlinvintner install gcloud
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/gcloud\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/gcloud\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/gcloud\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/gcloud\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-platformio","title":"vintner install platformio","text":"installs PlatformIO Core CLI
CLIcURLJavaScriptPythonKotlinvintner install platformio
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/platformio\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/platformio\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/platformio\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/platformio\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-python","title":"vintner install python","text":"installs Python
CLIcURLJavaScriptPythonKotlinvintner install python
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/python\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/python\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/python\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/python\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-terraform","title":"vintner install terraform","text":"installs Terraform
CLIcURLJavaScriptPythonKotlinvintner install terraform
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/terraform\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/terraform\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/terraform\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/terraform\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-unfurl","title":"vintner install unfurl","text":"installs Unfurl in a venv in \"~/unfurl\"
CLIcURLJavaScriptPythonKotlinvintner install unfurl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/unfurl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/unfurl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/unfurl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/unfurl\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-utils","title":"vintner install utils","text":"installs utils, such as sudo, unzip, git ...
CLIcURLJavaScriptPythonKotlinvintner install utils
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/utils\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/utils\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/utils\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/utils\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-xopera","title":"vintner install xopera","text":"installs xOpera in a venv in \"~/opera\"
CLIcURLJavaScriptPythonKotlinvintner install xopera
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/xopera\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/xopera\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/xopera\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/xopera\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-adapt","title":"vintner instances adapt","text":"submit sensor data used for adapting the instance
cURLJavaScriptPythonKotlincurl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"inputs\": \"${INPUTS}\"}' \\\n${SERVER_ADDRESS}/instances/adapt\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/adapt\", {\ninstance: INSTANCE,\ninputs: INPUTS\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/adapt\", json={\n\"instance\": INSTANCE,\n\"inputs\": INPUTS\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/adapt\", json=mapOf(\n\"instance\" to INSTANCE,\n\"inputs\" to INPUTS\n))\n
Option Mandatory Type Description instance true string instance name inputs true InputAssignmentMap sensor data","tags":["Vintner"]},{"location":"interface/#vintner-instances-clean","title":"vintner instances clean","text":"deletes all instances
CLIcURLJavaScriptPythonKotlinvintner instances clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/instances/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-code","title":"vintner instances code","text":"opens the instance directory in visual studio code
CLIvintner instances code --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-continue","title":"vintner instances continue","text":"continue instance (deployment)
CLIcURLJavaScriptPythonKotlinvintner instances continue --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/continue\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/continue\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/continue\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/continue\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-debug","title":"vintner instances debug","text":"debug utility that passes a command into the orchestrator in scope of the instance
CLIcURLJavaScriptPythonKotlinvintner instances debug --instance ${INSTANCE} --command ${COMMAND}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"command\": \"${COMMAND}\"}' \\\n${SERVER_ADDRESS}/instances/debug\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/debug\", {\ninstance: INSTANCE,\ncommand: COMMAND\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/debug\", json={\n\"instance\": INSTANCE,\n\"command\": COMMAND\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/debug\", json=mapOf(\n\"instance\" to INSTANCE,\n\"command\" to COMMAND\n))\n
Option Mandatory Type Description instance true string instance name command true string command force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-delete","title":"vintner instances delete","text":"deletes instance
CLIcURLJavaScriptPythonKotlinvintner instances delete --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/delete\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/delete\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/delete\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-deploy","title":"vintner instances deploy","text":"deploys instance
CLIcURLJavaScriptPythonKotlinvintner instances deploy --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/deploy\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/deploy\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/deploy\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/deploy\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs (env: OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}) retries false boolean number of retries (default: \"1\") verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-info","title":"vintner instances info","text":"display instance info
CLIcURLJavaScriptPythonKotlinvintner instances info --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/info\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/info\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/info\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/info\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-init","title":"vintner instances init","text":"initializes a new instance
CLIcURLJavaScriptPythonKotlinvintner instances init --instance ${INSTANCE} --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/instances/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/init\", {\ninstance: INSTANCE,\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/init\", json={\n\"instance\": INSTANCE,\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/init\", json=mapOf(\n\"instance\" to INSTANCE,\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description instance true string instance name (must match /^[a-z-]+$/) template true string template name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-inspect","title":"vintner instances inspect","text":"inspects variability-resolved service template
CLIcURLJavaScriptPythonKotlinvintner instances inspect --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/inspect\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/inspect\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/inspect\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/inspect\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-list","title":"vintner instances list","text":"lists all instances
CLIcURLJavaScriptPythonKotlinvintner instances list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/instances/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-open","title":"vintner instances open","text":"opens template directory in a file browser
CLIvintner instances open --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-outputs","title":"vintner instances outputs","text":"returns instance outputs
CLIcURLJavaScriptPythonKotlinvintner instances outputs --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/outputs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/outputs\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/outputs\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/outputs\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-path","title":"vintner instances path","text":"returns the path to the instance directory
CLIcURLJavaScriptPythonKotlinvintner instances path --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/path\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/path\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/path\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-resolve","title":"vintner instances resolve","text":"resolves variability
CLIcURLJavaScriptPythonKotlinvintner instances resolve --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/resolve\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/resolve\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/resolve\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/resolve\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name presets false string... names of variability presets(env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML], env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY}) force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-state","title":"vintner instances state","text":"set the state of the instance
CLIcURLJavaScriptPythonKotlinvintner instances state --instance ${INSTANCE} --state ${STATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"state\": \"${STATE}\"}' \\\n${SERVER_ADDRESS}/instances/state\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/state\", {\ninstance: INSTANCE,\nstate: STATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/state\", json={\n\"instance\": INSTANCE,\n\"state\": STATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/state\", json=mapOf(\n\"instance\" to INSTANCE,\n\"state\" to STATE\n))\n
Option Mandatory Type Description instance true string instance name state true string state force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-swap","title":"vintner instances swap","text":"swap instance template
CLIcURLJavaScriptPythonKotlinvintner instances swap --instance ${INSTANCE} --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/instances/swap\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/swap\", {\ninstance: INSTANCE,\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/swap\", json={\n\"instance\": INSTANCE,\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/swap\", json=mapOf(\n\"instance\" to INSTANCE,\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description instance true string instance name template true string template name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-unadapt","title":"vintner instances unadapt","text":"stop adaptation loop of instance
cURLJavaScriptPythonKotlincurl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/unadapt\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/unadapt\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/unadapt\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/unadapt\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-undeploy","title":"vintner instances undeploy","text":"undeploys instance
CLIcURLJavaScriptPythonKotlinvintner instances undeploy --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/undeploy\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/undeploy\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/undeploy\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/undeploy\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-update","title":"vintner instances update","text":"update instance
CLIcURLJavaScriptPythonKotlinvintner instances update --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/update\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/update\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/update\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/update\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs (env: OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}) verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-validate","title":"vintner instances validate","text":"validates variability-resolved service template
CLIcURLJavaScriptPythonKotlinvintner instances validate --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/validate\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/validate\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/validate\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/validate\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs verbose false boolean verbose no-verbose false boolean dry false boolean dry run no-dry false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-attest","title":"vintner orchestrators attest","text":"attests an orchestrator plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators attest --orchestrator ${ORCHESTRATOR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"orchestrator\": \"${ORCHESTRATOR}\"}' \\\n${SERVER_ADDRESS}/orchestrators/attest\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/attest\", {\norchestrator: ORCHESTRATOR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/attest\", json={\n\"orchestrator\": ORCHESTRATOR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/attest\", json=mapOf(\n\"orchestrator\" to ORCHESTRATOR\n))\n
Option Mandatory Type Description orchestrator true string orchestrator","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-enable","title":"vintner orchestrators enable","text":"enables an orchestrator plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators enable --orchestrator ${ORCHESTRATOR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"orchestrator\": \"${ORCHESTRATOR}\"}' \\\n${SERVER_ADDRESS}/orchestrators/enable\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/enable\", {\norchestrator: ORCHESTRATOR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/enable\", json={\n\"orchestrator\": ORCHESTRATOR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/enable\", json=mapOf(\n\"orchestrator\" to ORCHESTRATOR\n))\n
Option Mandatory Type Description orchestrator true string orchestrator","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-unfurl","title":"vintner orchestrators init unfurl","text":"initializes unfurl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init unfurl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/unfurl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of unfurl (default: \"~/unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-unfurl-wsl","title":"vintner orchestrators init unfurl-wsl","text":"initializes unfurl-wsl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init unfurl-wsl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/unfurl-wsl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of unfurl (default: \"~/unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-xopera","title":"vintner orchestrators init xopera","text":"initializes xopera plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init xopera
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/xopera\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of xopera (default: \"~/opera\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-xopera-wsl","title":"vintner orchestrators init xopera-wsl","text":"initializes xopera-wsl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init xopera-wsl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/xopera-wsl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean enable the use of a virtual environment dir false string directory of opera (default: \"~/opera\")","tags":["Vintner"]},{"location":"interface/#vintner-query","title":"vintner query","text":"runs a query and returns the result
CLIcURLJavaScriptPythonKotlinvintner query --query ${QUERY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"query\": \"${QUERY}\"}' \\\n${SERVER_ADDRESS}/query\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/query\", {\nquery: QUERY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/query\", json={\n\"query\": QUERY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/query\", json=mapOf(\n\"query\" to QUERY\n))\n
Option Mandatory Type Description query true string path to query or query string source false string specifies where to search for template to query (default: \"vintner\") output false string path of the output format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-sensors-compute","title":"vintner sensors compute","text":"starts a sensor for compute utilization, such as cpu and memory
CLIvintner sensors compute --instance ${INSTANCE} --template ${TEMPLATE}\n
Option Mandatory Type Description instance true string monitored instance template true string node template name vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every 10 seconds\") submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-file","title":"vintner sensors file","text":"starts a sensor for data stored in a file
CLIvintner sensors file --instance ${INSTANCE} --file ${FILE}\n
Option Mandatory Type Description instance true string monitored instance file true string path to file vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every 10 seconds\") watch false boolean watch file and send changes (default: true) no-watch false boolean submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-location","title":"vintner sensors location","text":"starts a sensor for the current location
CLIvintner sensors location --instance ${INSTANCE} --template ${TEMPLATE}\n
Option Mandatory Type Description instance true string monitored instance template true string node template name vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every minute\") submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-weekday","title":"vintner sensors weekday","text":"starts a sensor for the weekday
CLIvintner sensors weekday --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string monitored instance vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every day\") start false string set day to start from submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-server-start","title":"vintner server start","text":"starts the server
CLIvintner server start
Option Mandatory Type Description host false string host on which to listen (default: \"127.0.0.1\") port false number port on which to listen (default: \"3000\")","tags":["Vintner"]},{"location":"interface/#vintner-setup-benchmark","title":"vintner setup benchmark","text":"benchmarks the variability resolver
CLIcURLJavaScriptPythonKotlinvintner setup benchmark
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/benchmark\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/benchmark\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/benchmark\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/benchmark\")\n
Option Mandatory Type Description io false boolean enable read and writes to the filesystem no-io false boolean disable read and writes to the filesystem seeds false numbers... seed for generating service templates (default: [10,250,500,1000,2500,5000,10000]) runs false number number of measurements for each test (default: 10) latex false boolean plot results as latex (default: false) markdown false boolean plot results as markdown (default: false)","tags":["Vintner"]},{"location":"interface/#vintner-setup-clean","title":"vintner setup clean","text":"cleans up the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/clean\")\n
Option Mandatory Type Description force false boolean force clean up no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-setup-code","title":"vintner setup code","text":"opens the home directory in visual studio code
CLIvintner setup code
","tags":["Vintner"]},{"location":"interface/#vintner-setup-init","title":"vintner setup init","text":"initialises the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup init
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/init\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/init\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/init\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-setup-open","title":"vintner setup open","text":"opens the home directory
CLIvintner setup open
","tags":["Vintner"]},{"location":"interface/#vintner-setup-path","title":"vintner setup path","text":"returns the path to the home directory
CLIcURLJavaScriptPythonKotlinvintner setup path
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/path\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/path\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/path\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-setup-reset","title":"vintner setup reset","text":"resets the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup reset
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/reset\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/reset\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/reset\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/reset\")\n
Option Mandatory Type Description force false boolean force clean up no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-study-technology","title":"vintner study technology","text":"conduct technology case study
CLIcURLJavaScriptPythonKotlinvintner study technology --application ${APPLICATION} --experimental ${EXPERIMENTAL}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"application\": \"${APPLICATION}\", \"experimental\": \"${EXPERIMENTAL}\"}' \\\n${SERVER_ADDRESS}/study/technology\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/study/technology\", {\napplication: APPLICATION,\nexperimental: EXPERIMENTAL\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/study/technology\", json={\n\"application\": APPLICATION,\n\"experimental\": EXPERIMENTAL\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/study/technology\", json=mapOf(\n\"application\" to APPLICATION,\n\"experimental\" to EXPERIMENTAL\n))\n
Option Mandatory Type Description application true string application name, e.g., boutique or shop experimental true enable experimental feature","tags":["Vintner"]},{"location":"interface/#vintner-template-enrich","title":"vintner template enrich","text":"enrich conditions
CLIcURLJavaScriptPythonKotlinvintner template enrich --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/enrich\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/enrich\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/enrich\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/enrich\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-implement","title":"vintner template implement","text":"implement node types
CLIcURLJavaScriptPythonKotlinvintner template implement --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/implement\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/implement\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/implement\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/implement\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory orchestrator false string the orchestrator for which node type should be implemented (default: \"unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-template-init","title":"vintner template init","text":"initializes a CSAR
CLIcURLJavaScriptPythonKotlinvintner template init --path ${PATH} --template ${TEMPLATE} --vintner ${VINTNER}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\", \"template\": \"${TEMPLATE}\", \"vintner\": \"${VINTNER}\"}' \\\n${SERVER_ADDRESS}/template/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/init\", {\npath: PATH,\ntemplate: TEMPLATE,\nvintner: VINTNER\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/init\", json={\n\"path\": PATH,\n\"template\": TEMPLATE,\n\"vintner\": VINTNER\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/init\", json=mapOf(\n\"path\" to PATH,\n\"template\" to TEMPLATE,\n\"vintner\" to VINTNER\n))\n
Option Mandatory Type Description path true string path of the directory template true string template name (default: directory name of --path) vintner true string vintner binary to execute (default: \"task cli --\") force false boolean force initialization, e.g., on non-empty directories no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-template-inputs","title":"vintner template inputs","text":"read and transforms inputs
CLIcURLJavaScriptPythonKotlinvintner template inputs --path ${PATH} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/inputs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/inputs\", {\npath: PATH,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/inputs\", json={\n\"path\": PATH,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/inputs\", json=mapOf(\n\"path\" to PATH,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description path true string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML]) output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-normalize","title":"vintner template normalize","text":"normalize service template
CLIcURLJavaScriptPythonKotlinvintner template normalize --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/normalize\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/normalize\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/normalize\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/normalize\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-package","title":"vintner template package","text":"packages a directory to a CSAR
CLIcURLJavaScriptPythonKotlinvintner template package --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/package\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/package\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/package\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/package\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-pull","title":"vintner template pull","text":"pull template dependencies
CLIcURLJavaScriptPythonKotlinvintner template pull --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/pull\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/pull\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/pull\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/pull\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory link false boolean create symbolic links instead of copying files (default: false) no-link false boolean","tags":["Vintner"]},{"location":"interface/#vintner-template-puml-topology","title":"vintner template puml topology","text":"plot topology as PlantUML
CLIcURLJavaScriptPythonKotlinvintner template puml topology --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/puml/topology\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/puml/topology\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/puml/topology\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/puml/topology\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path to service template output false string path of the output format false string output format (choices: [\"puml\",\"svg\"], default: \"puml\")","tags":["Vintner"]},{"location":"interface/#vintner-template-puml-types","title":"vintner template puml types","text":"plot types as PlantUML (each entity types is plotted separately)
CLIcURLJavaScriptPythonKotlinvintner template puml types --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/puml/types\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/puml/types\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/puml/types\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/puml/types\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path to service template output false string path of the output directory (default: the directory of the service template) types false string... entity types to consider, e.g., \"node_types\" (default: Every defined entity type) format false string output format (choices: [\"puml\",\"svg\"], default: \"puml\")","tags":["Vintner"]},{"location":"interface/#vintner-template-quality","title":"vintner template quality","text":"get quality of template
CLIcURLJavaScriptPythonKotlinvintner template quality --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/template/quality\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/quality\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/quality\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/quality\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string path to service template presets false string... names of variability presets(env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML], env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY})","tags":["Vintner"]},{"location":"interface/#vintner-template-query","title":"vintner template query","text":"resolves all queries in a given service template
CLIcURLJavaScriptPythonKotlinvintner template query --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/query\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/query\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/query\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/query\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-resolve","title":"vintner template resolve","text":"resolves variability
CLIcURLJavaScriptPythonKotlinvintner template resolve --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/resolve\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/resolve\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/resolve\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/resolve\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template presets false strings... names of variability presets (env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML, env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_) output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-sign","title":"vintner template sign","text":"signs a CSAR
CLIcURLJavaScriptPythonKotlinvintner template sign --template ${TEMPLATE} --output ${OUTPUT} --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\", \"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/template/sign\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/sign\", {\ntemplate: TEMPLATE,\noutput: OUTPUT,\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/sign\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT,\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/sign\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT,\n\"key\" to KEY\n))\n
Option Mandatory Type Description template true string path to service template output true string path of the output (default: template path + \".asc\" ) key true string path of the key","tags":["Vintner"]},{"location":"interface/#vintner-template-stats","title":"vintner template stats","text":"collects stats of a given service template (experimental)
CLIcURLJavaScriptPythonKotlinvintner template stats --template ${TEMPLATE} --experimental ${EXPERIMENTAL}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"experimental\": \"${EXPERIMENTAL}\"}' \\\n${SERVER_ADDRESS}/template/stats\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/stats\", {\ntemplate: TEMPLATE,\nexperimental: EXPERIMENTAL\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/stats\", json={\n\"template\": TEMPLATE,\n\"experimental\": EXPERIMENTAL\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/stats\", json=mapOf(\n\"template\" to TEMPLATE,\n\"experimental\" to EXPERIMENTAL\n))\n
Option Mandatory Type Description template true strings... path to service template experimental true enable experimental feature","tags":["Vintner"]},{"location":"interface/#vintner-template-test","title":"vintner template test","text":"runs tests defined in the CSAR
CLIcURLJavaScriptPythonKotlinvintner template test --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/test\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/test\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/test\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/test\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path or link to the extracted CSAR","tags":["Vintner"]},{"location":"interface/#vintner-template-unimplement","title":"vintner template unimplement","text":"unimplement node types
CLIcURLJavaScriptPythonKotlinvintner template unimplement --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/unimplement\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unimplement\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unimplement\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unimplement\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory","tags":["Vintner"]},{"location":"interface/#vintner-template-unpackage","title":"vintner template unpackage","text":"unpackages a CSAR
CLIcURLJavaScriptPythonKotlinvintner template unpackage --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/unpackage\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unpackage\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unpackage\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unpackage\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-unpull","title":"vintner template unpull","text":"unpull template dependencies
CLIcURLJavaScriptPythonKotlinvintner template unpull --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/unpull\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unpull\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unpull\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unpull\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory","tags":["Vintner"]},{"location":"interface/#vintner-template-verify","title":"vintner template verify","text":"verify a CSAR
CLIcURLJavaScriptPythonKotlinvintner template verify --template ${TEMPLATE} --signature ${SIGNATURE} --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"signature\": \"${SIGNATURE}\", \"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/template/verify\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/verify\", {\ntemplate: TEMPLATE,\nsignature: SIGNATURE,\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/verify\", json={\n\"template\": TEMPLATE,\n\"signature\": SIGNATURE,\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/verify\", json=mapOf(\n\"template\" to TEMPLATE,\n\"signature\" to SIGNATURE,\n\"key\" to KEY\n))\n
Option Mandatory Type Description template true string path to service template signature true string path of the signature (default: template path + \".asc\" ) key true string path of the key","tags":["Vintner"]},{"location":"interface/#vintner-templates-clean","title":"vintner templates clean","text":"removes all templates
CLIcURLJavaScriptPythonKotlinvintner templates clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/templates/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-templates-code","title":"vintner templates code","text":"opens the template directory in visual studio code
CLIvintner templates code --template ${TEMPLATE}\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-delete","title":"vintner templates delete","text":"deletes a template
CLIcURLJavaScriptPythonKotlinvintner templates delete --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/delete\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/delete\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/delete\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-import","title":"vintner templates import","text":"imports a new template
CLIcURLJavaScriptPythonKotlinvintner templates import --template ${TEMPLATE} --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/templates/import\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/import\", {\ntemplate: TEMPLATE,\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/import\", json={\n\"template\": TEMPLATE,\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/import\", json=mapOf(\n\"template\" to TEMPLATE,\n\"path\" to PATH\n))\n
Option Mandatory Type Description template true string template name path true string path or link to the CSAR git-repository false string git repository git-checkout false string git checkout signature false path to the signature (default: template + \".asc\") key false assets name to verify the signature","tags":["Vintner"]},{"location":"interface/#vintner-templates-inspect","title":"vintner templates inspect","text":"inspects the variable service template
CLIcURLJavaScriptPythonKotlinvintner templates inspect --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/inspect\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/inspect\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/inspect\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/inspect\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-list","title":"vintner templates list","text":"lists all templates
CLIcURLJavaScriptPythonKotlinvintner templates list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/templates/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-templates-open","title":"vintner templates open","text":"opens template directory in a file browser
CLIvintner templates open --template ${TEMPLATE}\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-path","title":"vintner templates path","text":"returns the path to the template directory
CLIcURLJavaScriptPythonKotlinvintner templates path --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/path\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/path\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/path\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-utils-key","title":"vintner utils key","text":"generates a key
CLIcURLJavaScriptPythonKotlinvintner utils key --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/utils/key\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/key\", {\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/key\", json={\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/key\", json=mapOf(\n\"key\" to KEY\n))\n
Option Mandatory Type Description key true string key name (must match /^[a-z-]+$/)","tags":["Vintner"]},{"location":"interface/#vintner-utils-nonce","title":"vintner utils nonce","text":"generates a nonce
CLIcURLJavaScriptPythonKotlinvintner utils nonce
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/nonce\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/nonce\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/nonce\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/nonce\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-utils-normative","title":"vintner utils normative","text":"returns normative types
CLIcURLJavaScriptPythonKotlinvintner utils normative
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/normative\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/normative\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/normative\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/normative\")\n
Option Mandatory Type Description orchestrator false string orchestrator dialect profile false boolean include profile entry (default: true) no-profile false boolean base false boolean include base types (default: true) no-base false boolean extended false boolean include extended types (default: true) no-extended false boolean format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-utils-rules","title":"vintner utils rules","text":"returns technology rules
CLIcURLJavaScriptPythonKotlinvintner utils rules
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/rules\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/rules\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/rules\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/rules\")\n
Option Mandatory Type Description format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-utils-scenarios","title":"vintner utils scenarios","text":"returns deployment scenarios
CLIcURLJavaScriptPythonKotlinvintner utils scenarios
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/scenarios\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/scenarios\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/scenarios\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/scenarios\")\n
Option Mandatory Type Description component false string component artifact false string artifact no-artifact false boolean technology false string technology hosting false string... hosting no-hosting false boolean quality false number format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"orchestrators/","title":"Orchestrators","text":"This document holds information considering supported orchestrators. We currently support xOpera and Unfurl. Since both can only be installed on Linux, we implemented a WSL integration for both. To find out more about these orchestrators, checkout our TOSCA Orchestrator Selection Support System (TOSSS). Install, configure and enable your orchestrator as follows. For more information see Interface.
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#xopera","title":"xOpera","text":"We install xOpera using the following command. This will install xOpera v0.6.9 in a virtual environment. For a manual installation see the documentation.
vintner install xopera\n
Next, we configure Vintner to use xOpera.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
Next, we attest that Vintner can correctly use xOpera.
vintner orchestrators attest --orchestrator xopera\n
If xOpera is running in WSL and Vintner on Windows, then configure Vintner as follows.
vintner orchestrators init xopera-wsl\nvintner orchestrators enable --orchestrator xopera-wsl\n
Next, we attest that Vintner can correctly use xOpera in WSL.
vintner orchestrators attest --orchestrator xopera-wsl\n
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#unfurl","title":"Unfurl","text":"We install Unfurl using the following command. This will install Unfurl v1.0.0 in a virtual environment. For a manual installation see the documentation.
vintner install unfurl\n
Next, we configure Vintner to use Unfurl.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
Next, we attest that Vintner can correctly use Unfurl.
vintner orchestrators attest --orchestrator unfurl\n
If Unfurl is running in WSL and Vintner on Windows, then configure Vintner as follows.
vintner orchestrators init unfurl-wsl\nvintner orchestrators enable --orchestrator unfurl-wsl\n
To attest that Vintner can correctly use Unfurl, run the following command.
vintner orchestrators attest --orchestrator unfurl-wsl\n
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#integrated-features","title":"Integrated Features","text":"The following table describes which feature of the orchestrators are integrated. The orchestrators provide more features, see TOSSS.
Feature xOpera Unfurl Validate an application topology Deploy an application Access deployment outputs Continue the deployment of an application Update the service template of an application Undeploy an application Access node instance attributes","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#deployment-technologies","title":"Deployment Technologies","text":"Under the scene, we are using the following deployment technologies.
Technology Version ansible (pip) 4.10.0 google-cloud-cli (apt) 432.0.0 kubernetes (pip) 24.2.0 openshift (pip) 0.13.2 openstacksdk (pip) 0.61 python-openstackclient (pip) 6.0.0 terraform (apt) 1.4.6","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#known-limitations","title":"Known Limitations","text":"This document holds a list of selected publications.
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#hosting-aware-pruning-of-components-in-deployment-models","title":"Hosting-Aware Pruning of Components in Deployment Models","text":"@inproceedings{Stoetzner2024_HostingAwarePruning,\nTitle = {{Hosting-Aware Pruning of Components in Deployment Models}},\nAuthor = {St{\\\"o}tzner, Miles and Speth, Sandro and Becker, Steffen},\nYear = 2024,\nMonth = may,\nBooktitle = {Proceedings of the 14\\textsuperscript{th} International Conference on Cloud Computing and Services Science (CLOSER 2024)},\nPublisher = {SciTePress},\nPages = {149--158},\nDoi = {10.5220/0012671900003711},\nurl = {https://www.scitepress.org/Link.aspx?doi=10.5220/0012671900003711},\nprojects = {SofDCar,OpenTOSCA}\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#pruning-modes-for-deployment-models-from-manual-modeling-to-automated-removal-of-elements-and-their-implications","title":"Pruning Modes for Deployment Models: From Manual Modeling to Automated Removal of Elements and Their Implications","text":"@inproceedings{Stoetzner2024_PruningModes,\nTitle = {{Pruning Modes for Deployment Models: From Manual Modeling to Automated Removal of Elements and Their Implications}},\nAuthor = {St{\\\"o}tzner, Miles and Speth, Sandro and Becker, Steffen},\nYear = 2024,\nMonth = may,\nBooktitle = {Proceedings of the 14\\textsuperscript{th} International Conference on Cloud Computing and Services Science (CLOSER 2024)},\nPublisher = {SciTePress},\nPages = {65--76},\nDoi = {10.5220/0012568300003711},\nurl = {https://www.scitepress.org/Link.aspx?doi=10.5220/0012568300003711},\nprojects = {SofDCar,OpenTOSCA}\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#a-systematic-technology-review-of-general-purpose-open-source-tosca-orchestrators","title":"A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators","text":"St\u00f6tzner, M., Becker, S., Harzenetter, L., Leymann, F., Weder, B., Breitenb\u00fccher, U., Kopp, O., Klein, K., & Soldani, J. (2023, December). A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators. Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023), 1\u201311. doi:10.1145/3603166.3632130
@inproceedings{Stoetzner2023_TOSSS,\nTitle = {{A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators}},\nAuthor = {St\\\"{o}tzner, Miles and Becker, Steffen and Harzenetter, Lukas and Leymann, Frank and Weder, Benjamin and Breitenb\\\"{u}cher, Uwe and Kopp, Oliver and Klein, Kevin and Soldani, Jacopo},\nYear = 2023,\nMonth = dec,\nBooktitle = {Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023)},\nPublisher = {ACM},\nAddress = {New York, NY, USA},\nPages = {1--11},\narticleno = {6},\nDoi = {10.1145/3603166.3632130},\nisbn = {9798400702341},\nurl = {https://doi.org/10.1145/3603166.3632130},\nprojects = {SofDCar,OpenTOSCA,EniQmA},\nnumpages = {11},\nkeywords = {TOSCA, orchestrator, systematic technology review, classification framework, general-purpose, open-source},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#enhancing-deployment-variability-management-by-pruning-elements-in-deployment-models","title":"Enhancing Deployment Variability Management by Pruning Elements in Deployment Models","text":"St\u00f6tzner, M., Klinaku, F., Pesl, R. D., & Becker, S. (2023, December). Enhancing Deployment Variability Management by Pruning Elements in Deployment Models. Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023), 1\u201311. doi:10.1145/3603166.3632143
@inproceedings{Stoetzner2023_Pruning,\nTitle = {{Enhancing Deployment Variability Management by Pruning Elements in Deployment Models}},\nAuthor = {St\\\"{o}tzner, Miles and Klinaku, Floriment and Pesl, Robin Dominic and Becker, Steffen},\nYear = 2023,\nMonth = dec,\nBooktitle = {Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023)},\nPublisher = {ACM},\nAddress = {New York, NY, USA},\nPages = {1--11},\narticleno = {18},\nDoi = {10.1145/3603166.3632143},\nisbn = {9798400702341},\nurl = {https://doi.org/10.1145/3603166.3632143},\nprojects = {SofDCar,OpenTOSCA},\nnumpages = {11},\nkeywords = {pruning, deployment models, variability management, TOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#using-variability4tosca-and-opentosca-vintner-for-holistically-managing-deployment-variability","title":"Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability","text":"St\u00f6tzner, M., Breitenb\u00fccher, U., Pesl, R. D., & Becker, S. (2024). Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability. Proceedings of the Demonstration Track at International Conference on Cooperative Information Systems 2023, CoopIS 2023, Groningen, The Netherlands, October 30 - November 3, 2023, CEUR-WS.org, online https://ceur-ws.org/Vol-3552/paper-8.pdf
@inproceedings{Stoetzner2023_VDMMv2Demo,\nTitle = {{Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability}},\nAuthor = {St{\\\"o}tzner, Miles and Breitenb{\\\"u}cher, Uwe and Pesl, Robin D. and Becker, Steffen},\nYear = 2023,\nMonth = oct,\nBooktitle = {Proceedings of the Demonstration Track at International Conference on Cooperative Information Systems 2023},\nPublisher = {{CEUR-WS.org}},\nPages = {36--40},\nSeries = {CEUR Workshop Proceedings},\nVolume = {3552},\nurl = {https://ceur-ws.org/Vol-3552/paper-8.pdf},\ntype = {Demonstration},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#managing-the-variability-of-component-implementations-and-their-deployment-configurations-across-heterogeneous-deployment-technologies","title":"Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies","text":"St\u00f6tzner, M., Breitenb\u00fccher, U., Pesl, R. D., & Becker, S. (2024). Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies. Cooperative Information Systems, 61\u201378. doi:10.1007/978-3-031-46846-9_4
@inproceedings{Stoetzner2023_VDMMv2,\nTitle = {{Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies}},\nAuthor = {St{\\\"o}tzner, Miles and Breitenb{\\\"u}cher, Uwe and Pesl, Robin D. and Becker, Steffen},\nYear = 2023,\nMonth = oct,\nBooktitle = {Cooperative Information Systems},\nPublisher = {Springer Nature Switzerland},\nAddress = {Cham},\nPages = {61--78},\nDoi = {10.1007/978-3-031-46846-9_4},\nisbn = {978-3-031-46846-9},\nurl = {https://link.springer.com/chapter/10.1007/978-3-031-46846-9_4},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#developing-the-software-of-future-cars-a-car-devops-approach","title":"Developing the Software of Future Cars: A Car DevOps Approach","text":"Weller, M., St\u00f6tzner, M., Klinaku, F., & Becker, S. (2023). Developing the Software of Future Cars: A Car DevOps Approach. Softwaretechnik-Trends, 43(2).
@article{Weller2023_SofDCar,\nTitle = {{Developing the Software of Future Cars: A Car DevOps Approach}},\nAuthor = {Weller, Marcel and St{\\\"o}tzner, Miles and Klinaku, Floriment and Becker, Steffen},\nYear = 2023,\nMonth = may,\nJournal = {Softwaretechnik-Trends},\nPublisher = {Gesellschaft f{\\\"u}r Informatik},\nPages = {3--10},\nVolume = {43},\nNumber = {2},\nissn = {0720-8928},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#modeling-different-deployment-variants-of-a-composite-application-in-a-single-declarative-deployment-model","title":"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model","text":"St\u00f6tzner, M., Becker, S., Breitenb\u00fccher, U., K\u00e1lm\u00e1n, K., & Leymann, F. (2022). Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model. Algorithms, 15(10), 382. doi:10.3390/a15100382
@article{Stoetzner2022_VDMM,\nTitle = {{Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model}},\nAuthor = {St{\\\"o}tzner, Miles and Becker, Steffen and Breitenb{\\\"u}cher, Uwe and K{\\'a}lm{\\'a}n, K{\\'e}pes and Leymann, Frank},\nYear = 2022,\nMonth = oct,\nJournal = {Algorithms},\nPublisher = {MDPI},\nPages = {1--25},\narticleno = {382},\nVolume = {15},\nNumber = {10},\nDoi = {10.3390/a15100382},\nurl = {https://www.mdpi.com/1999-4893/15/10/382},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"resources/","title":"Resources","text":"This document holds a collection of interesting resources, such as the TOSCA specifications, introductions, popular orchestrators and TOSCA repositories.
","tags":["Misc"]},{"location":"resources/#specifications","title":"Specifications","text":"Warning
Undeploy all applications first.
This document holds instructions on uninstalling Vintner.
Depending on the installation method, uninstall Vintner as follows.
Script/ ManualNPMYarn (Classic)Dockervintner setup clean --force\nrm \"$(which vintner)\"\n
vintner setup clean --force\nnpm uninstall --global opentosca-vintner\n
vintner setup clean --force\nyarn global remove opentosca-vintner\n
docker stop vintner\ndocker remove vintner\n
Next, remove the directories used to persists container data on the docker host.
","tags":["Vintner","Docker"]},{"location":"usage/","title":"Usage","text":"This document holds instructions on using Vintner.
","tags":["Vintner"]},{"location":"usage/#use-the-cli","title":"Use the CLI","text":"First, we ensure that Vintner can be executed.
vintner --version\n
From there on use the help command. See Interface for a complete interface specification.
vintner --help\n
","tags":["Vintner"]},{"location":"usage/#enable-an-orchestrator","title":"Enable an Orchestrator","text":"Vintner requires an orchestrator for the deployment. See Orchestrators for a complete interface specification.
First, we initialize the config.
vintner orchestrators init ${ORCHESTRATOR_NAME}\n
Next, we enable the orchestrator.
vintner orchestrators enable ${ORCHESTRATOR_NAME}\n
","tags":["Vintner"]},{"location":"usage/#deploy-an-application","title":"Deploy an Application","text":"First, we import the Variability4TOSCA template.
vintner templates import --template ${TEMPLATE_NAME} --path ${TEMPLATE_PATH}\n
Next, we initialize an application instance.
vintner instances init --instance ${INSTANCE_NAME} --template ${TEMPLATE_NAME}\n
Next, we specify variability inputs.
Next, we resolve the variability.
vintner instances resolve --instance ${INSTANCE_NAME} --inputs ${VARIABILITY_INPUTS}\n
Next, we specify deployment inputs.
Next, we deploy the application.
vintner instances deploy --instance ${INSTANCE_NAME} --inputs ${DEPLOYMENT_INPUTS_PATH}\n
","tags":["Vintner"]},{"location":"usage/#undeploy-an-application","title":"Undeploy an Application","text":"Eventually, we undeploy the application.
vintner instances undeploy --instance ${INSTANCE_NAME}\n
","tags":["Vintner"]},{"location":"usage/#configuration","title":"Configuration","text":"The following environment variables can be used for configuration.
Environment Variable Default Description OPENTOSCA_VINTNER_HOME_DIR ${HOME_DIR}/.opentosca_vintner Configures the home directory of Vintner.","tags":["Vintner"]},{"location":"usage/#start-the-server","title":"Start the Server","text":"Vintner can be used as server. To start the server, run the following command.
vintner server start\n
","tags":["Vintner"]},{"location":"versions/","title":"Versions","text":"This document holds information about the versioning concept of Vintner.
Vintner uses full commit hashes as version numbers. The current version can be accessed using vintner --version
.
Vintner is a research prototype. There exists only a single GitHub release. Older releases are removed when a new GitHub release is published. Vintner versions used in publications are archived using Zenodo.
For each GitHub release, there exists a Docker Image. These images are not removed.
The versions used in package managers, such as npm, use semantic versioning.
Package Version Vintner Version 0.1.7 a3d1b58a49a02a274bc5c5124e44eca4a1b2b7a3 0.1.5 0ca9400c337530d629125c2080db3710824f77ad 0.1.4 5e5e3bca56ad702ec0d3c3561a1eac3363576a3c 0.1.3 b75c2fdb75334a7f6ff531ad8b4e47bd188b964a","tags":["Vintner"]},{"location":"about-us/","title":"About Us","text":"This project is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Misc"]},{"location":"about-us/#license","title":"License","text":"This project is licensed under Apache-2.0.
","tags":["Misc"]},{"location":"about-us/#haftungsausschluss","title":"Haftungsausschluss","text":"Dies ist ein Forschungsprototyp. Die Haftung f\u00fcr entgangenen Gewinn, Produktionsausfall, Betriebsunterbrechung, entgangene Nutzungen, Verlust von Daten und Informationen, Finanzierungsaufwendungen sowie sonstige Verm\u00f6gens- und Folgesch\u00e4den ist, au\u00dfer in F\u00e4llen von grober Fahrl\u00e4ssigkeit, Vorsatz und Personensch\u00e4den ausgeschlossen.
","tags":["Misc"]},{"location":"about-us/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Misc"]},{"location":"contributing/code-of-conduct/","title":"Contributor Covenant Code of Conduct","text":"","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#our-pledge","title":"Our Pledge","text":"We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#our-standards","title":"Our Standards","text":"Examples of behavior that contributes to a positive environment for our community include:
Examples of unacceptable behavior include:
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#scope","title":"Scope","text":"This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement","title":"Enforcement","text":"Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at miles.stoetzner@iste.uni-stuttgart.de. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement-guidelines","title":"Enforcement Guidelines","text":"Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#1-correction","title":"1. Correction","text":"Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#2-warning","title":"2. Warning","text":"Community Impact: A violation through a single incident or series of actions.
Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#3-temporary-ban","title":"3. Temporary Ban","text":"Community Impact: A serious violation of community standards, including sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#4-permanent-ban","title":"4. Permanent Ban","text":"Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the community.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#attribution","title":"Attribution","text":"This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
","tags":["Contributing"]},{"location":"contributing/development/","title":"Development","text":"This document holds instructions on developing Vintner.
","tags":["Contributing"]},{"location":"contributing/development/#github-flow","title":"GitHub Flow","text":"Our branching workflow follows GitHub Flow.
","tags":["Contributing"]},{"location":"contributing/development/#branch-naming-convention","title":"Branch Naming Convention","text":"Branches should be names as follows.
feature-short-title
for features.fix-short-title
for bug fixes.refactor-short-title
for refactoring.chore-short-title
for chores.docs-short-title
for documentations.project-short-title
for project, such as thesis, EnPro, StuPro ...Squash your commits into a single commit with a short but meaningful message. The commit message should have a link to the merge request. The branch is automatically deleted once merged.
","tags":["Contributing"]},{"location":"contributing/development/#tags","title":"Tags","text":"A tag must be created for each publication, thesis, etc. For example, the following commands create and push the tag for the publication \"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model\" published by St\u00f6tzner et al. in 2022.
git tag -s publication-stoetzner-2022-vdmm -m \"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model\"\ngit push origin publication-stoetzner-2022-vdmm\n
","tags":["Contributing"]},{"location":"contributing/development/#command-line-interface","title":"Command Line Interface","text":"Info
./task cli
uses src/cli/index.ts
while ./task vintner
uses build/cli/index.js
. Therefore, run ./task cli
to execute the current code without building it first.
We use commander.js to implement the CLI. The entry point is src/cli/index.ts
. Execute a CLI command during development as follows.
./task cli -- [command] [options]\n
","tags":["Contributing"]},{"location":"contributing/development/#server","title":"Server","text":"We use express to implement the server. The entry point is src/server/index.ts
. Run a development server on http://localhost:3000 with live-reload as follows.
./task server:serve\n
","tags":["Contributing"]},{"location":"contributing/development/#tests","title":"Tests","text":"We use mocha, chai, and nyc for testing. Respective tests are inside the tests
directory. Run the tests as follows.
./task test\n
On pushes to the main
branch or on pull requests, the tests
workflow is triggered. This workflow runs the tests.
We use ESLint for code linting. Lint typescript as follows.
./task lint:check\n
Fix lint problems as follows.
./task lint:fix\n
","tags":["Contributing"]},{"location":"contributing/development/#code-style","title":"Code Style","text":"We use Prettier for code formatting. Check the code style as follows.
./task style:check\n
Fix code style problems as follows.
./task style:fix\n
","tags":["Contributing"]},{"location":"contributing/development/#benchmark","title":"Benchmark","text":"Run the following command, to run to benchmark the variability resolving.
./task benchmark\n
","tags":["Contributing"]},{"location":"contributing/development/#dependencies","title":"Dependencies","text":"We use license-checker to handle licenses of (transitive) dependencies. Check that (transitive) dependencies are licensed as expected as follows. This check is also executed inside workflows.
./task licenses:check\n
","tags":["Contributing"]},{"location":"contributing/development/#patch-packages","title":"Patch Packages","text":"We use patch-package
to fix dependencies. For example, adding logic-solver.d.ts
to logic-solver
. Therefore, proceed as follows.
First, make changes to the package inside node_modules
. Then, create the patch.
yarn patch-package --exclude 'nothing' ${package-name}\n
","tags":["Contributing"]},{"location":"contributing/development/#night","title":"Night","text":"The Night workflow is scheduled for every tuesday at 420. This workflow ensures that the latest release is correctly signed and can be executed. Moreover, integration tests are executed, which use xOpera, Unfurl, and GCP.
","tags":["Contributing"]},{"location":"contributing/documentation/","title":"Documentation","text":"This document holds instructions on writing the documentation.
","tags":["Contributing"]},{"location":"contributing/documentation/#guidelines","title":"Guidelines","text":"We follow the following guidelines when writing documentation.
docs/templates/guide
docs/templates/specification
Warning
This only works on Linux.
We use Material for MkDocs as documentation system. The files are located in the docs
directory. Custom macros are implemented in docs/macros.py
using mkdocs-macros.
First, install all dependencies. This will install several apt packages on the system and mkdocs in a virtual environment.
./task docs:install\n
Next, reload your session.
Next, start a local development server on http://localhost:8000.
./task docs:serve\n
Next, open the docs in your browser.
./task docs:open\n
","tags":["Contributing"]},{"location":"contributing/documentation/#autogenerated-markdown","title":"Autogenerated Markdown","text":"Some Markdown files are autogenerated, e.g., Dependencies or Interface. Changes must be made in the respective template files. Files are generated during the Release workflow and overwrite committed files. To warn the developer, include the following custom marco at the top of the template.
{{ autogenerated_notice('./task docs:generate:dependencies') }}\n
This will render the following warning, if the docs are served using ./task docs:serve
but not when built.
Warning
Do not edit! This file is autogenerated using ./task docs:generate:dependencies
and will be overwritten during the Release workflow! (This warning is not shown once deployed)
Warning
This only works on Linux.
The docs contain recorded demos. We use the following tools.
Casts are not recorded during any workflow. The following command can be used to record the home
cast for the landing page.
./task docs:record:home\n
A cast can be embedded using the custom macro asciinema_player
inside a Markdown file.
{{ asciinema_player('getting-started') }}\n
This will embed the cast docs/docs/assets/casts/getting-started.cast
inside the page as follows.
Warning
This only works on Linux.
To export registered pages as PDF, run the following command. The PDFs are stored in dist-docs
.
./task docs:export\n
By default, https://vintner.opentosca.org is used. To export pages of http://localhost:8000, run the following command.
./task docs:export:local\n
","tags":["Contributing"]},{"location":"contributing/documentation/#interface","title":"Interface","text":"To generate the documentation for the CLI and REST API, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:interface\n
","tags":["Contributing"]},{"location":"contributing/documentation/#dependencies","title":"Dependencies","text":"To generate a list of licenses for all (transitive) dependencies, run the following command This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:dependencies\n
The list includes information, such as package name, version, license, etc., and is written to a CSV file. At the same time, the Dependencies page is generated.
","tags":["Contributing"]},{"location":"contributing/documentation/#puccini","title":"Puccini","text":"Warning
This only works on Linux.
We use puccini to validate a service template. Therefore, run the following command.
./task puccini:check:single path/to/service-template.yaml\n
To validate all registered service templates, run the following command.
./task puccini:check\n
","tags":["Contributing"]},{"location":"contributing/documentation/#plantuml","title":"PlantUML","text":"We use PlantUML for visualizing UML diagrams. Read PlantUML Guide for modeling instructions. We use mkdocs_build_plantuml to plot PlantUML to SVGs when building the documentation. Note, we use the public PlantUML server https://www.plantuml.com/plantuml for plotting SVGs.
","tags":["Contributing"]},{"location":"contributing/documentation/#queries4tosca","title":"Queries4TOSCA","text":"To generate the conformance tests for Queries4TOSCA, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#tosca-sofdcar-profile","title":"TOSCA SofDCar Profile","text":"To generate the TOSCA SofDCar Profile, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#variability4tosca","title":"Variability4TOSCA","text":"To generate the conformance tests for Variability4TOSCA, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#limitations","title":"Limitations","text":"This document holds a collection of arbitrary notes.
","tags":["Contributing"]},{"location":"contributing/notes/#filesystem","title":"Filesystem","text":"","tags":["Contributing"]},{"location":"contributing/notes/#home-directory","title":"Home Directory","text":"${vintner_home}/\n\u251c\u2500 templates/\n\u251c\u2500 instances/\n\u251c\u2500 assets/\n\u251c\u2500 plugins.yaml\n
","tags":["Contributing"]},{"location":"contributing/notes/#instance-directory","title":"Instance Directory","text":"${vintner_home}/\n\u251c\u2500 instances/\n\u2502 \u251c\u2500 ${instance-name}/\n\u2502 \u2502 \u251c\u2500 data/\n\u2502 \u2502 \u251c\u2500 service-inputs/\n\u2502 \u2502 \u2502 \u251c\u2500 ${timestamp}.yaml\n\u2502 \u2502 \u251c\u2500 templates/\n\u2502 \u2502 \u2502 \u251c\u2500 ${timestamp}/\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 service-template.${timestamp}.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 variability-inputs.${timestamp}.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 variable-service-template.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 ...\n\u2502 \u2502 \u251c\u2500 info.yaml\n\u2502 \u2502 \u251c\u2500 ...\n\u2502 \u251c\u2500 ...\n\u251c\u2500 ...\n
","tags":["Contributing"]},{"location":"contributing/notes/#instance-info","title":"Instance Info","text":"Keyname Mandatory Type Description name true String Instance name state true String Instance state creation_timestamp true Number ISO milliseconds of creation date resolved_timestamp false Number ISO milliseconds of latest variablity inputs and variability-resolved service template template_timestamp true Number ISO milliseconds of latest variable service template service_inputs_timestamp false Number ISO milliseconds of latest service inputs","tags":["Contributing"]},{"location":"contributing/notes/#instance-state-machine","title":"Instance State Machine","text":"","tags":["Contributing"]},{"location":"contributing/notes/#template-config","title":"Template Config","text":"A template might have a config.yaml
at root of the following type.
export type Config = {\ndependencies: Dependencies\n}\nexport type Dependencies = TemplateDependency[]\nexport type TemplateDependency = {\nsource: string\ntarget?: string\n}\n
","tags":["Contributing"]},{"location":"contributing/notes/#workflows","title":"Workflows","text":"","tags":["Contributing"]},{"location":"contributing/notes/#initialize-a-new-instance","title":"Initialize a new Instance","text":"vintner instances init
vintner instances resolve
vintner instances deploy
vintner instances continue
vintner instances swap
vintner instances update
Note, requires to resolve variability first. In contrast to deploying an instance, deployment inputs can be changed and the update command instead of the deploy command is sent to the orchestrator.
","tags":["Contributing"]},{"location":"contributing/notes/#adapt-an-instance","title":"Adapt an Instance","text":"vintner instances adapt
In contrast to updating an instance template, adapting an instance regenerates the variability-resolve topology template and does not swap the variable topology template. In contrast to updating an instance, variability inputs change and variability is resolved.
","tags":["Contributing"]},{"location":"contributing/notes/#undeploy-an-instance","title":"Undeploy an Instance","text":"vintner instances undeploy
vintner instances delete
Note, this does not undeploy the instance.
","tags":["Contributing"]},{"location":"contributing/notes/#conventions","title":"Conventions","text":"get${data}
returns path to the data, e.g., Instance#getServiceInputs
.load${data}
returns data loaded from the filesystem, e.g. Instance#loadServiceInputs
.set${data}
writes data to filesystem, e.g. Instance#setService
.sudo apt-get update -y && sudo apt-get install sudo unzip tree nano wget jq net-tools curl git stress nmap -y\n
","tags":["Contributing"]},{"location":"contributing/notes/#put-some-stress-on-cpu-and-memory","title":"Put Some Stress on CPU and Memory","text":"stress --cpu 18 --vm 36 --vm-bytes 1024M\n
","tags":["Contributing"]},{"location":"contributing/notes/#reverse-ssh-tunnel","title":"Reverse SSH Tunnel","text":"ssh -N -R 2999:192.168.178.46:3001 pi\n
","tags":["Contributing"]},{"location":"contributing/notes/#executable-file-under-windows","title":"Executable File under Windows","text":"git update-index --chmod=+x <path to file>\n
","tags":["Contributing"]},{"location":"contributing/notes/#bwcloud-blocked-ports","title":"bwCloud Blocked Ports","text":"Some ports are blocked when using bwCloud: https://www.bw-cloud.org/de/bwcloud_scope/netzwerk
","tags":["Contributing"]},{"location":"contributing/notes/#naming-convention","title":"Naming Convention","text":"Types should be named according to the following pattern.
type = [domain]+.entity[.Name]+\nentity = \"nodes\" | \"relationships\" | \"capabilities\" | \"artifacts\" | \"datatypes\" | \"groups\n | \"policies\" | \"interfaces\"\nword = (\"a\" ... \"z\" | \"A\" ... \"Z\")[word]\n* = word\n
","tags":["Contributing"]},{"location":"contributing/notes/#environment","title":"Environment","text":"All environment variables are prefixed by OPENTOSCA_VINTNER_
. When the following environment variables are read, they are tried to be parsed as JSON. If they cannot be parsed, they are treated as string.
OPENTOSCA_VINTNER_VARIABILITY_PRESETS
OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY}
OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}
These environment variables should be used with caution.
","tags":["Contributing"]},{"location":"contributing/notes/#lines-of-code","title":"Lines of Code","text":"Run the following command, to count the lines of code in the src
folder.
cloc src\n
The following output has been generated for the commit 3c6d29df6b7fb52b39d46ffe179e6800b60c4398
on September 5th, 2024.
376 text files.\n 339 unique files. \n 39 files ignored.\n\ngithub.com/AlDanial/cloc v 1.98 T=0.12 s (2936.0 files/s, 260917.4 lines/s)\n-------------------------------------------------------------------------------\nLanguage files blank comment code\n-------------------------------------------------------------------------------\nTypeScript 301 3529 2116 23146\nYAML 9 79 0 757\nBourne Shell 21 77 80 250\nEJS 6 11 0 66\nPython 1 4 0 10\nCSV 1 0 0 1\n-------------------------------------------------------------------------------\nSUM: 339 3700 2196 24230\n-------------------------------------------------------------------------------\n
","tags":["Contributing"]},{"location":"contributing/notes/#adding-a-new-publication","title":"Adding a New Publication","text":"The following links are used in publications.
technology_constraint: false
required_artifact_constraint: false
required_incoming_relation_constraint: false
We briefly discuss limitations of our prototypical implementation.
relationship
at requirement assignments is a string./^(.*_)?host(_.*)?$/
since we do not implement the TOSCA type system./^(.*_)?connection(_.*)?$/
since we do not implement the TOSCA type system.eval
Jinja filter, Unfurl eval
intrinsic function, and TOSCA get_property
intrinsic function, and assume that if the property is not found that it is either produced by an undefined property with a default value or by an attribute.This document holds information about building and publishing a new release.
","tags":["Contributing"]},{"location":"contributing/release/#build","title":"Build","text":"To locally build the project, run the following command. This will transpile Javascript inside the /build
directory. During the build, the string __VERSION__
inside a Javascript file is replace with the current commit hash. The current version can be checked using vintner --version
.
./task build\n
","tags":["Contributing"]},{"location":"contributing/release/#package","title":"Package","text":"Warning
This only works on Linux.
To locally package the project, run the following command. This will package the previously transpiled Javascript using pkg
and generate binaries inside the /dist
directory.
./task package\n
The issue considering the failed bytecode generation of MiniSat is known and can be ignored in our case.
","tags":["Contributing"]},{"location":"contributing/release/#github","title":"GitHub","text":"Vintner is available as GitHub release. On pushes to the main
branch, the Release workflow is triggered. This workflow runs several tests, builds binaries, signs binaries, creates a new GitHub release, and deploys the documentation. An already existing GitHub release and latest
tag is deleted. There is only one release at total.
However, there is also the Build workflow. This workflow basically has the same steps as the Release workflow but does create his own GitHub release and does not deploy the docs.
","tags":["Contributing"]},{"location":"contributing/release/#npm","title":"NPM","text":"Vintner is available as npm package opentosca-vintner
. New versions are published manually. To publish a new version, first update the version number in package.json
and then run
./task release:npm\n
","tags":["Contributing"]},{"location":"contributing/release/#docker","title":"Docker","text":"Vintner is available as Docker image on https://github.com/OpenTOSCA/opentosca-vintner/pkgs/container/opentosca-vintner. They are automatically build and pushed during the Release workflow.
Locally build the image as follows.
docker build -t opentosca/opentosca-vintner:local -f docker/Dockerfile .\n
","tags":["Contributing"]},{"location":"contributing/release/#choco","title":"Choco","text":"There is also a choco package opentosca-vintner
. New versions are published manually. See https://docs.chocolatey.org/en-us/create/create-packages-quick-start for more information.
First, log into the choco account.
choco apikey --api-key [API_KEY_HERE] --source https://push.chocolatey.org\n
Publish a new version as follows. This will use the latest release.
./task release:choco\n
","tags":["Contributing"]},{"location":"contributing/release/#zenodo","title":"Zenodo","text":"Vintner is available on Zenodo with unique DOI https://doi.org/10.5281/zenodo.10155277. New versions are published manually.
To publish a new version, run the Zenodo workflow on GitHub. This workflow will create a draft of a new version based on the latest GitHub release. The version must be manually published on Zenodo.
","tags":["Contributing"]},{"location":"contributing/setup/","title":"Setup","text":"This document holds instructions on the development setup.
","tags":["Contributing"]},{"location":"contributing/setup/#nodejs","title":"Node.js","text":"We use Node.js version 18.15.0
. To install node, use nvm or nvm-windows.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nsource ~/.bashrc\n\nnvm install 18.15.0\nnvm use 18.15.0\n
","tags":["Contributing"]},{"location":"contributing/setup/#yarn","title":"Yarn","text":"We use Yarn 2 (Modern). Install it as follows.
corepack enable\n
","tags":["Contributing"]},{"location":"contributing/setup/#tasks","title":"Tasks","text":"We use ./task
as build tool.
Execute a task as follows. On Windows, execute it using, e.g., Git Bash.
./task [task]\n
Get an overview of tasks as follows.
./task tasks:list\n
Get help for a specific task as follows.
./task tasks:help [task]\n
","tags":["Contributing"]},{"location":"contributing/setup/#writing-tasks","title":"Writing Tasks","text":"Tasks can be written in Bash, Typescript, and Python and are located in ./tasks/some/command/task{.sh,.ts,.py}
. The following environment variables are available.
./task
. TASK_ROOT_DIR The absolute path of the root directory of the project. TASK_TASK_DIR The absolute path of the directory in which the task is located. Some hints:
#!/usr/bin/bash
or set -e
in Bash tasks.TASK_ROOT_DIR
.${TASK_TASK_DIR}/summary
.${TASK_TASK_DIR}/help
.The repository is a monorepo consisting of the CLI, server, docs, tests, etc. Clone it as follows.
git clone https://github.com/opentosca/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
","tags":["Contributing"]},{"location":"contributing/setup/#large-files","title":"Large Files","text":"Larges files, such as binaries or archives used in examples, are added using git lfs. This includes the file extensions .bin
, .gz
, .tar
, .zip
, .xz
, and .jar
.
Commits are required to be signed. Therefore, register a signing key as follows.
Enable auto-signing inside the repository.
git config commit.gpgsign true\n
","tags":["Contributing"]},{"location":"contributing/setup/#jetbrains","title":"JetBrains","text":"Warning
WebStorm Version 2022.3.3 seems to have problems with breakpoints when src/resolver/graph.ts
is involved. However, WebStorm Version 2022.3.2 works fine.
We use WebStorm, which is free for students. Install Webstorm using JetBrains Toolbox.
","tags":["Contributing"]},{"location":"contributing/setup/#eslint","title":"ESLint","text":"Open the Project Settings using Ctrl + Alt + S
. ESLint should be configured as given in the figure below with the following pattern.
{**/*,*}.{ts}\n
Figure 1: IntelliJ ESLint Settings","tags":["Contributing"]},{"location":"contributing/setup/#prettier","title":"Prettier","text":"
Open the Project Settings using Ctrl + Alt + S
. Prettier should be configured as given in the figure below with the following pattern.
{**/*,*}.{ts,json,yaml,yml}\n
Figure 2: IntelliJ Prettier Settings","tags":["Contributing"]},{"location":"contributing/setup/#excluded-directories","title":"Excluded Directories","text":"
The following directories should be excluded from search by the IDE.
.nyc_output
docs/.venv
build
build-tasks
coverage
yarn
dist
dist-docs
node_modules
Warning
This specification is experimental.
This document specifies how to achieve EDMM compliance when modeling and gives additional insights. This document does not specify how to achieve EDMM compatibility on a technical level. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["EDMM","Specification"]},{"location":"edmm/#general","title":"General","text":"A built-in type must not be compliant with EDMM restrictions since such a type is internally used for our implementation of the EDMM-DTSM mapping.
create
, configure
, create
, stop
, and delete
operation of the Management
interface using management
as interface name.management
operation is an inline bash
script, which is executed in the root of the application directory.node.service.application
.shop.component
derived from node.application
.t
might have node type implementations which are node types that (i) are derived from t
and (ii) implement the tosca.interfaces.node.lifecycle.Standard
interface.Management
interface.The prototype currently does not support custom template attributes, i.e., writing back outputs from management operations.
","tags":["EDMM","Specification"]},{"location":"edmm/#application-directory","title":"Application Directory","text":"software.application
node template hosted on a remote.machine
node template has its own dedicated application directory..vintner
directory is a reserved directory in the application directory..
replaced with _
.This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["EDMM","Specification"]},{"location":"edmm/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["EDMM","Specification"]},{"location":"edmm/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["EDMM","Specification"]},{"location":"normative/","title":"TOSCA Vintner Profile","text":"","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-profile-10-release-candidate","title":"TOSCA Vintner Profile 1.0 Release Candidate","text":"This document specifies the TOSCA Vintner profile. This profile includes normative TOSCA types for the domain of cloud computing. Standardizing such normative TOSCA types improves interoperability. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-core-profile","title":"TOSCA Vintner Core Profile","text":"The core normative TOSCA type definitions contain high-level type definitions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#metadata","title":"Metadata","text":"We define the following metadata.
Metadata Descriptionvintner_ignore
Flag for ignoring an entity (type) during generation, e.g., to omit a property from the environment. vintner_name
Overrides the original name, e.g., override a property name with its correct environment name. vintner_generated
Flag for marking an entity (type) that has been generated. vintner_orchestrator
Orchestrator name for which the entity (type) has been generated. vintner_abstract
Flag for marking an entity type as abstract. vintner_normative
Flag for marking an entity type as normative (considering this specification). vintner_link
URL which points, e.g., to the documentation page of the entity type.","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact-types","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-vintner-profile-core1.
Figure C1: TOSCA Vintner Core Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact","title":"artifact","text":"artifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#sourcearchive","title":"source.archive","text":"application packaged as archive
source.archive:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\nentry_schema:\ntype: string\nrequired: false\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#systempackage","title":"system.package","text":"system.package:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#containerimage","title":"container.image","text":"expects image reference in \"file\"
container.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machineimage","title":"machine.image","text":"expects image reference in \"file\"
machine.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbmsimage","title":"dbms.image","text":"expects image reference in \"file\"
dbms.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cacheimage","title":"cache.image","text":"expects image reference in \"file\"
cache.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface-types","title":"Interface Types","text":"We specify the following normative interface types. An overview is given in Figure tosca-vintner-profile-core2.
Figure C2: TOSCA Vintner Core Interface Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface","title":"interface","text":"interface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#management","title":"management","text":"management:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: management lifecycle create operation.\nconfigure:\ndescription: management lifecycle configure operation.\nstart:\ndescription: management lifecycle start operation.\nstop:\ndescription: management lifecycle stop operation.\ndelete:\ndescription: management lifecycle delete operation.\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node-types","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-vintner-profile-core3.
Figure C3: TOSCA Vintner Core Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node","title":"node","text":"node:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cloudprovider","title":"cloud.provider","text":"cloud.provider:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cloudservice","title":"cloud.service","text":"cloud.service:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareapplication","title":"software.application","text":"software.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#serviceapplication","title":"service.application","text":"service.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\napplication_port:\ntype: string\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_endpoint:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareruntime","title":"software.runtime","text":"software.runtime:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#containerruntime","title":"container.runtime","text":"container.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machine","title":"machine","text":"machine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\nattributes:\napplication_address:\ntype: string\nmanagement_address:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#localmachine","title":"local.machine","text":"local.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#remotemachine","title":"remote.machine","text":"remote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\nports:\ntype: list\nentry_schema:\ntype: string\nflavor:\ntype: string\ndefault: m1.medium\nnetwork:\ntype: string\nssh_user:\ntype: string\nssh_key_name:\ntype: string\nssh_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#virtualmachine","title":"virtual.machine","text":"virtual.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#physicalmachine","title":"physical.machine","text":"physical.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#database","title":"database","text":"database:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#relationaldatabase","title":"relational.database","text":"relational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbms","title":"dbms","text":"dbms:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#relationaldbms","title":"relational.dbms","text":"relational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cache","title":"cache","text":"cache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ncache_port:\ntype: string\nattributes:\napplication_endpoint:\ntype: string\napplication_address:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#storage","title":"storage","text":"storage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#blockstorage","title":"block.storage","text":"block.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#objectstorage","title":"object.storage","text":"object.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\nstorage_dialect:\ntype: string\nstorage_user:\ntype: string\nstorage_token:\ntype: string\nattributes:\nstorage_endpoint:\ntype: string\nstorage_token:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#filestorage","title":"file.storage","text":"file.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ingress","title":"ingress","text":"ingress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\napplication_port:\ntype: string\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\nrequirements:\n- application:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-extended-profile","title":"TOSCA Vintner Extended Profile","text":"The extended normative TOSCA type definitions contain additional provider-specific type definitions which are derived from the core type definitions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact-types_1","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-vintner-profile-extended1.
Figure E1: Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerimage","title":"docker.image","text":"expects image reference in \"file\"
docker.image:\nderived_from: container.image\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ziparchive","title":"zip.archive","text":"zip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tararchive","title":"tar.archive","text":"tar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#aptpackage","title":"apt.package","text":"apt.package:\nderived_from: system.package\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node-types_1","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-vintner-profile-extended2.
Figure E2: Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsruntime","title":"nodejs.runtime","text":"nodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\nartifacts:\napt_package:\ntype: apt.package\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsserviceapplication","title":"nodejs.service.application","text":"nodejs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: npm ci\nstart: npm start\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#reactjsserviceapplication","title":"reactjs.service.application","text":"reactjs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonruntime","title":"python.runtime","text":"python.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nartifacts:\napt_package:\ntype: apt.package\nfile: python-is-python3\nproperties:\ndependencies:\ntype: string\ndefault: python3 python3-pip python3-venv\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonserviceapplication","title":"python.service.application","text":"python.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: python3\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: pip install -r requirements.txt\nstart: python main.py\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#goserviceapplication","title":"go.service.application","text":"go.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaruntime","title":"java.runtime","text":"java.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: openjdk-18-jre-headless\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaserviceapplication","title":"java.service.application","text":"java.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dotnetruntime","title":"dotnet.runtime","text":"dotnet.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: dotnet-sdk-8.0\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#csharpserviceapplication","title":"csharp.service.application","text":"csharp.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#binaryserviceapplication","title":"binary.service.application","text":"binary.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpprovider","title":"gcp.provider","text":"gcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ngcp_service_account_file:\ntype: string\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpservice","title":"gcp.service","text":"gcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudrun","title":"gcp.cloudrun","text":"gcp.cloudrun:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudsql","title":"gcp.cloudsql","text":"gcp.cloudsql:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpappengine","title":"gcp.appengine","text":"gcp.appengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appengine.googleapis.com\nrequirements:\n- build:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n- reporting:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpappenginereporting","title":"gcp.appenginereporting","text":"gcp.appenginereporting:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudbuild","title":"gcp.cloudbuild","text":"gcp.cloudbuild:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpkubernetesengine","title":"gcp.kubernetesengine","text":"gcp.kubernetesengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudstorage","title":"gcp.cloudstorage","text":"gcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpmemorystore","title":"gcp.memorystore","text":"gcp.memorystore:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerengine","title":"docker.engine","text":"Installs Docker Engine listening on the unix socket as well as on tcp://0.0.0.0:2375
docker.engine:\nderived_from: container.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: docker\n_hosting:\ntype: string\ndefault: docker\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#kubernetescluster","title":"kubernetes.cluster","text":"kubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\nk8s_ca_cert_file:\ntype: string\nk8s_client_cert_file:\ntype: string\nk8s_client_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#openstackprovider","title":"openstack.provider","text":"openstack.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\nos_auth_type:\ntype: string\nos_auth_url:\ntype: string\nos_identity_api_version:\ntype: string\nos_interface:\ntype: string\nos_application_credential_id:\ntype: string\nos_application_credential_secret:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldbms","title":"mysql.dbms","text":"mysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\napplication_name:\ntype: string\ndbms_password:\ntype: string\ndbms_ssl_mode:\ntype: string\ndefault: None\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\nmanagement_address:\ntype: string\nmanagement_port:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldatabase","title":"mysql.database","text":"mysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndatabase_user:\ntype: string\ndatabase_password:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#minioserver","title":"minio.server","text":"minio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#redisserver","title":"redis.server","text":"redis.server:\nderived_from: cache\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_protocol:\ntype: string\ndefault: redis\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-a-tosca-vintner-profile","title":"Appendix A \"TOSCA Vintner Profile\"","text":"This appendix contains the TOSCA Vintner profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-vintner-profile-core.yaml\n- ./tosca-vintner-profile-extended.yaml\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-b-tosca-vintner-core-profile","title":"Appendix B \"TOSCA Vintner Core Profile\"","text":"This appendix contains the TOSCA Vintner Core profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner (Core)\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile (Core)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nartifact_types:\nartifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\nsource.archive:\nderived_from: artifact\ndescription: application packaged as archive\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\nentry_schema:\ntype: string\nrequired: false\nsystem.package:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\ncontainer.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\nmachine.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ndbms.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ncache.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ninterface_types:\ninterface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\nmanagement:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: management lifecycle create operation.\nconfigure:\ndescription: management lifecycle configure operation.\nstart:\ndescription: management lifecycle start operation.\nstop:\ndescription: management lifecycle stop operation.\ndelete:\ndescription: management lifecycle delete operation.\nnode_types:\nnode:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncloud.provider:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncloud.service:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsoftware.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\nservice.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\napplication_port:\ntype: string\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_endpoint:\ntype: string\nsoftware.runtime:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncontainer.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nmachine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\nattributes:\napplication_address:\ntype: string\nmanagement_address:\ntype: string\nlocal.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nremote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\nports:\ntype: list\nentry_schema:\ntype: string\nflavor:\ntype: string\ndefault: m1.medium\nnetwork:\ntype: string\nssh_user:\ntype: string\nssh_key_name:\ntype: string\nssh_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvirtual.machine:\nderived_from: remote.machine\nphysical.machine:\nderived_from: remote.machine\ndatabase:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nrelational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ndbms:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrelational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ncache_port:\ntype: string\nattributes:\napplication_endpoint:\ntype: string\napplication_address:\ntype: string\nstorage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nblock.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nobject.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\nstorage_dialect:\ntype: string\nstorage_user:\ntype: string\nstorage_token:\ntype: string\nattributes:\nstorage_endpoint:\ntype: string\nstorage_token:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nfile.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\ningress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\napplication_port:\ntype: string\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\nrequirements:\n- application:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-c-tosca-vintner-extended-profile","title":"Appendix C \"TOSCA Vintner Extended Profile\"","text":"This appendix contains the TOSCA Vintner Extended profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner (Extended)\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile (Extended)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- tosca-vintner-profile-core.yaml\nartifact_types:\ndocker.image:\nderived_from: container.image\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\nzip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\ntar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\napt.package:\nderived_from: system.package\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\nnode_types:\nnodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\nartifacts:\napt_package:\ntype: apt.package\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nnodejs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: npm ci\nstart: npm start\nreactjs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\npython.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nartifacts:\napt_package:\ntype: apt.package\nfile: python-is-python3\nproperties:\ndependencies:\ntype: string\ndefault: python3 python3-pip python3-venv\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\npython.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: python3\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: pip install -r requirements.txt\nstart: python main.py\ngo.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\njava.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: openjdk-18-jre-headless\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\njava.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\ndotnet.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: dotnet-sdk-8.0\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncsharp.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\nbinary.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\ngcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ngcp_service_account_file:\ntype: string\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\ngcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ngcp.cloudrun:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\ngcp.cloudsql:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\ngcp.appengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appengine.googleapis.com\nrequirements:\n- build:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n- reporting:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\ngcp.appenginereporting:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\ngcp.cloudbuild:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\ngcp.kubernetesengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\ngcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\ngcp.memorystore:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\ndocker.engine:\nderived_from: container.runtime\ndescription: Installs Docker Engine listening on the unix socket as well as on tcp://0.0.0.0:2375\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: docker\n_hosting:\ntype: string\ndefault: docker\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nkubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\nk8s_ca_cert_file:\ntype: string\nk8s_client_cert_file:\ntype: string\nk8s_client_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nopenstack.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\nos_auth_type:\ntype: string\nos_auth_url:\ntype: string\nos_identity_api_version:\ntype: string\nos_interface:\ntype: string\nos_application_credential_id:\ntype: string\nos_application_credential_secret:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nmysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\napplication_name:\ntype: string\ndbms_password:\ntype: string\ndbms_ssl_mode:\ntype: string\ndefault: None\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\nmanagement_address:\ntype: string\nmanagement_port:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nmysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndatabase_user:\ntype: string\ndatabase_password:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nminio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\nredis.server:\nderived_from: cache\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_protocol:\ntype: string\ndefault: redis\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"queries4tosca/getting-started/","title":"Getting Started","text":"There is no standardized way to query TOSCA repositories or instance data. Therefore, we introduce Queries4TOSCA which defined a query language for TOSCA. This language provides a graph-based query language which includes path expressions, filters, and pattern matching. This section will give a quick introduction to Queries4TOSCA.
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/getting-started/#preparation","title":"Preparation","text":"To run the example queries, we need to install OpenTOSCA Vintner and have a resolved instance of the \"Getting Started\" template. First, clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Then import the template, create an instance, and resolve the variability.
vintner templates import --template getting-started --path examples/xopera-getting-started\nvintner instances init --instance getting-started --template getting-started\nvintner instances resolve --instance getting-started --presets first\n
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/getting-started/#example-queries","title":"Example Queries","text":"Queries start with a FROM
statement, followed by either templates
or instances
and the name of the template or the name of the instance, respectively. Inside a SELECT
statement, we can enter a path to the data that we want to return.
To get the entire contents of the template, run the following command.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT .\"\n
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ntextfile:\nderived_from: tosca.nodes.SoftwareComponent\nproperties:\ncontent:\ntype: string\ninterfaces:\nStandard:\ninputs:\ncontent:\nvalue:\nget_property:\n- SELF\n- content\ntype: string\noperations:\ncreate: create.yaml\ndelete: delete.yaml\ntopology_template:\nnode_templates:\nlocalhost:\ntype: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\nfirst:\ntype: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
We can return specific elements by specifying their path. Note, that topology_template
can be omitted at the start. The following command returns the contents of the localhost
node.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.localhost\"\n
type: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\n
We can use an asterisk as a wildcard operator to get all child elements. The following command returns a list of all nodes.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*\"\n
- type: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\n- type: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
We can also specify a predicate in square brackets after any part of the path expression to filter elements. The following command will return only nodes of type textfile
.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*[type='textfile']\"\n
type: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
In cases where we are only interested in some elements of a node, we can use a return structure to restrict the output to certain variables. To do this, put curly braces with key-value pairs behind your path expression. The following command will return only the content
property of the first
node.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.first{'Type': type, 'Text': properties.content}\"\n
Type: textfile\nText: First Textfile has been selected!\n
This also works on arrays. The following command returns an array that consists of the name and type of each node. Note the lack of quotation marks - we are using a value from the template for both key and value of the return object.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*{name: type}\"\n
- localhost: tosca.nodes.Compute\n- first: textfile\n
MATCH
statements are used to match patterns in the topology of a template. We can \"draw\" the pattern by surrounding nodes with parentheses and connect them to other nodes via arrows. The following statement will return all nodes that have a requirement fulfilled by localhost
.
vintner query --query \"\\\n FROM templates.getting-started \\\n MATCH ([name='localhost'])<--(node) \\\n SELECT node\"\n
first:\ntype: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
This is just a simple example. In a more complex scenario, it would be possible, e.g., to dynamically access the public address of a virtual machine which hosts a database to which a specific component connects.
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/specification/","title":"Specification","text":"","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#queries4tosca-specification-10-release-candidate","title":"Queries4TOSCA Specification 1.0 Release Candidate","text":"This document specifies a Query Language for TOSCA (Queries4TOSCA) inspired by XPath and Cypher. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#queries4tosca","title":"Queries4TOSCA","text":"The following statements can be used inside a query.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#from","title":"FROM","text":"A FROM
statement is used to denote which templates or instances the query should be executed on. It starts with the literal FROM
, followed by a space and the keyword templates
or instances
. Afterward, either a file path needs to be provided, or an asterisk can be used to select all service templates or instances, respectively.
From = \"FROM\" (\"instances\" | \"templates\") (\"/\" | \".\") (\"*\" | filePath)\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#select","title":"SELECT","text":"SELECT
statements are used to select elements from a template. They are denoted by the keyword SELECT
, followed by one or more path expressions separated by a comma. Path expressions are described in detail later. They can start with the special keywords Group
or Policy
, the name of an element, or a dot to select everything. Afterward, a series of mapping steps, filters, or array accesses can be used. Lastly, there is an optional return structure.
Select = \"SELECT\" Path (\",\" Path)*\nPath = (Group | Policy | Step | \".\") (ArrayAccess | Map | Filter)* ReturnClause?\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#match","title":"MATCH","text":"MATCH
statements are used to search for a pattern inside the nodes of a service template. A pattern consists of at least one node, along with any number of additional nodes and relationships. The syntax for denoting nodes and relationships is described in detail later.
Match = \"MATCH\" Node (Relationship Node)*\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#comments","title":"Comments","text":"Single-line comments begin with two forward slashes and extend to the end of the current line. Multi-line comments begin with a forward slash and an asterisk and end with another asterisk and slash and can be inserted anywhere. Here are some examples.
// single-line comment\n/* multi-line\ncomment */\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#paths4tosca","title":"Paths4TOSCA","text":"Paths4TOSCA is a path expression syntax that can navigate the various parts of a service template. Paths are separated by dots. All parts of a topology template (node_templates
, inputs
, etc...) can be accessed directly. The following expressions can be used.
Here are some examples.
node_templates.localhost // Selecting a node directly by name\nnode_templates.localhost.# // Selecting attributes of a node\nnode_templates.* // Selecting all nodes\nGROUP(my-group) // Selecting all nodes in group 'my-group'\nPOLICY(my-policy) // Selecting all nodes targeted by policy 'my-policy'\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#predicates","title":"Predicates","text":"Elements can be filtered by putting a condition in square brackets. Strings need to be surrounded by single or double quotes, and may use regular expressions to find multiple possible matches. If a filter only consists of a single variable with no comparison operator, it will return true if the current element has a matching child element. Putting an exclamation mark before a condition negates it. The following operators can be used.
Symbol Description ! Negation = Equality != Inequality > Greater than < Less than >= Greater than or equal <= Less than or equal =~ Matches regular expressionHere are some examples.
node_templates.*[type='textfile'] // equality\nnode_templates.*[name!='localhost'] // inequality\nnode_templates.*[name=~'^local'] // regular expression\nnode_templates.*[properties] // existence of field properties\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#array-access","title":"Array Access","text":"Accessing an element of an array can be accomplished by putting an integer inside square brackets after the path of the array. If the value inside the brackets is an integer, it is interpreted as an array access, otherwise, it is interpreted as a filter. Attempting to access non-existent array indices will return an empty result.
node_templates.*[0] // Selecting the first node template\nnode_templates.localhost.requirements[1] // Selecting the second requirement of a node\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#boolean-operators","title":"Boolean Operators","text":"Boolean operators can be used in predicates to link two or more conditions. AND
returns true if both predicates evaluate to true, OR
returns true if at least one of the predicates evaluates to true.
node_templates.*[type='textfile' AND name='first']\nnode_templates.*[name='first' OR name='second']\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#return-structures","title":"Return Structures","text":"By default, the output that is returned will always consist of the value at the current context specified by the path expression. However, it is possible to define the shape of the returned data. This can be done by putting curly braces with comma-separated key-value pairs at the end of a path expression. Both key and value can either be a literal or a variable. When a variable is used as a key, it needs to evaluate to a string. Instead of a key-value pair, it is also possible to only specify the name of a value, in which case it will automatically be used as the name for the key.
The expression in the first line returns a list of objects comprised of the keys Node Name
and Node Type
mapped to the names and types of individual nodes. The second expression also returns a list of objects, but their keys are named directly after the values, namely name and type. The expression in the last line returns a list of objects consisting of only a single key-value pair, with the name of each individual node as the key, and the corresponding type as the value.
node_templates.*{'Node Name': name, 'Node Type': type} // Using custom key names\nnode_templates.*{name, type} // Short form\nnode_templates.*{name: type} // List of node names mapped to type\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#patterns","title":"Patterns","text":"The following sections describes how to define patterns, which can be matched using a MATCH
statement.
Nodes are denoted by a pair of parentheses. Inside those parentheses, a variable name can be given to the node, otherwise they are anonymous and cannot be referenced in the SELECT
clause.
() // anonymous node template\n(n) // node template with variable n\n
Nodes can optionally contain a filter in square brackets that allows the same predicate syntax described above. Selecting a node template can be seen as the equivalent of a SELECT
clause that implicitly starts at the path node_templates.*
.
([type='textfile']) // anonymous node template with filter\n(n [type='textfile']) // node template with variable n and filter\n
Relationships can be specified between nodes. They are connected to nodes via dashes or arrows to denote undirected or directed relationships, respectively. An incoming relationship means that the requirement of another node is fulfilled by a capability of the current node, while an outgoing relationship means that a requirement of the current node is fulfilled by the capability of the other node. An undirected relationship applies to both of these scenarios.
(a)-->(b) // a has requirement fulfilled by capability of b\n(a)<--(b) // a has capability that fulfills requirement of b\n(a)--(b) // a and b have any relationship\n
Like node templates, relationships can be given a variable name, and their types can be specified using the same filter syntax. In order to do this, they need to be surrounded by curly braces inserted in the middle of the arrow.
(a)-{r}->(b) // relationship with variable r\n(a)-{r [name='host']}->(b) // relationship with symbolic name host and variable r\n
It is also possible to search for node templates connected over multiple relationships by specifying a cardinality. This can be accomplished by putting an asterisk at the end of a relationship, followed optionally by a number or a range.
(a)-{*2}->(b) // exactly two hops between a and b\n(a)-{*2..5}->(b) // between two and five hops\n(a)-{*2..}->(b) // at least two hops\n(a)-{*..5}->(b) // at most five hops\n(a)-{*}->(b) // any amount of hops\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#appendix-a-grammar","title":"Appendix A \"Grammar\"","text":"This appendix contains the Ohm grammar of Queries4TOSCA.
Query {\n Main = (Expression | MatchExpression) end\n Expression = FromExpression Select\n MatchExpression = FromExpression Match Select\n\n FromExpression = \"FROM\" (\"instances\" | \"templates\") (\"/\" | \".\") (asterisk | filePath)\n\n Select = \"SELECT\" Path (\",\" Path)*\n Path = (Group | Policy | Step | \".\") (ArrayAccess | Map | Filter)* ReturnClause?\n Map = \".\" Step\n Filter = PredicateExpression\n Step = shortcut? (asterisk | ident)\n ArrayAccess = \"[\" integer \"]\"\n ReturnClause = \"{\" KeyValuePair (\",\" KeyValuePair)* \"}\"\n KeyValuePair = Variable \":\" Variable --complex\n | Variable --simple\n Group = \"GROUP\" \"(\" ident \")\"\n Policy = \"POLICY\" \"(\" ident \")\"\n\n PredicateExpression = \"[\" Predicate \"]\"\n Predicate = Predicate logic Predicate -- multi\n | Condition -- single\n Condition = negation Value comparison literal -- comparison\n | negation Value -- existence\n\n Match = \"MATCH\" Node (Relationship Node)*\n Node = \"(\" ident? PredicateExpression? \")\"\n Relationship = arrowLeft arrowRight --simple\n | arrowLeft \"{\" ident? PredicateExpression? Cardinality? \"}\" arrowRight --cond\n Cardinality = asterisk integer \"..\" integer --range\n | asterisk \"..\" integer --max\n | asterisk integer \"..\" --min\n | asterisk integer --exact\n | asterisk --unlimited\n Variable = literal | path | ident\n Value = shortcut? (path | literal)\n\n negation = \"!\" | \"\"\n arrowLeft = \"<-\" | \"-\"\n arrowRight = \"->\" | \"-\"\n asterisk = \"*\"\n comparison = \"=~\" | \"=\" | \"!=\" | \">=\" | \"<=\" | \">\" | \"<\"\n ident = letter (alnum | \"_\" | \"-\")*\n logic = \"AND\" | \"OR\"\n path = letter (alnum | \"_\" | \"-\" | \".\")*\n filePath = (~space any)*\n literal = string | float | integer | bool\n bool = \"true\" | \"false\" | \"TRUE\" | \"FALSE\"\n shortcut = \"@\" | \"#\" | \"$\" | \"%\"\n string\n = \"'\" (~\"'\" any)* \"'\"\n | \"\\\"\" (~\"\\\"\" any)* \"\\\"\"\n integer = digit+\n float = digit? \".\" digit+\n singleComment = \"//\" (~\"\\n\" any)*\n multiComment = \"/*\" (~\"*/\" any)* \"*/\"\n space := singleComment | multiComment | ...\n}\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/","title":"Introduction","text":"","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#queries4tosca-conformance-test-suite-10-release-candidate","title":"Queries4TOSCA Conformance Test Suite 1.0 Release Candidate","text":"This document specifies the conformance test suite for the Queries4TOSCA specification which can be used to evaluate Query4TOSCA implementations. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#conformance-tests","title":"Conformance Tests","text":"Each test is described on a separate page. The description includes typically a service template, a query, expected results and so on along with an explanation about the expected processing.
ID Test 1 all 2 array-access 3 boolean-and 4 boolean-or 5 filter-equals 6 filter-existence 7 filter-negation 8 filter-nested 9 filter-regex 10 group 11 match-length-any 12 match-length-range 13 match-next 14 match-previous 15 match-rel-filter 16 match-single 17 node-template 18 policy 19 resolve-chain 20 resolve-loop 21 resolve-self 22 resolve-simple 23 result-structure-complex 24 result-structure-simple 25 shortcut-property","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/test-all/","title":"all","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-all/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT .\n
"},{"location":"queries4tosca/tests/test-all/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-array-access/","title":"array-access","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-array-access/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp.requirements[1]\n
"},{"location":"queries4tosca/tests/test-array-access/#query-result","title":"Query Result","text":"The following query result is expected.
host: tomcat\n
"},{"location":"queries4tosca/tests/test-boolean-and/","title":"boolean-and","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-boolean-and/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[name=\"dbms\" AND type=\"DBMS\"]\n
"},{"location":"queries4tosca/tests/test-boolean-and/#query-result","title":"Query Result","text":"The following query result is expected.
type: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-boolean-or/","title":"boolean-or","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-boolean-or/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[type=\"Database\" OR type=\"DBMS\"]\n
"},{"location":"queries4tosca/tests/test-boolean-or/#query-result","title":"Query Result","text":"The following query result is expected.
- type: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\n- type: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-filter-equals/","title":"filter-equals","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-equals/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[type=\"VirtualMachine\"].name\n
"},{"location":"queries4tosca/tests/test-filter-equals/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-filter-existence/","title":"filter-existence","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-existence/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[properties.num_cpus].name\n
"},{"location":"queries4tosca/tests/test-filter-existence/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-filter-negation/","title":"filter-negation","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-negation/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[!type=\"VirtualMachine\"].name\n
"},{"location":"queries4tosca/tests/test-filter-negation/#query-result","title":"Query Result","text":"The following query result is expected.
- webapp\n- tomcat\n- mysql_database\n- dbms\n- openstack\n
"},{"location":"queries4tosca/tests/test-filter-nested/","title":"filter-nested","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-nested/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[properties.port=3306]\n
"},{"location":"queries4tosca/tests/test-filter-nested/#query-result","title":"Query Result","text":"The following query result is expected.
type: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-filter-regex/","title":"filter-regex","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-regex/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[name=~\"vm_\"]\n
"},{"location":"queries4tosca/tests/test-filter-regex/#query-result","title":"Query Result","text":"The following query result is expected.
- type: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n- type: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-group/","title":"group","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-group/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT GROUP(database_group)\n
"},{"location":"queries4tosca/tests/test-group/#query-result","title":"Query Result","text":"The following query result is expected.
mysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-match-length-any/","title":"match-length-any","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-length-any/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"WebApplication\"])-{*}->(node[type=\"OpenStack\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-length-any/#query-result","title":"Query Result","text":"The following query result is expected.
openstack:\ntype: OpenStack\n
"},{"location":"queries4tosca/tests/test-match-length-range/","title":"match-length-range","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-length-range/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"Tomcat\"])-{*1..2}->(node) SELECT node.*.name\n
"},{"location":"queries4tosca/tests/test-match-length-range/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- openstack\n
"},{"location":"queries4tosca/tests/test-match-next/","title":"match-next","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-next/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"Tomcat\"])-->(node) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-next/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-match-previous/","title":"match-previous","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-previous/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH (node)<--([type=\"Tomcat\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-previous/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/","title":"match-rel-filter","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ()-{[type=\"ConnectsTo\"]}->(node2) SELECT node2\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/#query-result","title":"Query Result","text":"The following query result is expected.
dbms:\ntype: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-match-single/","title":"match-single","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-single/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH (node[type=\"WebApplication\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-single/#query-result","title":"Query Result","text":"The following query result is expected.
webapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-node-template/","title":"node-template","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-node-template/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp\n
"},{"location":"queries4tosca/tests/test-node-template/#query-result","title":"Query Result","text":"The following query result is expected.
type: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-policy/","title":"policy","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-policy/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT POLICY(placement_policy)\n
"},{"location":"queries4tosca/tests/test-policy/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-resolve-chain/","title":"resolve-chain","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-chain/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.webapp.properties.db_password)\ndb_password: executeQuery(SELECT node_templates.mysql_database.properties.password)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-chain/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: password\ndb_password: password\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-loop/","title":"resolve-loop","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-loop/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.webapp.properties.db_password)\ndb_password: executeQuery(SELECT node_templates.webapp.properties.db_username)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-loop/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown.
Circular dependencies detected. Unable to resolve queries in your template.\n
"},{"location":"queries4tosca/tests/test-resolve-self/","title":"resolve-self","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-self/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT SELF.properties.db_password)\ndb_password: mypassword\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-self/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: mypassword\ndb_password: mypassword\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-simple/","title":"resolve-simple","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-simple/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.mysql_database.properties.username)\ndb_password: executeQuery(SELECT node_templates.mysql_database.properties.password)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-simple/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: user\ndb_password: password\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/","title":"result-structure-complex","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*{\"Node Name\": name, \"Node Type\": type}\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/#query-result","title":"Query Result","text":"The following query result is expected.
- Node Name: webapp\nNode Type: WebApplication\n- Node Name: tomcat\nNode Type: Tomcat\n- Node Name: mysql_database\nNode Type: Database\n- Node Name: dbms\nNode Type: DBMS\n- Node Name: vm_1\nNode Type: VirtualMachine\n- Node Name: vm_2\nNode Type: VirtualMachine\n- Node Name: openstack\nNode Type: OpenStack\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/","title":"result-structure-simple","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp{name, type}\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/#query-result","title":"Query Result","text":"The following query result is expected.
name: webapp\ntype: WebApplication\n
"},{"location":"queries4tosca/tests/test-shortcut-property/","title":"shortcut-property","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-shortcut-property/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp.#port\n
"},{"location":"queries4tosca/tests/test-shortcut-property/#query-result","title":"Query Result","text":"The following query result is expected.
3306\n
"},{"location":"scsar/","title":"Secure CSAR","text":"","tags":["Specification"]},{"location":"scsar/#secure-cloud-service-archive-10-release-candidate","title":"Secure Cloud Service Archive 1.0 Release Candidate","text":"This document specifies the concept of a Secure Cloud Service Archive (sCSAR). The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Specification"]},{"location":"scsar/#secure-cloud-service-archive","title":"Secure Cloud Service Archive","text":"Sign the CSAR using RSA
with SHA256
and place the signature under the name of the CSAR appended with .asc
. For example, if the CSAR is named example.csar
, then the signature file is named example.csar.asc
. An RSA key length of 4096 is adviced. The CSAR and signature might be distributed in a ZIP file with the extension .scsar
having the following structure.
<CSAR Name>.csar
The CSAR. <CSAR Name>.csar.asc
The signature of the CSAR (encoded as HEX
) certificate.pem
The certificate (encoded as PEM
) of the signature key used for verifying the signature. certificate-chain.pem
The certificate chain (encoded as PEM
).","tags":["Specification"]},{"location":"scsar/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Specification"]},{"location":"scsar/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Specification"]},{"location":"scsar/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Specification"]},{"location":"sofdcar/profile/","title":"Profile","text":"","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-software-defined-car-sofdcar-profile-10-release-candidate","title":"TOSCA Software-Defined Car (SofDCar) Profile 1.0 Release Candidate","text":"This document specifies the TOSCA Software-Defined Car (SofDCar) profile. This profile includes normative TOSCA types for the domain of software-defined cars. Standardizing such normative TOSCA types improves interoperability. For example, an ECU supplier can model and distribute the deployment and management of their ECUs using these types. Various OEMs can then import provided models and integrate them into their cars. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-sofdcar-core-profile","title":"TOSCA SofDCar Core Profile","text":"The core normative TOSCA type definitions contain high-level type definitions which are mainly derived from the normative TOSCA type definitions of the TOSCA Simple Profile in YAML 1.3. These types mainly concern the following topics.
Considering the modeling communication, the TOSCA modeling approach is application centric meaning that, e.g., a CAN communication is modeled by relationships between the communicating software components. Thus, no (physical) CAN bus is modeled between the ECUs. However, this might not provide all required information. This issue is also discussed in the networking section of the TOSCA specification. In this section, the authors of TOSCA propose to have a TOSCA model for the application and a second separate one for the networking. Therefore, we provide type definitions to model such an automotive TOSCA networking model which includes, e.g., a physical CAN bus.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#artifact-types","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-sofdcar-profile-core1.
Figure C1: TOSCA SofDCar Core Artifact Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsroot","title":"sofdcar.artifacts.Root","text":"The artifact all other artifacts are derived from.
sofdcar.artifacts.Root:\nderived_from: tosca.artifacts.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsdeployment","title":"sofdcar.artifacts.Deployment","text":"The artifact all other deployment artifacts are derived from.
sofdcar.artifacts.Deployment:\nderived_from: tosca.artifacts.Deployment\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsimplementation","title":"sofdcar.artifacts.Implementation","text":"The artifact all other implementation artifacts are derived from.
sofdcar.artifacts.Implementation:\nderived_from: tosca.artifacts.Implementation\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#capability-types","title":"Capability Types","text":"We specify the following normative capability types. An overview is given in Figure tosca-sofdcar-profile-core2.
Figure C2: TOSCA SofDCar Core Capability Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesroot","title":"sofdcar.capabilities.Root","text":"The capability all other capabilities are derived from.
sofdcar.capabilities.Root:\nderived_from: tosca.capabilities.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitieshostecusoftware","title":"sofdcar.capabilities.Host.ECU.Software","text":"The capability to host an ECU software.
sofdcar.capabilities.Host.ECU.Software:\nderived_from: tosca.capabilities.Container\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesoperatingsystemrealtime","title":"sofdcar.capabilities.OperatingSystem.RealTime","text":"The capability to provide a real-time operating system.
sofdcar.capabilities.OperatingSystem.RealTime:\nderived_from: tosca.capabilities.OperatingSystem\nproperties:\ntime_guarantee:\ntype: integer\nrequired: false\nguarantee_type:\ntype: string\nconstraints:\n- valid_values:\n- hard\n- firm\n- soft\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpoint","title":"sofdcar.capabilities.Endpoint","text":"The capability to provide an endpoint to which a client can connect to.
sofdcar.capabilities.Endpoint:\nderived_from: sofdcar.capabilities.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#data-types","title":"Data Types","text":"We specify the following normative data types. An overview is given in Figure tosca-sofdcar-profile-core3.
Figure C3: TOSCA SofDCar Core Data Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcardataroot","title":"sofdcar.data.Root","text":"The data all other data are derived from.
sofdcar.data.Root:\nderived_from: tosca.datatypes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#group-types","title":"Group Types","text":"We specify the following normative group types. An overview is given in Figure tosca-sofdcar-profile-core4.
Figure C4: TOSCA SofDCar Core Group Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupsroot","title":"sofdcar.groups.Root","text":"The group all other groups are derived from.
sofdcar.groups.Root:\nderived_from: tosca.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupslocation","title":"sofdcar.groups.Location","text":"The geographical location of nodes.
sofdcar.groups.Location:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupsdomain","title":"sofdcar.groups.Domain","text":"The domain in a domain-oriented architecture.
sofdcar.groups.Domain:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupszone","title":"sofdcar.groups.Zone","text":"The zone in a zone-oriented architecture.
sofdcar.groups.Zone:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#interface-types","title":"Interface Types","text":"We specify the following normative interface types. An overview is given in Figure tosca-sofdcar-profile-core5.
Figure C5: TOSCA SofDCar Core Interface Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesroot","title":"sofdcar.interfaces.Root","text":"The interface all other interfaces are derived from.
sofdcar.interfaces.Root:\nderived_from: tosca.interfaces.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesnodes","title":"sofdcar.interfaces.Nodes","text":"The standard management interface of nodes.
sofdcar.interfaces.Nodes:\nderived_from: tosca.interfaces.node.lifecycle.Standard\noperations:\nbuild:\ndescription: Builds deployment artifacts.\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesrelationship","title":"sofdcar.interfaces.Relationship","text":"The standard management interface for relationships.
sofdcar.interfaces.Relationship:\nderived_from: tosca.interfaces.relationship.Configure\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#node-types","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-sofdcar-profile-core6.
Figure C6: TOSCA SofDCar Core Node Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesroot","title":"sofdcar.nodes.Root","text":"The node all other nodes are derived from.
sofdcar.nodes.Root:\nderived_from: tosca.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesvehicle","title":"sofdcar.nodes.Vehicle","text":"The node all other vehicles are derived from.
sofdcar.nodes.Vehicle:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescloud","title":"sofdcar.nodes.Cloud","text":"The node all other clouds are derived from.
sofdcar.nodes.Cloud:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecuhardware","title":"sofdcar.nodes.ECU.Hardware","text":"The hardware of an ECU.
sofdcar.nodes.ECU.Hardware:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.ECU.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecusoftware","title":"sofdcar.nodes.ECU.Software","text":"The software running on an ECU.
sofdcar.nodes.ECU.Software:\nderived_from: sofdcar.nodes.Root\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecuruntime","title":"sofdcar.nodes.ECU.Runtime","text":"The runtime for an ECU software.
sofdcar.nodes.ECU.Runtime:\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.ECU.Software\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeshpcsoftware","title":"sofdcar.nodes.HPC.Software","text":"The software running on an HPC.
sofdcar.nodes.HPC.Software:\nderived_from: tosca.nodes.SoftwareComponent\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeshpchardware","title":"sofdcar.nodes.HPC.Hardware","text":"The hardware of an HPC.
sofdcar.nodes.HPC.Hardware:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- tosca.nodes.SoftwareComponent\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesactuator","title":"sofdcar.nodes.Actuator","text":"The node all other actuators are derived from.
sofdcar.nodes.Actuator:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesaccelerator","title":"sofdcar.nodes.Accelerator","text":"The node all other accelerators are derived from.
sofdcar.nodes.Accelerator:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesbrake","title":"sofdcar.nodes.Brake","text":"The node all other brakes are derived from.
sofdcar.nodes.Brake:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessteering","title":"sofdcar.nodes.Steering","text":"The node all other steerings are derived from.
sofdcar.nodes.Steering:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslight","title":"sofdcar.nodes.Light","text":"The node all other lights are derived from.
sofdcar.nodes.Light:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescooling","title":"sofdcar.nodes.Cooling","text":"The node all other coolings are derived from.
sofdcar.nodes.Cooling:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesairbag","title":"sofdcar.nodes.Airbag","text":"The node all other airbags are derived from.
sofdcar.nodes.Airbag:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessensor","title":"sofdcar.nodes.Sensor","text":"The node all other sensors are derived from.
sofdcar.nodes.Sensor:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesradar","title":"sofdcar.nodes.RADAR","text":"The node all other RADAR are derived from.
sofdcar.nodes.RADAR:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescamera","title":"sofdcar.nodes.Camera","text":"The node all other cameras are derived from.
sofdcar.nodes.Camera:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslidar","title":"sofdcar.nodes.LIDAR","text":"The node all other LIDAR are derived from.
sofdcar.nodes.LIDAR:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesultrasonic","title":"sofdcar.nodes.Ultrasonic","text":"The node all other ultrasonics are derived from.
sofdcar.nodes.Ultrasonic:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesmicrophone","title":"sofdcar.nodes.Microphone","text":"The node all other microphones are derived from.
sofdcar.nodes.Microphone:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeschannel","title":"sofdcar.nodes.Channel","text":"The node all other communication channels are derived from.
sofdcar.nodes.Channel:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesbattery","title":"sofdcar.nodes.Battery","text":"The node all other batteries are derived from.
sofdcar.nodes.Battery:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesfeature","title":"sofdcar.nodes.Feature","text":"The node all other features are derived from.
sofdcar.nodes.Feature:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#policy-types","title":"Policy Types","text":"We specify the following normative policy types. An overview is given in Figure tosca-sofdcar-profile-core7.
Figure C7: TOSCA SofDCar Core Policy Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesroot","title":"sofdcar.policies.Root","text":"The policy all other policies are derived from.
sofdcar.policies.Root:\nderived_from: tosca.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciessecurity","title":"sofdcar.policies.Security","text":"The policy all other security-related policies are derived from.
sofdcar.policies.Security:\nderived_from: sofdcar.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciessafety","title":"sofdcar.policies.Safety","text":"The policy all other safety-related policies are derived from.
sofdcar.policies.Safety:\nderived_from: sofdcar.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#relationship-types","title":"Relationship Types","text":"We specify the following normative relationship types. An overview is given in Figure tosca-sofdcar-profile-core8.
Figure C8: TOSCA SofDCar Core Relationship Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsroot","title":"sofdcar.relationships.Root","text":"The relationship all other relationships are derived from.
sofdcar.relationships.Root:\nderived_from: tosca.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-sofdcar-extended-profile","title":"TOSCA SofDCar Extended Profile","text":"The extended normative TOSCA type definitions contain additional high-level type definitions which are derived from the core type definitions. These types mainly concern specific communications, such as CAN or FlexRay, but also ECUs and HPCs, such as Arduino or Raspberry Pi.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#capability-types_1","title":"Capability Types","text":"We specify the following normative capability types. An overview is given in Figure tosca-sofdcar-profile-extended1.
Figure E1: Capability Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointcan","title":"sofdcar.capabilities.Endpoint.CAN","text":"The capability to provide a CAN endpoint.
sofdcar.capabilities.Endpoint.CAN:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointcan-fd","title":"sofdcar.capabilities.Endpoint.CAN-FD","text":"The capability to provide a CAN-FD endpoint.
sofdcar.capabilities.Endpoint.CAN-FD:\nderived_from: sofdcar.capabilities.Endpoint.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointlin","title":"sofdcar.capabilities.Endpoint.LIN","text":"The capability to provide a LIN endpoint.
sofdcar.capabilities.Endpoint.LIN:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointmost","title":"sofdcar.capabilities.Endpoint.MOST","text":"The capability to provide a MOST endpoint.
sofdcar.capabilities.Endpoint.MOST:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointgpio","title":"sofdcar.capabilities.Endpoint.GPIO","text":"The capability to provide a GPIO endpoint.
sofdcar.capabilities.Endpoint.GPIO:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointflexray","title":"sofdcar.capabilities.Endpoint.FlexRay","text":"The capability to provide a FlexRay endpoint.
sofdcar.capabilities.Endpoint.FlexRay:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointethernet","title":"sofdcar.capabilities.Endpoint.Ethernet","text":"The capability to provide an Ethernet endpoint.
sofdcar.capabilities.Endpoint.Ethernet:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointobd","title":"sofdcar.capabilities.Endpoint.OBD","text":"The capability to provide an OBD endpoint.
sofdcar.capabilities.Endpoint.OBD:\nderived_from: sofdcar.capabilities.Endpoint.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointsomeip","title":"sofdcar.capabilities.Endpoint.SOME/IP","text":"The capability to provide a SOME/IP endpoint.
sofdcar.capabilities.Endpoint.SOME/IP:\nderived_from: sofdcar.capabilities.Endpoint.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#data-types_1","title":"Data Types","text":"We specify the following normative data types. An overview is given in Figure tosca-sofdcar-profile-extended2.
Figure E2: Data Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcardatagpiopin","title":"sofdcar.data.GPIO.Pin","text":"The GPIO pin used, e.g., when connecting using GPIO.
sofdcar.data.GPIO.Pin:\nderived_from: sofdcar.data.Root\nproperties:\npin:\ntype: integer\ndirection:\ntype: string\nconstraints:\n- valid_values:\n- in\n- out\n- in/out\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#node-types_1","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-sofdcar-profile-extended3.
Figure E3: Node Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescan","title":"sofdcar.nodes.CAN","text":"The CAN channel all other CAN channels are derived from.
sofdcar.nodes.CAN:\nderived_from: sofdcar.nodes.Channel\nproperties:\nbitrate:\ntype: integer\nrequired: false\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescan-fd","title":"sofdcar.nodes.CAN-FD","text":"The CAN-FD channel all other CAN-FD channels are derived from.
sofdcar.nodes.CAN-FD:\nderived_from: sofdcar.nodes.CAN\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN-FD\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslin","title":"sofdcar.nodes.LIN","text":"The LIN channel all other LIN channels are derived from.
sofdcar.nodes.LIN:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.LIN\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesmost","title":"sofdcar.nodes.MOST","text":"The MOST channel all other MOST channels are derived from.
sofdcar.nodes.MOST:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.MOST\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesgpio","title":"sofdcar.nodes.GPIO","text":"The GIP channel all other GIP channels are derived from.
sofdcar.nodes.GPIO:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.GPIO\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesflexray","title":"sofdcar.nodes.FlexRay","text":"The FlexRay channel all other FlexRay channels are derived from.
sofdcar.nodes.FlexRay:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.FlexRay\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesethernet","title":"sofdcar.nodes.Ethernet","text":"The ethernet channel all other ethernet channels are derived from.
sofdcar.nodes.Ethernet:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.Ethernet\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessomeip","title":"sofdcar.nodes.SOME/IP","text":"The SOME/IP channel all other SOME/IP channels are derived from.
sofdcar.nodes.SOME/IP:\nderived_from: sofdcar.nodes.Ethernet\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.SOME/IP\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodespythonapplication","title":"sofdcar.nodes.Python.Application","text":"Non-normative python application running on an HPC. This application requires a python runtime.
sofdcar.nodes.Python.Application:\nderived_from: sofdcar.nodes.HPC.Software\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodespythonruntime","title":"sofdcar.nodes.Python.Runtime","text":"Non-normative python runtime running on an HPC. This runtime is able to host python applications and requires a host.
sofdcar.nodes.Python.Runtime:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- sofdcar.nodes.Python.Application\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesraspberrypihardware","title":"sofdcar.nodes.RaspberryPi.Hardware","text":"The hardware of a Raspberry Pi serving as an HPC hardware. This Raspberry Pi is able to host HPC software. Furthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.
sofdcar.nodes.RaspberryPi.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- sofdcar.nodes.HPC.Software\n- sofdcar.nodes.Python.Application\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinosoftware","title":"sofdcar.nodes.Arduino.Software","text":"The software running on an Arduino.
sofdcar.nodes.Arduino.Software:\nderived_from: sofdcar.nodes.ECU.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinosoftwarec","title":"sofdcar.nodes.Arduino.Software.C++","text":"C++ software running on an Arduino.
sofdcar.nodes.Arduino.Software.C++:\nderived_from: sofdcar.nodes.Arduino.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinohardware","title":"sofdcar.nodes.Arduino.Hardware","text":"The hardware of an Arduino serving as ECU hardware. The Arduino is able to host Arduino software.
sofdcar.nodes.Arduino.Hardware:\nderived_from: sofdcar.nodes.ECU.Hardware\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.Arduino.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#policy-types_1","title":"Policy Types","text":"We specify the following normative policy types. An overview is given in Figure tosca-sofdcar-profile-extended4.
Figure E4: Policy Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasil","title":"sofdcar.policies.ASIL","text":"The policy that all other ASIL policies are derived from.
sofdcar.policies.ASIL:\nderived_from: sofdcar.policies.Safety\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasila","title":"sofdcar.policies.ASIL.A","text":"The policy that represents the ASIL level A.
sofdcar.policies.ASIL.A:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasilb","title":"sofdcar.policies.ASIL.B","text":"The policy that represents the ASIL level B.
sofdcar.policies.ASIL.B:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasilc","title":"sofdcar.policies.ASIL.C","text":"The policy that represents the ASIL level C.
sofdcar.policies.ASIL.C:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasild","title":"sofdcar.policies.ASIL.D","text":"The policy that represents the ASIL level D.
sofdcar.policies.ASIL.D:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#relationship-types_1","title":"Relationship Types","text":"We specify the following normative relationship types. An overview is given in Figure tosca-sofdcar-profile-extended5.
Figure E5: Relationship Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipscan","title":"sofdcar.relationships.CAN","text":"The relationship for CAN connections.
sofdcar.relationships.CAN:\nderived_from: sofdcar.relationships.Root\nproperties:\ninterface:\ntype: string\ndescription: The interface name at the source at which the CAN bus is available.\ndefault: can0\ntarget_interface:\ntype: string\ndescription: The interface name at the target at which the CAN bus is available.\nrequired: false\nbitrate:\ntype: integer\ndescription: The bitrate of the CAN bus.\nrequired: false\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipscan-fd","title":"sofdcar.relationships.CAN-FD","text":"The relationship for CAN-FD connections.
sofdcar.relationships.CAN-FD:\nderived_from: sofdcar.relationships.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipslin","title":"sofdcar.relationships.LIN","text":"The relationship for LIN connections.
sofdcar.relationships.LIN:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsmost","title":"sofdcar.relationships.MOST","text":"The relationships for MOST connections.
sofdcar.relationships.MOST:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsgpio","title":"sofdcar.relationships.GPIO","text":"The relationship for GPIO connections.
sofdcar.relationships.GPIO:\nderived_from: sofdcar.relationships.Root\nproperties:\npins:\ntype: list\nentry_schema:\ntype: sofdcar.data.GPIO.Pin\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsflexray","title":"sofdcar.relationships.FlexRay","text":"The relationship for FlexRay connections.
sofdcar.relationships.FlexRay:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsethernet","title":"sofdcar.relationships.Ethernet","text":"The relationship for Ethernet connections.
sofdcar.relationships.Ethernet:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsobd","title":"sofdcar.relationships.OBD","text":"The relationship for OBD connections.
sofdcar.relationships.OBD:\nderived_from: sofdcar.relationships.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipssomeip","title":"sofdcar.relationships.SOME/IP","text":"The relationship for SOME/IP connections.
sofdcar.relationships.SOME/IP:\nderived_from: sofdcar.relationships.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-a-tosca-sofdcar-profile","title":"Appendix A \"TOSCA SofDCar Profile\"","text":"This appendix contains the TOSCA SofDCar profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars.\nmetadata:\ntemplate_name: TOSCA SofDCar Profile\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-sofdcar-profile-core.yaml\n- ./tosca-sofdcar-profile-extended.yaml\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-b-tosca-sofdcar-core-profile","title":"Appendix B \"TOSCA SofDCar Core Profile\"","text":"This appendix contains the TOSCA SofDCar Core profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars (Core).\nmetadata:\ntemplate_name: TOSCA SofDCar Profile (Core)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile-core\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nabbreviations: |\n- ASIL: Automotive Safety Integrity Level\n- CAN: Controller Area Network\n- CAN-FD: Controller Area Network Flexible Data-Rate\n- ECU: Electronic Control Unit\n- GPIO: General-Purpose Input/ Output\n- HPC: High Performance Computer\n- LIDAR: Light Detection and Ranging\n- LIN: Local Interconnect Network\n- MOST: Media-Oriented Systems Transport\n- OBD: On-Board Diagnostics\n- RADAR: Radio Detection and Ranging\n- SOME/IP: Scalable Service-Oriented Middleware over IP\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nartifact_types:\nsofdcar.artifacts.Root:\ndescription: The artifact all other artifacts are derived from.\nderived_from: tosca.artifacts.Root\nsofdcar.artifacts.Deployment:\ndescription: The artifact all other deployment artifacts are derived from.\nderived_from: tosca.artifacts.Deployment\nsofdcar.artifacts.Implementation:\ndescription: The artifact all other implementation artifacts are derived from.\nderived_from: tosca.artifacts.Implementation\ncapability_types:\nsofdcar.capabilities.Root:\ndescription: The capability all other capabilities are derived from.\nderived_from: tosca.capabilities.Root\nsofdcar.capabilities.Host.ECU.Software:\ndescription: The capability to host an ECU software.\nderived_from: tosca.capabilities.Container\nsofdcar.capabilities.OperatingSystem.RealTime:\ndescription: The capability to provide a real-time operating system.\nderived_from: tosca.capabilities.OperatingSystem\nproperties:\ntime_guarantee:\ntype: integer\nrequired: false\nguarantee_type:\ntype: string\nconstraints:\n- valid_values:\n- hard\n- firm\n- soft\nsofdcar.capabilities.Endpoint:\ndescription: The capability to provide an endpoint to which a client can connect to.\nderived_from: sofdcar.capabilities.Root\ndata_types:\nsofdcar.data.Root:\ndescription: The data all other data are derived from.\nderived_from: tosca.datatypes.Root\ngroup_types:\nsofdcar.groups.Root:\ndescription: The group all other groups are derived from.\nderived_from: tosca.groups.Root\nsofdcar.groups.Location:\ndescription: The geographical location of nodes.\nderived_from: sofdcar.groups.Root\nsofdcar.groups.Domain:\ndescription: The domain in a domain-oriented architecture.\nderived_from: sofdcar.groups.Root\nsofdcar.groups.Zone:\ndescription: The zone in a zone-oriented architecture.\nderived_from: sofdcar.groups.Root\ninterface_types:\nsofdcar.interfaces.Root:\ndescription: The interface all other interfaces are derived from.\nderived_from: tosca.interfaces.Root\nsofdcar.interfaces.Nodes:\ndescription: The standard management interface of nodes.\nderived_from: tosca.interfaces.node.lifecycle.Standard\noperations:\nbuild:\ndescription: Builds deployment artifacts.\nsofdcar.interfaces.Relationship:\ndescription: The standard management interface for relationships.\nderived_from: tosca.interfaces.relationship.Configure\nnode_types:\nsofdcar.nodes.Root:\ndescription: The node all other nodes are derived from.\nderived_from: tosca.nodes.Root\nsofdcar.nodes.Vehicle:\ndescription: The node all other vehicles are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Cloud:\ndescription: The node all other clouds are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.ECU.Hardware:\ndescription: The hardware of an ECU.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.ECU.Software]\nsofdcar.nodes.ECU.Software:\ndescription: The software running on an ECU.\nderived_from: sofdcar.nodes.Root\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.ECU.Runtime:\ndescription: The runtime for an ECU software.\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.ECU.Software]\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.HPC.Software:\ndescription: The software running on an HPC.\nderived_from: tosca.nodes.SoftwareComponent\nsofdcar.nodes.HPC.Hardware:\ndescription: The hardware of an HPC.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [tosca.nodes.SoftwareComponent]\nsofdcar.nodes.Actuator:\ndescription: The node all other actuators are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Accelerator:\ndescription: The node all other accelerators are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Brake:\ndescription: The node all other brakes are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Steering:\ndescription: The node all other steerings are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Light:\ndescription: The node all other lights are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Cooling:\ndescription: The node all other coolings are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Airbag:\ndescription: The node all other airbags are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Sensor:\ndescription: The node all other sensors are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.RADAR:\ndescription: The node all other RADAR are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Camera:\ndescription: The node all other cameras are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.LIDAR:\ndescription: The node all other LIDAR are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Ultrasonic:\ndescription: The node all other ultrasonics are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Microphone:\ndescription: The node all other microphones are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Channel:\ndescription: The node all other communication channels are derived from.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.Battery:\ndescription: The node all other batteries are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Feature:\ndescription: The node all other features are derived from.\nderived_from: sofdcar.nodes.Root\npolicy_types:\nsofdcar.policies.Root:\ndescription: The policy all other policies are derived from.\nderived_from: tosca.policies.Root\nsofdcar.policies.Security:\ndescription: The policy all other security-related policies are derived from.\nderived_from: sofdcar.policies.Root\nsofdcar.policies.Safety:\ndescription: The policy all other safety-related policies are derived from.\nderived_from: sofdcar.policies.Root\nrelationship_types:\nsofdcar.relationships.Root:\ndescription: The relationship all other relationships are derived from.\nderived_from: tosca.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-c-tosca-sofdcar-extended-profile","title":"Appendix C \"TOSCA SofDCar Extended Profile\"","text":"This appendix contains the TOSCA SofDCar Extended profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars (Extended).\nmetadata:\ntemplate_name: TOSCA SofDCar Profile (Extended)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile-extended\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nabbreviations: |\n- ASIL: Automotive Safety Integrity Level\n- CAN: Controller Area Network\n- CAN-FD: Controller Area Network Flexible Data-Rate\n- ECU: Electronic Control Unit\n- GPIO: General-Purpose Input/ Output\n- HPC: High Performance Computer\n- LIDAR: Light Detection and Ranging\n- LIN: Local Interconnect Network\n- MOST: Media-Oriented Systems Transport\n- OBD: On-Board Diagnostics\n- RADAR: Radio Detection and Ranging\n- SOME/IP: Scalable Service-Oriented Middleware over IP\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-sofdcar-profile-core.yaml\ncapability_types:\nsofdcar.capabilities.Endpoint.CAN:\ndescription: The capability to provide a CAN endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.CAN-FD:\ndescription: The capability to provide a CAN-FD endpoint.\nderived_from: sofdcar.capabilities.Endpoint.CAN\nsofdcar.capabilities.Endpoint.LIN:\ndescription: The capability to provide a LIN endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.MOST:\ndescription: The capability to provide a MOST endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.GPIO:\ndescription: The capability to provide a GPIO endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.FlexRay:\ndescription: The capability to provide a FlexRay endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.Ethernet:\ndescription: The capability to provide an Ethernet endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.OBD:\ndescription: The capability to provide an OBD endpoint.\nderived_from: sofdcar.capabilities.Endpoint.CAN\nsofdcar.capabilities.Endpoint.SOME/IP:\ndescription: The capability to provide a SOME/IP endpoint.\nderived_from: sofdcar.capabilities.Endpoint.Ethernet\ndata_types:\nsofdcar.data.GPIO.Pin:\ndescription: The GPIO pin used, e.g., when connecting using GPIO.\nderived_from: sofdcar.data.Root\nproperties:\npin:\ntype: integer\ndirection:\ntype: string\nconstraints:\n- valid_values:\n- in\n- out\n- in/out\nnode_types:\nsofdcar.nodes.CAN:\ndescription: The CAN channel all other CAN channels are derived from.\nderived_from: sofdcar.nodes.Channel\nproperties:\nbitrate:\ntype: integer\nrequired: false\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.CAN-FD:\ndescription: The CAN-FD channel all other CAN-FD channels are derived from.\nderived_from: sofdcar.nodes.CAN\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN-FD\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.LIN:\ndescription: The LIN channel all other LIN channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.LIN\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.MOST:\ndescription: The MOST channel all other MOST channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.MOST\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.GPIO:\ndescription: The GIP channel all other GIP channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.GPIO\noccurrences: [2, 2]\nsofdcar.nodes.FlexRay:\ndescription: The FlexRay channel all other FlexRay channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.FlexRay\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.Ethernet:\ndescription: The ethernet channel all other ethernet channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.Ethernet\noccurrences: [2, 2]\nsofdcar.nodes.SOME/IP:\ndescription: The SOME/IP channel all other SOME/IP channels are derived from.\nderived_from: sofdcar.nodes.Ethernet\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.SOME/IP\noccurrences: [2, 2]\nsofdcar.nodes.Python.Application:\ndescription: >\nNon-normative python application running on an HPC.\nThis application requires a python runtime.\nderived_from: sofdcar.nodes.HPC.Software\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.Python.Runtime:\ndescription: >\nNon-normative python runtime running on an HPC.\nThis runtime is able to host python applications and requires a host.\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [sofdcar.nodes.Python.Application]\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.RaspberryPi.Hardware:\ndescription: >\nThe hardware of a Raspberry Pi serving as an HPC hardware.\nThis Raspberry Pi is able to host HPC software.\nFurthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.\nderived_from: sofdcar.nodes.HPC.Hardware\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [sofdcar.nodes.HPC.Software, sofdcar.nodes.Python.Application]\nsofdcar.nodes.Arduino.Software:\ndescription: The software running on an Arduino.\nderived_from: sofdcar.nodes.ECU.Software\nsofdcar.nodes.Arduino.Software.C++:\ndescription: C++ software running on an Arduino.\nderived_from: sofdcar.nodes.Arduino.Software\nsofdcar.nodes.Arduino.Hardware:\ndescription: >\nThe hardware of an Arduino serving as ECU hardware.\nThe Arduino is able to host Arduino software.\nderived_from: sofdcar.nodes.ECU.Hardware\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.Arduino.Software]\npolicy_types:\nsofdcar.policies.ASIL:\ndescription: The policy that all other ASIL policies are derived from.\nderived_from: sofdcar.policies.Safety\nsofdcar.policies.ASIL.A:\ndescription: The policy that represents the ASIL level A.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.B:\ndescription: The policy that represents the ASIL level B.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.C:\ndescription: The policy that represents the ASIL level C.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.D:\ndescription: The policy that represents the ASIL level D.\nderived_from: sofdcar.policies.ASIL\nrelationship_types:\nsofdcar.relationships.CAN:\ndescription: The relationship for CAN connections.\nderived_from: sofdcar.relationships.Root\nproperties:\ninterface:\ntype: string\ndescription: The interface name at the source at which the CAN bus is available.\ndefault: can0\ntarget_interface:\ntype: string\ndescription: The interface name at the target at which the CAN bus is available.\nrequired: false\nbitrate:\ntype: integer\ndescription: The bitrate of the CAN bus.\nrequired: false\nsofdcar.relationships.CAN-FD:\ndescription: The relationship for CAN-FD connections.\nderived_from: sofdcar.relationships.CAN\nsofdcar.relationships.LIN:\ndescription: The relationship for LIN connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.MOST:\ndescription: The relationships for MOST connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.GPIO:\ndescription: The relationship for GPIO connections.\nderived_from: sofdcar.relationships.Root\nproperties:\npins:\ntype: list\nentry_schema:\ntype: sofdcar.data.GPIO.Pin\nsofdcar.relationships.FlexRay:\ndescription: The relationship for FlexRay connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.Ethernet:\ndescription: The relationship for Ethernet connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.OBD:\ndescription: The relationship for OBD connections.\nderived_from: sofdcar.relationships.CAN\nsofdcar.relationships.SOME/IP:\ndescription: The relationship for SOME/IP connections.\nderived_from: sofdcar.relationships.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/guides/location/","title":"Distributed Locations","text":"This document holds an example of two geographically distributed ECUs using the TOSCA SofDCar profile.
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#scenario","title":"Scenario","text":"In this example, there are two ECUs. These two ECUs communicate via CAN which is bridged over the cloud, as shown in Figure 1. Thereby, we model the CAN communication application-centric via a direct relationship between the two software components as well as network-centric via explicitly modeling the CAN busses and their connections to the underlying hardware.
Figure 1: Distributed Locations","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#appendix-a-service-template","title":"Appendix A \"Service Template\"","text":"
This appendix contains the service template of this guide. The service template is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: Example of an architecture distributed across several geographical locations.\nimports:\n- types.yaml\ntopology_template:\nnode_templates:\n###################################################\n#\n# Cloud\n#\n###################################################\ncloud_service:\ntype: example.nodes.Cloud.Service\nrequirements:\n- host: cloud_provider\ncloud_provider:\ntype: example.nodes.Cloud.Provider\n###################################################\n#\n# Location A\n#\n###################################################\na_ecu_software:\ntype: example.nodes.ECU.Software\nrequirements:\n- host: a_ecu_runtime\n- can: a_can_bus\n- connect: b_ecu_software\na_ecu_runtime:\ntype: example.nodes.ECU.Runtime\nrequirements:\n- host: a_ecu_hardware\na_ecu_hardware:\ntype: example.nodes.ECU.Hardware\nrequirements:\n- can: a_can_bus\na_can_bus:\ntype: sofdcar.nodes.CAN\na_can_bridge:\ntype: example.nodes.CAN.Bridge\nrequirements:\n- can: a_can_bus\n- cloud: cloud_service\n###################################################\n#\n# Location B\n#\n###################################################\nb_ecu_software:\ntype: example.nodes.ECU.Software\nrequirements:\n- host: b_ecu_runtime\n- can: b_can_bus\nb_ecu_runtime:\ntype: example.nodes.ECU.Runtime\nrequirements:\n- host: b_ecu_hardware\nb_ecu_hardware:\ntype: example.nodes.ECU.Hardware\nrequirements:\n- can: b_can_bus\nb_can_bus:\ntype: sofdcar.nodes.CAN\nb_can_bridge:\ntype: example.nodes.CAN.Bridge\nrequirements:\n- can: b_can_bus\n- cloud: cloud_service\ngroups:\ncloud:\ntype: sofdcar.groups.Location\nmembers:\n- cloud_service\n- cloud_provider\nlocation_a:\ntype: sofdcar.groups.Location\nmembers:\n- a_ecu_software\n- a_ecu_runtime\n- a_ecu_hardware\n- a_can_bus\n- a_can_bridge\nlocation_b:\ntype: sofdcar.groups.Location\nmembers:\n- b_ecu_software\n- b_ecu_runtime\n- b_ecu_hardware\n- b_can_bus\n- b_can_bridge\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#appendix-b-type-definitions","title":"Appendix B \"Type Definitions\"","text":"This appendix contains the type definitions of this guide. The type definitions are also available as download
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- ../../tosca-sofdcar-profile.yaml\n- ../../tosca-sofdcar-profile-extended.yaml\nnode_types:\nexample.nodes.Cloud.Service:\nderived_from: tosca.nodes.SoftwareComponent\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nexample.nodes.Cloud.Provider:\nderived_from: sofdcar.nodes.Cloud\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nexample.nodes.ECU.Software:\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nconnect:\ntype: sofdcar.capabilities.Endpoint.CAN\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\noccurrences: [0, 1]\n- connect:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\noccurrences: [0, 1]\nexample.nodes.ECU.Runtime:\nderived_from: sofdcar.nodes.ECU.Runtime\nexample.nodes.ECU.Hardware:\nderived_from: sofdcar.nodes.ECU.Hardware\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\nexample.nodes.CAN.Bridge:\nderived_from: sofdcar.nodes.Root\nrequirements:\n- cloud:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/","title":"Zonal Architecture","text":"This document holds an example of a zonal architecture using the TOSCA SofDCar profile. This zonal architecture consists of several zones inside the vehicle in which also cloud services are integrated.
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#scenario","title":"Scenario","text":"In this example, there are two zones which both contain a zone control unit, an actuator, and a sensor, as shown in Figure 1. Communication inside those zones is based on CAN. Furthermore, there is a third zone which contains a vehicle control unit. This vehicle control unit connects the other two zones based on Ethernet. Moreover, this vehicle control unit also connects to some service running in the cloud.
Figure 1: Zonal Architecture","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#appendix-a-service-template","title":"Appendix A \"Service Template\"","text":"
This appendix contains the service template of this guide. The service template is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: Example of a zonal architecture connected to the cloud.\nimports:\n- types.yaml\ntopology_template:\nnode_templates:\n###################################################\n#\n# Cloud\n#\n###################################################\ncloud_service:\ntype: example.nodes.Cloud.Service\nrequirements:\n- host: cloud_provider\ncloud_provider:\ntype: example.nodes.Cloud.Provider\n###################################################\n#\n# Vehicle Control Unit\n#\n###################################################\nvehicle_control_unit_software:\ntype: example.nodes.VCU.Software\nrequirements:\n- host: vehicle_control_unit_hardware\n- cloud: cloud_service\nvehicle_control_unit_hardware:\ntype: example.nodes.VCU.Hardware\nrequirements:\n- ethernet: zone_a_ethernet\n- ethernet: zone_b_ethernet\n###################################################\n#\n# Zone A\n#\n###################################################\nzone_a_control_unit_software:\ntype: example.nodes.ZCU.Software\nrequirements:\n- host: zone_a_control_unit_hardware\n- vcu: vehicle_control_unit_software\nzone_a_control_unit_hardware:\ntype: example.nodes.ZCU.Hardware\nrequirements:\n- ethernet: zone_a_ethernet\n- can: zone_a_can_bus\nzone_a_ethernet:\ntype: sofdcar.nodes.Ethernet\nzone_a_can_bus:\ntype: sofdcar.nodes.CAN\nzone_a_actuator:\ntype: example.nodes.Actuator\nrequirements:\n- can: zone_a_can_bus\n- zcu: zone_a_control_unit_software\nzone_a_sensor:\ntype: example.nodes.Sensor\nrequirements:\n- can: zone_a_can_bus\n- zcu: zone_a_control_unit_software\n###################################################\n#\n# Zone B\n#\n###################################################\nzone_b_control_unit_software:\ntype: example.nodes.ZCU.Software\nrequirements:\n- host: zone_b_control_unit_hardware\n- vcu: vehicle_control_unit_software\nzone_b_control_unit_hardware:\ntype: example.nodes.ZCU.Hardware\nrequirements:\n- ethernet: zone_b_ethernet\n- can: zone_b_can_bus\nzone_b_ethernet:\ntype: sofdcar.nodes.Ethernet\nzone_b_can_bus:\ntype: sofdcar.nodes.CAN\nzone_b_actuator:\ntype: example.nodes.Actuator\nrequirements:\n- can: zone_b_can_bus\n- zcu: zone_b_control_unit_software\nzone_b_sensor:\ntype: example.nodes.Sensor\nrequirements:\n- can: zone_b_can_bus\n- zcu: zone_b_control_unit_software\ngroups:\ncloud:\ntype: tosca.groups.Root\nmembers:\n- cloud_service\n- cloud_provider\nzone_a:\ntype: sofdcar.groups.Zone\nmembers:\n- zone_a_control_unit_software\n- zone_a_control_unit_hardware\n- zone_a_ethernet\n- zone_a_can_bus\n- zone_a_actuator\n- zone_a_sensor\nzone_b:\ntype: sofdcar.groups.Zone\nmembers:\n- zone_b_control_unit_software\n- zone_b_control_unit_hardware\n- zone_b_ethernet\n- zone_b_can_bus\n- zone_b_actuator\n- zone_b_sensor\nzone_c:\ntype: sofdcar.groups.Zone\nmembers:\n- vehicle_control_unit_software\n- vehicle_control_unit_hardware\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#appendix-b-type-definitions","title":"Appendix B \"Type Definitions\"","text":"This appendix contains the type definitions of this guide. The type definitions are also available as download
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- ../../tosca-sofdcar-profile.yaml\n- ../../tosca-sofdcar-profile-extended.yaml\nnode_types:\nexample.nodes.Cloud.Service:\nderived_from: tosca.nodes.SoftwareComponent\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nexample.nodes.Cloud.Provider:\nderived_from: sofdcar.nodes.Cloud\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nexample.nodes.VCU.Software:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nrequirements:\n- cloud:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.VCU.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\nrequirements:\n- ethernet:\ncapability: sofdcar.capabilities.Endpoint.Ethernet\nrelationship: sofdcar.relationships.Ethernet\noccurrences: [0, UNBOUNDED]\nexample.nodes.ZCU.Software:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nrequirements:\n- vcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.ZCU.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- ethernet:\ncapability: sofdcar.capabilities.Endpoint.Ethernet\nrelationship: sofdcar.relationships.Ethernet\nexample.nodes.Actuator:\nderived_from: sofdcar.nodes.Actuator\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- zcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.Sensor:\nderived_from: sofdcar.nodes.Sensor\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- zcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n
","tags":["SofDCar","Guide"]},{"location":"variability4tosca/benchmark/","title":"Benchmark","text":"To benchmark our implementation of a Variability4TOSCA processor, we run several tests. Thereby, a service template is generated and then resolved based on a seed. A seed of value n results in 2n node templates and 2n relationship templates, thus, 4n templates. For example, a seed of 10.000 generates 20.0000 node templates and 20.0000 relationship templates. When variability is resolved, n node templates and n relationship templates are removed. An concrete example is given below.
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#tests-in-memory","title":"Tests In-Memory","text":"The first test suite runs the tests in-memory. Thus, generated and resolved service templates are not read or stored to the filesystem.
Test Seed Templates Median Median per Template 1 10 40 37.918 ms 0.948 ms 2 250 1,000 38.578 ms 0.039 ms 3 500 2,000 71.489 ms 0.036 ms 4 1,000 4,000 136.850 ms 0.034 ms 5 2,500 10,000 334.963 ms 0.033 ms 6 5,000 20,000 669.432 ms 0.033 ms 7 10,000 40,000 1.365 s 0.034 ms","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#tests-with-filesystem","title":"Tests with Filesystem","text":"The second test suite runs the tests with filesystem interaction. Thus, generated and resolved service templates are also read and stored to the filesystem.
Test Seed Templates Median Median per Template 1 10 40 5.992 ms 0.150 ms 2 250 1,000 48.485 ms 0.048 ms 3 500 2,000 94.863 ms 0.047 ms 4 1,000 4,000 182.193 ms 0.046 ms 5 2,500 10,000 463.675 ms 0.046 ms 6 5,000 20,000 955.071 ms 0.048 ms 7 10,000 40,000 1.997 s 0.050 ms","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#file-measurements","title":"File Measurements","text":"The written variable service templates have the following measurements.
Test Seed File Size File Lines 1 10 10 kb 322 2 250 254 kb 7,762 3 500 509 kb 15,512 4 1,000 1.019 mb 31,012 5 2,500 2.578 mb 77,512 6 5,000 5.175 mb 155,012 7 10,000 10.370 mb 310,012","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#computing-resources","title":"Computing Resources","text":"The following computing resources have been used for the benchmark.
Resource Value Date 2024-01-27 OpenTOSCA Vintner e800c672edebf2d7338029680b58016244461736 Operating System Windows 11 Processor Intel Core i7-12700KF Memory 2x Crucial RAM 32GB DDR4 3200MHz CL22 Motherboard ASRock H670 PG Riptide Intel H670 Graphic Card GeForce RTX TM 2060 WINDFORCE OC 6G Disk Samsung 990 Pro NVMe M.2 SSD PCIe 4.0 1TB","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#running-the-benchmark","title":"Running the Benchmark","text":"To run the benchmark on your own, run the following command. For more information see Interface. Feel free to open a merge request, if your benchmarking results are better.
vintner setup benchmark --markdown --io\n
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#service-template-under-test","title":"Service Template Under Test","text":"The following is an example of the expected service template that is under test when the seed is 2.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode: { type: string }\nexpressions:\ncondition_0_present: { equal: [ { variability_input: mode }, present ] }\ncondition_0_removed: { equal: [ { variability_input: mode }, absent ] }\ncondition_1_present: { equal: [ { variability_input: mode }, present ] }\ncondition_1_removed: { equal: [ { variability_input: mode }, absent ] }\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nconditions: { logic_expression: condition_0_present }\nrequirements:\n- relation_present:\nnode: component_1_present\nconditions: { logic_expression: condition_0_present }\nrelationship: relationship_0_present\n- relation_removed:\nnode: component_1_removed\nconditions: { logic_expression: condition_0_removed }\nrelationship: relationship_0_removed\ncomponent_0_removed:\ntype: component_type_0_removed\nconditions: { logic_expression: condition_0_removed }\ncomponent_1_present:\ntype: component_type_1_present\nconditions: { logic_expression: condition_1_present }\nrequirements:\n- relation_present:\nnode: component_0_present\nconditions: { logic_expression: condition_1_present }\nrelationship: relationship_1_present\n- relation_removed:\nnode: component_0_removed\nconditions: { logic_expression: condition_1_removed }\nrelationship: relationship_1_removed\ncomponent_1_removed:\ntype: component_type_1_removed\nconditions: { logic_expression: condition_1_removed }\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_0_removed:\ntype: relationship_type_0_removed\nrelationship_1_present:\ntype: relationship_type_1_present\nrelationship_1_removed:\ntype: relationship_type_1_removed\n
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/dynamic/","title":"Dynamic Deployment Artifacts","text":"","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#variability4tosca-dynamic-deployment-artifacts-10-release-candidate","title":"Variability4TOSCA Dynamic Deployment Artifacts 1.0 Release Candidate","text":"Warning
This specification is experimental.
This document specifies dynamic deployment artifacts which are supposed to be build on-demand based on information in the topology. The intention is to build variants of deployment artifacts which are specific for the application. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#dynamic-build-artifacts","title":"Dynamic Build Artifacts","text":"To build dynamic deployment artifacts a build
management operation is defined for the tosca.interfaces.node.lifecycle.Variability
interface. This management operation can be used in several stages. Artifacts can be build during modeling when packaging the application as CSAR, right before the deployment process or during deployment. The implementation of the build
management operation can start, e.g., a build pipeline and set a reference, such as a Docker Tag as attribute of the respective node template. This reference can then be used by the create
management operation of tosca.interfaces.node.lifecycle.Standard
.
tosca.interfaces.node.lifecycle.Variability\n+ build:\n+ description: Builds a Deployment Artifact\n
A rough idea has been also mentioned in TOSCA Simple Profile in YAML Version 1.3.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/feature-ide/","title":"Feature IDE","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#variability4tosca-feature-ide-integration-10-release-candidate","title":"Variability4TOSCA Feature IDE Integration 1.0 Release Candidate","text":"This document specifies the integration of FeatureIDE into the Variability4TOSCA specification. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#featureide-integration","title":"FeatureIDE Integration","text":"In order to generate only valid service templates, feature models can be used to model dependencies between variability inputs. A feature model of Feature IDE is supposed to be packaged as feature-model.xml
at the root of the CSAR. We describe the mapping between the Extended XML Configuration to variability inputs.
Each feature is mapped to a Boolean variability input. The value is true
if either automatic
or manual
is selected
. Otherwise, the value is false
. Thereby, the feature name is transformed to lowercase and all whitespaces are replaced with an underscore.
<feature automatic=\"selected\" manual=\"selected\" name=\"Feature A\"/>\n
feature_a: true\n
Feature names can be overridden by the value of the attribute __name
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature C\">\n<attribute name=\"__name\" value=\"feature_overridden\"/>\n</feature>\n
feature_overridden: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#attributes","title":"Attributes","text":"Each attribute is mapped to a variability input. The values are parsed by a JSON parser. If parsing throws an error, then the value is treated as a string.
The attribute name is namespaced by their feature, transformed to lowercase and all whitespaces are replaced with an underscore.
FeatureIDE Extended XMLYAML<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature A\">\n<attribute name=\"attr_bool_true\" value=\"true\"/>\n</feature>\n
feature_a_attr_bool_true: true\n
Attribute names can be overridden by the value of the attribute __name_${attribute name}
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature D\">\n<attribute name=\"attr Long\" value=\"1\"/>\n<attribute name=\"__name_attr_long\" value=\"attr_overridden\"/>\n</feature>\n
feature_d_attr_overridden: true\n
The full attribute name (including the feature namespacing) can be overridden by the value of the attribute __full_name_${attribute name}
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature E\">\n<attribute name=\"attr_another_string\" value=\"something else\"/>\n<attribute name=\"__full_name_attr_another_string\" value=\"fully_overridden\"/>\n</feature>\n
fully_overridden: something else\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#example","title":"Example","text":"The following example of a complete FeatureIDE Extended XML Configuration contains examples of the above introduced concepts.
FeatureIDE Extended XMLYAML<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<extendedConfiguration>\n<feature automatic=\"selected\" manual=\"undefined\" name=\"Application\"/>\n<feature automatic=\"selected\" manual=\"selected\" name=\"Feature A\">\n<attribute name=\"attr_bool_true\" value=\"true\"/>\n<attribute name=\"attr_bool_false\" value=\"false\"/>\n<attribute name=\"attr LoNg\" value=\"3\"/>\n<attribute name=\"attr_double\" value=\"2.5\"/>\n<attribute name=\"attr_string\" value=\"hello world\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"undefined\" name=\"Feature B\"/>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature C\">\n<attribute name=\"__name\" value=\"feature_overridden\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature D\">\n<attribute name=\"attr Long\" value=\"1\"/>\n<attribute name=\"__name_attr_long\" value=\"attr_overridden\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature E\">\n<attribute name=\"__name\" value=\"feature_another_overridden\"/>\n<attribute name=\"attr_double\" value=\"1337\"/>\n<attribute name=\"attr_string\" value=\"something\"/>\n<attribute name=\"__name_attr_string\" value=\"attr_also_overridden\"/>\n<attribute name=\"attr_another_string\" value=\"something else\"/>\n<attribute name=\"__full_name_attr_another_string\" value=\"fully_overridden\"/>\n</feature>\n</extendedConfiguration>\n
application: true\nfeature_a: true\nfeature_a_attr_bool_true: true\nfeature_a_attr_bool_false: false\nfeature_a_attr_long: 3\nfeature_a_attr_double: 2.5\nfeature_a_attr_string: 'hello world'\nfeature_b: false\nfeature_overridden: true\nfeature_d: true\nfeature_d_attr_overridden: 1\nfeature_another_overridden: true\nfeature_another_overridden_attr_double: 1337\nfeature_another_overridden_attr_also_overridden: something\nfully_overridden: something else\n
To run the transformation using our reference implementation, run the following command.
vintner template inputs --path path/to/my-inputs.xml --output result.yaml\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/","title":"Testing","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#variability4tosca-testing-10-release-candidate","title":"Variability4TOSCA Testing 1.0 Release Candidate","text":"This document specifies variability tests for the Variability4TOSCA specification to continuously test that the variability is resolved as expected, e.g., during continuous integration pipelines or before importing the CSAR. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#variability-tests","title":"Variability Tests","text":"A CSAR might contain variability tests. Therefore, add the directory /tests
in the root of the CSAR. Each test is defined inside its own directory of /tests
and might contain the following files.
expected.yaml
The expected service template after resolving variability. inputs.yaml
The variability inputs used for resolving variability. test.yaml
The test configuration. Here is an exemplary structure of a CSAR that has one variability test.
<CSAR Name>/\n\u251c\u2500 tests/\n\u2502 \u251c\u2500 <Test Name>/\n\u2502 \u2502 \u251c\u2500 expected.yaml\n\u2502 \u2502 \u251c\u2500 inputs.yaml\n\u2502 \u2502 \u251c\u2500 test.yaml\n\u251c\u2500 service-template.yaml\n
The following configurations can be configured in the test configuration file.
Keyname Mandatory Type Description name false String Display name of the test case (default is the directory name). description false String Description of the test case. presets false String | List(String) Variability presets to use when resolving variability. error false String The expected error that is thrown. template false String Path (relative totest.yaml
) to the variable service template. expected false String Path (relative to test.yaml
) to the expected service template after resolving variability. inputs false String Path (relative to test.yaml
) to the variability inputs. replace false List(Tuple(Find: String, Replace: String)) An optional list of strings to search and replace for in the generated service template. merge false Object An optional object that is merged into the expected service template. There are the following special cases considering test directory names.
.
are ignored.---only
to a test directory to run only this specific test.---disabled
to a test directory to disable a specific test.The following service template contains two conditional nodes. A variability inputs decides which node should be present.
/my-testing-csar/service-template.yamltosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: tosca.nodes.Root\nconditions: {equal: [{variability_input: mode}, one]}\nnode_two:\ntype: tosca.nodes.Root\nconditions: {equal: [{variability_input: mode}, two]}\n
We specify the following test in which we expect that only the first node is present after resolving variability.
/my-testing-csar/my-test/test.yamlname: My Test\ndescriptions: | This tests is a simple example.\nWe expect the following: \n- First node is preserved\n- Second node is removed\n
The following inputs are used.
/my-testing-csar/my-test/inputs.yamlmode: one\n
We expect the following service template.
/my-testing-csar/my-test/expected.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: tosca.nodes.Root\n
To execute the test using our reference implementation, run the following command.
vintner template test --path path/to/my-testing-csar/\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/guides/artifacts/","title":"Conditional Deployment Artifacts and Conditional Properties","text":"This document holds a detailed step-by-step guide to deploy the enterprise plan of a web shop application to showcase conditional deployment artifacts and conditional properties, as presented in Figure 1. The motivating scenario is a simple shopping application that consists of a shop component and a database. Thereby, we take the role of a SaaS provider which offers different pricing plans to his customers. Furthermore, there are two different deployment artifacts: the community deployment artifact and the enterprise deployment artifact. The community deployment artifact implements the core functionality of the shop component whereas the enterprise deployment artifact additionally implements analytical reporting functionalities.
There is a free community plan that deploys the community deployment artifact along with SQLite on a small virtual machine. In contrast, the business plan is a paid plan that deploys the enterprise deployment artifact which contains analytical reporting functionalities along with MySQL on Google Cloud Platform (GCP). However, to have full access to all analytical reporting functionalities, the enterprise plan is required. An important aspect of the deployment of the shop component is that the correct SQL dialect must be configured.
Figure 1: The different deployment variants.","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#requirements","title":"Requirements","text":"
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure Unfurl as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the template and initialize an instance.
vintner templates import --template artifacts --path examples/unfurl-artifacts\n
Next, we initialize an application instance.
vintner instances init --instance artifacts --template artifacts\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. For example, the MySQL database has a condition assigned that checks if the enterprise deployment artifact is present. An overview is given in Figure 2.
vintner templates inspect --template artifacts\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the enterprise plan. Furthermore, we want to configure the display language of the shop component to be German. We specify this when resolving variability.
vintner instances resolve --instance artifacts --presets enterprise\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the elements required for the enterprise plan. Notably, the enterprise deployment artifacts is present and configured to use the MySQL dialect. An overview is given in Figure 3.
vintner instances inspect --instance artifacts\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#deploy-the-application","title":"Deploy the Application","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to GCP. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take around 15-20 minutes.
vintner instances deploy --instance artifacts --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance artifacts\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#complexity-analysis","title":"Complexity Analysis","text":"The templates for our complexity analysis can be found here.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Artifacts\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#publication","title":"Publication","text":"This guide is part of our research paper published at the main track of the CoopIS 2023. Also, this guide is further extended by our demonstration paper which was published at the demo track at the CoopIS 2023. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/aware/","title":"Hosting-Aware Pruning","text":"This document holds the step-by-step guide to deploy the on-premise deployment variant of a webshop application to showcase the hosting-aware pruning. The webshop application can be deployed in the following deployment variants.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we install Unfurl.
vintner install unfurl\n
Next, we configure Unfurl as the orchestrator that should be used for the deployment.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
Next, we attest that Vintner can use unfurl.
vintner orchestrators attest --orchestrator unfurl\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#import-the-template","title":"Import the Template","text":"Figure 1: The Variability4TOSCA model. Next, we import the Variability4TOSCA template.
vintner templates import --template aware --path examples/unfurl-aware\n
Then, we initialize an application instance.
vintner instances init --instance aware --template aware\n
We can optionally inspect the Variability4TOSCA model. This model contains all possible elements having conditions assigned. However, due to the hosting-aware pruning, only a handful of condition must be modeled. This is shown in Figure 1.
vintner templates inspect --template aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#resolve-variability","title":"Resolve Variability","text":"Figure 2: The derived TOSCA model. We want to deploy the on-premise variant of the webshop application on Kubernetes using OpenStack. We specify this when resolving variability as follows.
vintner instances resolve --instance aware --presets local\n
You can optionally inspect the generated TOSCA-compliant model. This template contains only the elements required for the on-premise variant, e.g., Kubernetes. This is shown in Figure 2.
vintner instances inspect --instance aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#deploy-the-application","title":"Deploy the Application","text":"Finally, we can deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to OpenStack. These inputs are specified in topology_template.inputs
of the TOSCA-compliant model. The following inputs must be defined.
os_compute_network: <OS_COMPUTE_NETWORK>\nos_compute_key_name: <OS_COMPUTE_KEY_NAME>\nos_compute_ssh_user: <OS_COMPUTE_SSH_USER>\nos_compute_ssh_key_file: <OS_COMPUTE_SSH_KEY_FILE>\nos_region_name: <OS_REGION_NAME>\nos_auth_type: <OS_AUTH_TYPE>\nos_auth_url: <OS_AUTH_URL>\nos_identity_api_version: <OS_IDENTITY_API_VERSION>\nos_interface: <OS_INTERFACE>\nos_application_credential_id: <OS_APPLICATION_CREDENTIAL_ID>\nos_application_credential_secret: <OS_APPLICATION_CREDENTIAL_SECRET>\n# Also required. Just fill them with dummy values.\ndatabase_password: <DATABASE_PASSWORD>\ngcp_region: <GCP_REGION>\ngcp_service_account_file: <GCP_SERVICE_ACCOUNT_FILE>\ngcp_project: <GCP_PROJECT>\ngcp_auto_scaling: <GCP_AUTO_SCALING>\n
Next, we start the deployment. The deployment will take around 5-10 minutes.
vintner instances deploy --instance aware --inputs ${INPUTS_PATH}\n
Do not abort the deployment manually. Not even in case of errors. Once the deployment command exits, the deployment can be retried as follows.
vintner instances continue --instance aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#test-the-application","title":"Test the Application","text":"Next, we can test that the application is correctly working. Therefore, find out the hostname of the provisioned virtual machine.
curl --fail-with-body http://${HOSTNAME_OF_VM}\n
If no hostname has been assigned, then use the IPv4 address.
curl --fail-with-body http://[${IPv4_ADDRESS_OF_VM}]\n
This should return the following.
{\n\"MESSAGE\": \"Successfully executed query\",\n\"QUERY\": \"SELECT 1 + 1;\",\n\"DB_DIALECT\": \"mysql\",\n\"DB_NAME\": \"shop\",\n\"DB_ADDRESS\": \"mysql\",\n\"DB_USERNAME\": \"root\",\n\"DB_PASSWORD\": \"5e88\"\n}\n
We can observe the following.
MESSAGE
, the query has been successfulDB_ADDRESS
, the MySQL instance running in Kubernetes has been usedThus, we conclude that the application has been deployed as desired.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance aware\n
We can also optionally remove the instance or cleanup the filesystem. Note, cleaning up the filesystem removes any vintner data including, e.g., all imported templates and created instances.
vintner instances delete --instance aware\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Aware\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#publication","title":"Publication","text":"This guide is part of our paper published at the CLOSER 2024. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/modes/","title":"Pruning Modes","text":"This document holds a detailed step-by-step guide to deploy the medium-sized static deployment variant of a webshop application to showcase the Consistent-Loose Pruning Mode. The webshop application can be deployed in the following deployment variants.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, install xOpera.
vintner setup install --xopera\n
Next, we configure xOpera as the orchestrator that should be used for the deployment.
vintner orchestrators init xopera --no-venv\nvintner orchestrators enable --orchestrator xopera\nvintner orchestrators attest --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#import-the-template","title":"Import the Template","text":"Figure 1: The Variability4TOSCA model of our webshop. First, we import the Variability4TOSCA template.
vintner templates import --template pruning-mode --path examples/xopera-pruning-consistent-loose\n
Then, we initialize an application instance.
vintner instances init --instance pruning-mode --template pruning-mode\n
We can optionally inspect the Variability4TOSCA model. This model contains all possible elements having conditions assigned. However, due to pruning, only a handful of condition must be modeled, e.g., the condition checking if a medium or large virtual machine is required. This is shown in Figure 1.
vintner templates inspect --template pruning-mode\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#resolve-variability","title":"Resolve Variability","text":"Figure 2: The medium-sized static deployment variant of the webshop. We want to deploy the medium-sized static variant of the webshop application using GCP. We specify this when resolving variability as follows.
vintner instances resolve --instance pruning-mode --presets static\n
You can optionally inspect the generated TOSCA-compliant model. This template contains only the elements required for the elastic variant, e.g., the MySQL database. This is shown in Figure 2.
vintner instances inspect --instance pruning-mode\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#deploy-the-application","title":"Deploy the Application","text":"Finally, we can deploy the elastic variant. Therefore, we need to provide deployment inputs, e.g., credentials to OpenStack. These inputs are specified in topology_template.inputs
of the TOSCA-compliant model. The following inputs must be defined.
os_compute_network: <OS_COMPUTE_NETWORK>\nos_compute_security_groups: <OS_COMPUTE_SECURITY_GROUPS>\nos_compute_key_name: <OS_COMPUTE_KEY_NAME>\nos_compute_ssh_user: <OS_COMPUTE_SSH_USER>\nos_compute_ssh_key_file: <OS_COMPUTE_SSH_KEY_FILE>\nos_region_name: <OS_REGION_NAME>\nos_auth_type: <OS_AUTH_TYPE>\nos_auth_url: <OS_AUTH_URL>\nos_identity_api_version: <OS_IDENTITY_API_VERSION>\nos_interface: <OS_INTERFACE>\nos_application_credential_id: <OS_APPLICATION_CREDENTIAL_ID>\nos_application_credential_secret: <OS_APPLICATION_CREDENTIAL_SECRET>\n# Also required. Just fill them with dummy values.\ndatabase_password: <DATABASE_PASSWORD>\ngcp_region: <GCP_REGION>\ngcp_service_account_file: <GCP_SERVICE_ACCOUNT_FILE>\ngcp_project: <GCP_PROJECT>\ngcp_auto_scaling: <GCP_AUTO_SCALING>\n
Next, start the deployment. The deployment will take around 5 minutes.
vintner instances deploy --instance pruning-mode --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#test-the-application","title":"Test the Application","text":"Next, we can test that the application is correctly working. Therefore, find out the hostname of the provisioned virtual machine.
curl --fail-with-body http://${HOSTNAME_OF_VM}:3000\n
If no hostname has been assigned, then use the IPv4 address.
curl --fail-with-body http://[${IPv4_ADDRESS_OF_VM}]:3000\n
This should return the following.
{\n\"MESSAGE\": \"Successfully executed query\",\n\"QUERY\": \"SELECT 1 + 1;\",\n\"DB_DIALECT\": \"sqlite\",\n\"DB_NAME\": \"shop\",\n\"DB_ADDRESS\": \"/var/lib/sqlite-databases/shop.db\",\n\"DB_USERNAME\": \"root\",\n\"DB_PASSWORD\": \"5e88\"\n}\n
We can observe the following.
MESSAGE
, the query has been successfulDB_DIALECT
, the SQLite has been used as dialectDB_ADDRESS
, a local SQLite database has been usedThus, we conclude that the application has been deployed as desired.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance pruning-mode\n
We can also optionally remove the instance or cleanup the filesystem. Note, cleaning up the filesystem removes any vintner data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning-mode\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"xOpera Pruning Mode\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#publication","title":"Publication","text":"This guide is part of our paper published at the CLOSER 2024. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/pipes-and-filters/","title":"Pipes and Filters Application","text":"Warning
This document presents experimental features and is still in an early stage.
In the following, we provide a detailed step-by-step guide to deploy the Raspberry Pi variant of the pipes-and-filters application to showcase conditional deployment artifacts and properties. The application can be either installed on a Raspberry Pi or on a virtual machine. Based on the underlying host, either an arm64 or x64 binary must be used. The application is also differently configured due to the different availability of RAM.
Figure 1: Deployment Variant using Raspberry Pi
Figure 2: Deployment Variant using Virtual Machine","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#environment","title":"Environment","text":"
We expect that the xOpera CLI is installed on a Linux machine and that a Raspberry Pi 3 Model B+ is available.
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#preparation","title":"Preparation","text":"First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we need to configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#deployment","title":"Deployment","text":"Deploy the Raspberry Pi variant of the pipes-and-filters application. Therefore, import the template, create an instance, resolve the variability and finally deploy the application.
# Add variable service template\nvintner templates import --template pipes-and-filters --path examples/xopera-pipes-and-filters\n\n# Add instance\nvintner instances init --instance pipes-and-filters --template pipes-and-filters\n\n# Resolve variability\nvintner instances resolve --instance pipes-and-filters --presets raspberry\n\n# (optional) Inspect service template\nvintner instances inspect --instance pipes-and-filters\n\n# Deploy instance\nvintner instances deploy --instance pipes-and-filters --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#undeployment","title":"Undeployment","text":"Cleanup the deployment. Therefore, undeploy the instance and cleanup the filesystem.
# Undeploy instance\nvintner instances undeploy --instance pipes-and-filters\n\n# Cleanup\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pruning/","title":"Pruning Elements","text":"Figure 1: The different deployment variants. This document holds a detailed step-by-step guide to deploy the elastic deployment variant of a web shop application to showcase the reduced modeling effort when pruning elements. The application can be deployed in the following deployment variants, see Figure 1.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template pruning --path examples/xopera-pruning\n
Next, we initialize an application instance.
vintner instances init --instance pruning --template pruning\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. However, due to pruning, only a handful of condition must be modeled, e.g., the condition checking if a medium or large virtual machine is required. An overview is given in Figure 2.
vintner templates inspect --template pruning\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the elastic variant. We specify this when resolving variability.
vintner instances resolve --instance pruning --presets elastic\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the elements required for the elastic variant, e.g., the MySQL database. An overview is given in Figure 3.
vintner instances inspect --instance pruning\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#deploy-the-application","title":"Deploy the Application","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to GCP. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take around 15-20 minutes.
vintner instances deploy --instance pruning --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we undeploy the application.
vintner instances undeploy --instance pruning\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#complexity-analysis","title":"Complexity Analysis","text":"The templates for our complexity analysis can be found here.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Artifacts\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#publication","title":"Publication","text":"This guide is part of our paper published at the UCC 2023. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/motivation/","title":"Motivation","text":"Figure 1: The different deployment variants.This document holds a detailed step-by-step guide to deploy the development variant of the motivating scenario. The motivating scenario is a simple composite application that consists of a web component and a database, as presented in Figure 1.
This application can be deployed in different variants. During development the application should be deployed on a single virtual machine. However, for the productive operation, an elastic deployment is required and, therefore, the application is deployed on Google Cloud Platform (GCP).
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#requirements","title":"Requirements","text":"We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template motivation --path examples/motivation\n
Next, we initialize an application instance.
vintner instances init --instance motivation --template motivation\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. For example, the virtual machine hosted on OpenStack has a condition assigned that checks if the development variant has been chosen. An overview is given in Figure 2.
vintner templates inspect --template motivation\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the development variant. Therefore, we need to resolve the variability by providing respective variability inputs. In our case, we use already predefined variability inputs by using a variability preset.
vintner instances resolve --instance motivation --presets dev\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the nodes required for the development variant. An overview is given in Figure 3.
vintner instances inspect --instance motivation\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#deployment","title":"Deployment","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs which contain, e.g., credentials to OpenStack. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take some minutes.
vintner instances deploy --instance motivation --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#undeployment","title":"Undeployment","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance motivation\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Motivation\" and \"xOpera Motivation\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#publication","title":"Publication","text":"This guide is part of our paper published at the Algorithms 2022. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/rules/","title":"Technology Rules","text":"","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technology-rules-specification-10-release-candidate","title":"Deployment Technology Rules Specification 1.0 Release Candidate","text":"Quick Tip #1
Elements in graphs can be clicked to open their type definition!
Quick Tip #2
You can query technology rules for your deployment scenario using vintner utils scenarios
!
This document specifies the deployment technology rules. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technologies","title":"Deployment Technologies","text":"Technology rules are defined in the context of the following deployment technologies.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#ansible","title":"Ansible","text":"Ansible is an open-source automation tool primarily used for configuration management, application deployment, and task automation. It allows IT administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Its main purpose is to simplify the management of software configurations, reduce manual effort, and ensure consistency and reliability in IT operations, making it an ideal tool for automating repetitive tasks and orchestrating complex workflows across diverse environments. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#terraform","title":"Terraform","text":"Terraform is an open-source infrastructure as code (IaC) tool developed by HashiCorp that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL) or JSON, Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs, making it a powerful tool for automating infrastructure deployment, scaling, and version control. However, Terraform is specifically designed for managing infrastructure and is not intended for managing software on remote targets, which is outside its primary scope. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#kubernetes","title":"Kubernetes","text":"Kubernetes, also known as K8s, is an open-source system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a robust platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications, making it a critical tool for modern software delivery and operational efficiency. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#docker-compose","title":"Docker Compose","text":"Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It streamlines the management of complex applications by simplifying the control of services, networks, and volumes, allowing developers to manage the entire stack effortlessly. Compose is particularly suited for development, testing, and single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem, as it only deploys on Docker Engine, making it an ideal choice for those heavily invested in Docker-based workflows. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#derivation-rules","title":"Derivation Rules","text":"We use the following derivation rules to assess deployment qualities.
software.application
vs service.application
.The following scenarios deploy a node template of node type docker.engine with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type docker.engine is deployed. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(docker.engine)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type docker.engine is deployed. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(docker.engine)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-gcpservice","title":"Component \"gcp.service\"","text":"The following scenarios deploy a node template of node type gcp.service with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_1","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type gcp.service is deployed. The scenario does not require a specific hosting.
component(gcp.service)
Ansible (Quality: 1)
Ansible provides a declarative module
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-ingress","title":"Component \"ingress\"","text":"The following scenarios deploy a node template of node type ingress with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_2","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(ingress)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_1","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(ingress)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(ingress)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-mysqldatabase","title":"Component \"mysql.database\"","text":"The following scenarios deploy a node template of node type mysql.database with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_3","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type local.machine.
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_2","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type remote.machine.
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_1","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type gcp.cloudsql.
component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost
Ansible (Quality: 0.5)
Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type kubernetes.cluster.
component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Kubernetes (Quality: 0)
Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.
Terraform (Quality: 0)
Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type local.machine.
component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type remote.machine.
component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-mysqldbms","title":"Component \"mysql.dbms\"","text":"The following scenarios deploy a node template of node type mysql.dbms with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_4","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_3","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_2","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type gcp.cloudsql.
component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_1","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_1","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_1","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-objectstorage","title":"Component \"object.storage\"","text":"The following scenarios deploy a node template of node type object.storage with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_5","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type gcp.cloudstorage.
component(object.storage)host 1(gcp.cloudstorage)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_4","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type local.machine.
component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_3","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type remote.machine.
component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_2","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type kubernetes.cluster.
component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Kubernetes (Quality: 0)
Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.
Terraform (Quality: 0)
Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-redisserver","title":"Component \"redis.server\"","text":"The following scenarios deploy a node template of node type redis.server with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_6","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_5","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_4","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type gcp.memorystore.
component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_3","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-serviceapplication","title":"Component \"service.application\"","text":"The following scenarios deploy a node template of node type service.application with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_7","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_6","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_5","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type gcp.cloudrun.
component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host
Ansible (Quality: 0)
Custom module with imperative parts, while Terraform provides a declarative module.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_4","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_2","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_2","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-7","title":"Scenario #7","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-8","title":"Scenario #8","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-9","title":"Scenario #9","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on the node template \"host 1\" of node type gcp.appengine.
component(service.application)artifact(zip.archive)host 1(gcp.appengine)host
Ansible (Quality: 0)
Custom module with imperative parts, while Terraform provides a declarative module.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-softwareapplication","title":"Component \"software.application\"","text":"The following scenarios deploy a node template of node type software.application with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_8","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type apt.package. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(apt.package)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_7","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type apt.package. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_6","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_5","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\".
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_3","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_3","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-virtualmachine","title":"Component \"virtual.machine\"","text":"The following scenarios deploy a node template of node type virtual.machine with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_9","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type virtual.machine is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type machine.image. The node template is hosted on the node template \"host 1\" of node type openstack.provider.
component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host
Ansible (Quality: 0.5)
Terraform is more specialized.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#appendix-a-rules","title":"Appendix A \"Rules\"","text":"This appendix contains the deployment technology rules.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-1","title":"Rule #1","text":"Attribute Value Identifier docker.engine::ansible@local.machine Component docker.engine Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks Graph component(docker.engine)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-2","title":"Rule #2","text":"Attribute Value Identifier docker.engine::terraform@local.machine Component docker.engine Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local-exec\" provider Graph component(docker.engine)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-3","title":"Rule #3","text":"Attribute Value Identifier docker.engine::ansible@remote.machine Component docker.engine Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks Graph component(docker.engine)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-4","title":"Rule #4","text":"Attribute Value Identifier docker.engine::terraform@remote.machine Component docker.engine Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"remote-exec\" provider Graph component(docker.engine)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-5","title":"Rule #5","text":"Attribute Value Identifier gcp.service::ansible Component gcp.service Technology ansible Quality 1 Reason Ansible provides a declarative module Details \"google.cloud.gcp_serviceusage_service\" task Graph component(gcp.service)","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-6","title":"Rule #6","text":"Attribute Value Identifier gcp.service::terraform Component gcp.service Technology terraform Quality 1 Reason Terraform provides a declarative module. Details \"google_project_service\" resource Graph component(gcp.service)","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-7","title":"Rule #7","text":"Attribute Value Identifier ingress::ansible@kubernetes.cluster Component ingress Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" task Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-8","title":"Rule #8","text":"Attribute Value Identifier ingress::kubernetes@kubernetes.cluster Component ingress Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-9","title":"Rule #9","text":"Attribute Value Identifier ingress::terraform@kubernetes.cluster Component ingress Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_service_v1\" resource Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-10","title":"Rule #10","text":"Attribute Value Identifier ingress::ansible@local.machine Component ingress Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks Graph component(ingress)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-11","title":"Rule #11","text":"Attribute Value Identifier ingress::terraform@local.machine Component ingress Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner Graph component(ingress)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-12","title":"Rule #12","text":"Attribute Value Identifier ingress::ansible@remote.machine Component ingress Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks Graph component(ingress)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-13","title":"Rule #13","text":"Attribute Value Identifier ingress::terraform@remote.machine Component ingress Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner Graph component(ingress)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-14","title":"Rule #14","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->docker.engine->local.machine Component mysql.database Technology ansible Hosting mysql.dbms -> docker.engine -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-15","title":"Rule #15","text":"Attribute Value Identifier mysql.database::compose@mysql.dbms->docker.engine->local.machine Component mysql.database Technology compose Hosting mysql.dbms -> docker.engine -> local.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-16","title":"Rule #16","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->docker.engine->local.machine Component mysql.database Technology terraform Hosting mysql.dbms -> docker.engine -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-17","title":"Rule #17","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology ansible Hosting mysql.dbms -> docker.engine -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-18","title":"Rule #18","text":"Attribute Value Identifier mysql.database::compose@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology compose Hosting mysql.dbms -> docker.engine -> remote.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-19","title":"Rule #19","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology terraform Hosting mysql.dbms -> docker.engine -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-20","title":"Rule #20","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->gcp.cloudsql Component mysql.database Technology ansible Hosting mysql.dbms -> gcp.cloudsql Quality 0.5 Reason Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-21","title":"Rule #21","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->gcp.cloudsql Component mysql.database Technology terraform Hosting mysql.dbms -> gcp.cloudsql Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-22","title":"Rule #22","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->kubernetes.cluster Component mysql.database Technology ansible Hosting mysql.dbms -> kubernetes.cluster Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-23","title":"Rule #23","text":"Attribute Value Identifier mysql.database::kubernetes@mysql.dbms->kubernetes.cluster Component mysql.database Technology kubernetes Hosting mysql.dbms -> kubernetes.cluster Quality 0 Reason Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-24","title":"Rule #24","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->kubernetes.cluster Component mysql.database Technology terraform Hosting mysql.dbms -> kubernetes.cluster Quality 0 Reason Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-25","title":"Rule #25","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->local.machine Component mysql.database Technology ansible Hosting mysql.dbms -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-26","title":"Rule #26","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->local.machine Component mysql.database Technology terraform Hosting mysql.dbms -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-27","title":"Rule #27","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->remote.machine Component mysql.database Technology ansible Hosting mysql.dbms -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-28","title":"Rule #28","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->remote.machine Component mysql.database Technology terraform Hosting mysql.dbms -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-29","title":"Rule #29","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized Details \"community.docker.docker_container\" task Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-30","title":"Rule #30","text":"Attribute Value Identifier mysql.dbms#dbms.image::compose@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker-compose manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-31","title":"Rule #31","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-32","title":"Rule #32","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized Details \"community.docker.docker_container\" task Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-33","title":"Rule #33","text":"Attribute Value Identifier mysql.dbms#dbms.image::compose@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker-compose manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-34","title":"Rule #34","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-35","title":"Rule #35","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@gcp.cloudsql Component mysql.dbms Artifact dbms.image Technology ansible Hosting gcp.cloudsql Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"google.cloud.gcp_sql_instance\" and \"google.cloud.gcp_sql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-36","title":"Rule #36","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@gcp.cloudsql Component mysql.dbms Artifact dbms.image Technology terraform Hosting gcp.cloudsql Quality 1 Reason Terraform provides a declarative module. Details \"google_sql_database_instance\" and \"google_sql_user\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-37","title":"Rule #37","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-38","title":"Rule #38","text":"Attribute Value Identifier mysql.dbms#dbms.image::kubernetes@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-39","title":"Rule #39","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-40","title":"Rule #40","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@local.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-41","title":"Rule #41","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@local.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner Graph component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-42","title":"Rule #42","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@remote.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-43","title":"Rule #43","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@remote.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner Graph component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-44","title":"Rule #44","text":"Attribute Value Identifier object.storage::ansible@gcp.cloudstorage Component object.storage Technology ansible Hosting gcp.cloudstorage Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(gcp.cloudstorage)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-45","title":"Rule #45","text":"Attribute Value Identifier object.storage::terraform@gcp.cloudstorage Component object.storage Technology terraform Hosting gcp.cloudstorage Quality 1 Reason Terraform provides a declarative module. Details Graph component(object.storage)host 1(gcp.cloudstorage)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-46","title":"Rule #46","text":"Attribute Value Identifier object.storage::ansible@minio.server->docker.engine->local.machine Component object.storage Technology ansible Hosting minio.server -> docker.engine -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-47","title":"Rule #47","text":"Attribute Value Identifier object.storage::compose@minio.server->docker.engine->local.machine Component object.storage Technology compose Hosting minio.server -> docker.engine -> local.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-48","title":"Rule #48","text":"Attribute Value Identifier object.storage::terraform@minio.server->docker.engine->local.machine Component object.storage Technology terraform Hosting minio.server -> docker.engine -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-49","title":"Rule #49","text":"Attribute Value Identifier object.storage::ansible@minio.server->docker.engine->remote.machine Component object.storage Technology ansible Hosting minio.server -> docker.engine -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-50","title":"Rule #50","text":"Attribute Value Identifier object.storage::compose@minio.server->docker.engine->remote.machine Component object.storage Technology compose Hosting minio.server -> docker.engine -> remote.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-51","title":"Rule #51","text":"Attribute Value Identifier object.storage::terraform@minio.server->docker.engine->remote.machine Component object.storage Technology terraform Hosting minio.server -> docker.engine -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-52","title":"Rule #52","text":"Attribute Value Identifier object.storage::ansible@minio.server->kubernetes.cluster Component object.storage Technology ansible Hosting minio.server -> kubernetes.cluster Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-53","title":"Rule #53","text":"Attribute Value Identifier object.storage::kubernetes@minio.server->kubernetes.cluster Component object.storage Technology kubernetes Hosting minio.server -> kubernetes.cluster Quality 0 Reason Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-54","title":"Rule #54","text":"Attribute Value Identifier object.storage::terraform@minio.server->kubernetes.cluster Component object.storage Technology terraform Hosting minio.server -> kubernetes.cluster Quality 0 Reason Ansible is more specialized. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-55","title":"Rule #55","text":"Attribute Value Identifier redis.server#cache.image::ansible@docker.engine->local.machine Component redis.server Artifact cache.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-56","title":"Rule #56","text":"Attribute Value Identifier redis.server#cache.image::compose@docker.engine->local.machine Component redis.server Artifact cache.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-57","title":"Rule #57","text":"Attribute Value Identifier redis.server#cache.image::terraform@docker.engine->local.machine Component redis.server Artifact cache.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-58","title":"Rule #58","text":"Attribute Value Identifier redis.server#cache.image::ansible@docker.engine->remote.machine Component redis.server Artifact cache.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-59","title":"Rule #59","text":"Attribute Value Identifier redis.server#cache.image::compose@docker.engine->remote.machine Component redis.server Artifact cache.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-60","title":"Rule #60","text":"Attribute Value Identifier redis.server#cache.image::terraform@docker.engine->remote.machine Component redis.server Artifact cache.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-61","title":"Rule #61","text":"Attribute Value Identifier redis.server#cache.image::ansible@gcp.memorystore Component redis.server Artifact cache.image Technology ansible Hosting gcp.memorystore Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-62","title":"Rule #62","text":"Attribute Value Identifier redis.server#cache.image::terraform@gcp.memorystore Component redis.server Artifact cache.image Technology terraform Hosting gcp.memorystore Quality 1 Reason Terraform provides a declarative module. Details Graph component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-63","title":"Rule #63","text":"Attribute Value Identifier redis.server#cache.image::ansible@kubernetes.cluster Component redis.server Artifact cache.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-64","title":"Rule #64","text":"Attribute Value Identifier redis.server#cache.image::kubernetes@kubernetes.cluster Component redis.server Artifact cache.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-65","title":"Rule #65","text":"Attribute Value Identifier redis.server#cache.image::terraform@kubernetes.cluster Component redis.server Artifact cache.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-66","title":"Rule #66","text":"Attribute Value Identifier service.application#docker.image::ansible@docker.engine->local.machine Component service.application Artifact docker.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-67","title":"Rule #67","text":"Attribute Value Identifier service.application#docker.image::compose@docker.engine->local.machine Component service.application Artifact docker.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-68","title":"Rule #68","text":"Attribute Value Identifier service.application#docker.image::terraform@docker.engine->local.machine Component service.application Artifact docker.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-69","title":"Rule #69","text":"Attribute Value Identifier service.application#docker.image::ansible@docker.engine->remote.machine Component service.application Artifact docker.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-70","title":"Rule #70","text":"Attribute Value Identifier service.application#docker.image::compose@docker.engine->remote.machine Component service.application Artifact docker.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-71","title":"Rule #71","text":"Attribute Value Identifier service.application#docker.image::terraform@docker.engine->remote.machine Component service.application Artifact docker.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-72","title":"Rule #72","text":"Attribute Value Identifier service.application#docker.image::ansible@gcp.cloudrun Component service.application Artifact docker.image Technology ansible Hosting gcp.cloudrun Quality 0 Reason Custom module with imperative parts, while Terraform provides a declarative module. Details \"ansible.builtin.shell\", \"ansible.builtin.tempfile\", and \"ansible.builtin.copy\" tasks Graph component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-73","title":"Rule #73","text":"Attribute Value Identifier service.application#docker.image::terraform@gcp.cloudrun Component service.application Artifact docker.image Technology terraform Hosting gcp.cloudrun Quality 1 Reason Terraform provides a declarative module. Details \"google_cloud_run_v2_service\" and \"google_cloud_run_service_iam_binding\" resources Graph component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-74","title":"Rule #74","text":"Attribute Value Identifier service.application#docker.image::ansible@kubernetes.cluster Component service.application Artifact docker.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" tasks Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-75","title":"Rule #75","text":"Attribute Value Identifier service.application#docker.image::kubernetes@kubernetes.cluster Component service.application Artifact docker.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-76","title":"Rule #76","text":"Attribute Value Identifier service.application#docker.image::terraform@kubernetes.cluster Component service.application Artifact docker.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-77","title":"Rule #77","text":"Attribute Value Identifier service.application#tar.archive::ansible@*->local.machine Component service.application Artifact tar.archive Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-78","title":"Rule #78","text":"Attribute Value Identifier service.application#tar.archive::terraform@*->local.machine Component service.application Artifact tar.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-79","title":"Rule #79","text":"Attribute Value Identifier service.application#tar.archive::ansible@*->remote.machine Component service.application Artifact tar.archive Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-80","title":"Rule #80","text":"Attribute Value Identifier service.application#tar.archive::terraform@*->remote.machine Component service.application Artifact tar.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-81","title":"Rule #81","text":"Attribute Value Identifier service.application#zip.archive::ansible@*->local.machine Component service.application Artifact zip.archive Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-82","title":"Rule #82","text":"Attribute Value Identifier service.application#zip.archive::terraform@*->local.machine Component service.application Artifact zip.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-83","title":"Rule #83","text":"Attribute Value Identifier service.application#zip.archive::ansible@*->remote.machine Component service.application Artifact zip.archive Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-84","title":"Rule #84","text":"Attribute Value Identifier service.application#zip.archive::terraform@*->remote.machine Component service.application Artifact zip.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-85","title":"Rule #85","text":"Attribute Value Identifier service.application#zip.archive::ansible@gcp.appengine Component service.application Artifact zip.archive Technology ansible Hosting gcp.appengine Quality 0 Reason Custom module with imperative parts, while Terraform provides a declarative module. Details \"ansible.builtin.shell\", \"ansible.builtin.tempfile\", \"ansible.builtin.unarchive\", and \"ansible.builtin.copy\" tasks Graph component(service.application)artifact(zip.archive)host 1(gcp.appengine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-86","title":"Rule #86","text":"Attribute Value Identifier service.application#zip.archive::terraform@gcp.appengine Component service.application Artifact zip.archive Technology terraform Hosting gcp.appengine Quality 1 Reason Terraform provides a declarative module. Details \"google_app_engine_standard_app_version\", \"google_project_iam_member\", \"google_service_account\", \"google_storage_bucket\", and \"google_storage_bucket_object\" resources Graph component(service.application)artifact(zip.archive)host 1(gcp.appengine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-87","title":"Rule #87","text":"Attribute Value Identifier software.application#apt.package::ansible@*->local.machine Component software.application Artifact apt.package Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements Graph component(software.application)artifact(apt.package)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-88","title":"Rule #88","text":"Attribute Value Identifier software.application#apt.package::terraform@*->local.machine Component software.application Artifact apt.package Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts Graph component(software.application)artifact(apt.package)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-89","title":"Rule #89","text":"Attribute Value Identifier software.application#apt.package::ansible@*->remote.machine Component software.application Artifact apt.package Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements Graph component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-90","title":"Rule #90","text":"Attribute Value Identifier software.application#apt.package::terraform@*->remote.machine Component software.application Artifact apt.package Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-91","title":"Rule #91","text":"Attribute Value Identifier software.application#tar.archive::ansible@*->local.machine Component software.application Artifact tar.archive Technology ansible Hosting * -> local.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-92","title":"Rule #92","text":"Attribute Value Identifier software.application#tar.archive::terraform@*->local.machine Component software.application Artifact tar.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts Graph component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-93","title":"Rule #93","text":"Attribute Value Identifier software.application#tar.archive::ansible@*->remote.machine Component software.application Artifact tar.archive Technology ansible Hosting * -> remote.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\". Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-94","title":"Rule #94","text":"Attribute Value Identifier software.application#tar.archive::terraform@*->remote.machine Component software.application Artifact tar.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-95","title":"Rule #95","text":"Attribute Value Identifier software.application#zip.archive::ansible@*->local.machine Component software.application Artifact zip.archive Technology ansible Hosting * -> local.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-96","title":"Rule #96","text":"Attribute Value Identifier software.application#zip.archive::terraform@*->local.machine Component software.application Artifact zip.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-97","title":"Rule #97","text":"Attribute Value Identifier software.application#zip.archive::ansible@*->remote.machine Component software.application Artifact zip.archive Technology ansible Hosting * -> remote.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-98","title":"Rule #98","text":"Attribute Value Identifier software.application#zip.archive::terraform@*->remote.machine Component software.application Artifact zip.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-99","title":"Rule #99","text":"Attribute Value Identifier virtual.machine#machine.image::ansible@openstack.provider Component virtual.machine Artifact machine.image Technology ansible Hosting openstack.provider Quality 0.5 Reason Terraform is more specialized. Details \"openstack.cloud.security_group\", \"openstack.cloud.security_group_rule\" and \"openstack.cloud.server\" tasks Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-100","title":"Rule #100","text":"Attribute Value Identifier virtual.machine#machine.image::terraform@openstack.provider Component virtual.machine Artifact machine.image Technology terraform Hosting openstack.provider Quality 1 Reason Terraform provides a declarative module. Details \"openstack_compute_instance_v2\", \"openstack_networking_secgroup_rule_v2\" and \"openstack_networking_secgroup_v2\" resources Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#appendix-b-yaml","title":"Appendix B \"YAML\"","text":"This appendix contains the deployment technology rules as YAML. The rules are also available as download.
- technology: ansible\ncomponent: docker.engine\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks'\n- technology: terraform\ncomponent: docker.engine\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local-exec\" provider'\n- technology: ansible\ncomponent: docker.engine\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks'\n- technology: terraform\ncomponent: docker.engine\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"remote-exec\" provider'\n- technology: ansible\ncomponent: gcp.service\nhosting: []\nweight: 1\nreason: Ansible provides a declarative module\ndetails: '\"google.cloud.gcp_serviceusage_service\" task'\n- technology: terraform\ncomponent: gcp.service\nhosting: []\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_project_service\" resource'\n- technology: ansible\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" task'\n- technology: kubernetes\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_service_v1\" resource'\n- technology: ansible\ncomponent: ingress\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks'\n- technology: terraform\ncomponent: ingress\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner'\n- technology: ansible\ncomponent: ingress\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks'\n- technology: terraform\ncomponent: ingress\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner'\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- gcp.cloudsql\nweight: 0.5\nreason: Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- gcp.cloudsql\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: kubernetes\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 0\nreason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 0\nreason: Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker-compose manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker-compose manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- gcp.cloudsql\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"google.cloud.gcp_sql_instance\" and \"google.cloud.gcp_sql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- gcp.cloudsql\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_sql_database_instance\" and \"google_sql_user\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" tasks'\n- technology: kubernetes\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner'\n- technology: ansible\ncomponent: object.storage\nhosting:\n- gcp.cloudstorage\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- gcp.cloudstorage\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: kubernetes\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 0\nreason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 0\nreason: Ansible is more specialized.\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- gcp.memorystore\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- gcp.memorystore\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\n- technology: kubernetes\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- gcp.cloudrun\nweight: 0\nreason: Custom module with imperative parts, while Terraform provides a declarative module.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.tempfile\", and \"ansible.builtin.copy\" tasks '\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- gcp.cloudrun\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_cloud_run_v2_service\" and \"google_cloud_run_service_iam_binding\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" tasks'\n- technology: kubernetes\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- gcp.appengine\nweight: 0\nreason: Custom module with imperative parts, while Terraform provides a declarative module.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.tempfile\", \"ansible.builtin.unarchive\", and \"ansible.builtin.copy\" tasks'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- gcp.appengine\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_app_engine_standard_app_version\", \"google_project_iam_member\", \"google_service_account\", \"google_storage_bucket\", and \"google_storage_bucket_object\" resources'\n- technology: ansible\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\".\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: virtual.machine\nartifact: machine.image\nhosting:\n- openstack.provider\nweight: 0.5\nreason: Terraform is more specialized.\ndetails: '\"openstack.cloud.security_group\", \"openstack.cloud.security_group_rule\" and \"openstack.cloud.server\" tasks'\n- technology: terraform\ncomponent: virtual.machine\nartifact: machine.image\nhosting:\n- openstack.provider\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"openstack_compute_instance_v2\", \"openstack_networking_secgroup_rule_v2\" and \"openstack_networking_secgroup_v2\" resources'\n
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/specification/","title":"Specification","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability4tosca-specification-10-release-candidate","title":"Variability4TOSCA Specification 1.0 Release Candidate","text":"This document specifies Variability4TOSCA which extends TOSCA Simple Profile in YAML Version 1.3 with conditional elements to model deployment variability. This includes conditional node templates, relationship templates, properties, artifacts, groups, policies, types, inputs, and imports. In the following, we discuss the differences and the processes to resolve the variability. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#terminology","title":"Terminology","text":"We quickly introduce some terminologies.
A service template must have the TOSCA definitions version tosca_variability_1_0
. Such a service template is also called variable service template.
tosca_variability_1_0
.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template","title":"Topology Template","text":"A topology template additionally contains a variability definition. Such a topology template is also called variable topology template.
Keyname Mandatory Type Description variability true VariabilityDefinition A required object for variability inputs, variability presets, and variability expressions.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-definition","title":"Variability Definition","text":"A variability definition defines variability inputs, variability presets, variability expressions, and variability options.
Keyname Mandatory Type Description inputs false Map(String, VariabilityInput) An optional map of input parameters used inside variability expressions. presets false Map(String, VariabilityPreset) An optional map of variability preset definitions. expressions false Map(String, VariabilityExpression) An optional map of variability expressions. constraints false List(LogicExpression) An optional list of constraints respected when resolving variability. options false Map(String, Boolean) An optional map of variability options. type_specific_conditions false String | List(TypeSpecificDefaultCondition) An optional definition of type-specific default conditions. If string, then treated as relative file to import (default: \"./type-specific-conditions.yaml\") technology_rules false String | List(TechnologyRule) An optional definition of technology assignment rules. If string, then treated as relative file to import (default: [\"./rules.yaml\", \"./lib/rules.yaml\"]). plugins false PluginDefinition An optional definition of plugins.The following non-normative and incomplete example contains a variability definition which declares the variability input mode
and two variability presets dev
and prod
are defined which either assigns mode
the value dev
or prod
. Furthermore, two variability conditions is_dev
and is_prod
which evaluate if mode
equals dev
or prod
, respectively.
variability:\ninputs:\nmode:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nprod:\nname: Production\ndescription: Deploy the application on a public cloud\ninputs:\nmode: prod\nexpressions:\nis_dev: { equal: [ { variability_input: mode }, dev ] }\nis_prod: { equal: [ { variability_input: mode }, prod ] }\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-input","title":"Variability Input","text":"A variability input is an input parameter which additionally has the following keywords.
Keyname Mandatory Type Description default_expression false ValueExpression A value expression as default. implies false String | List(String) Implies/ requires another variability input. excludes false String | List(String) Excludes another variability input. alternatives false List(String) Requires exactly one of the referenced variability input. choices false List(String) Requires none, one, or multiple of referenced variability input.For example, the following variability input has a value expression as default value assigned.
inputs:\nmode:\ntype: string\ndefault_expression: <ValueExpression>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-options","title":"Variability Options","text":"There are the following variability options. More specific options override wider set options. For example, the following options the mode strict
is configured. This mode disables all default conditions and pruning. However, pruning of nodes is explicitly set by node_pruning
, thus, nodes are pruned regardless of the set mode.
options: mode: manual\nnode_pruning: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#general-options","title":"General Options","text":"The following options are general options.
Keyname Mandatory Type Default Description mode false manual | consistent-strict | consistent-loose | default | semantic-strict | semantic-loose manual Configure pruning mode.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#default-condition-options","title":"Default Condition Options","text":"The following options are used to configure the default conditions of elements.
Keyname Mandatory Type Default Description default_condition false Boolean false Enable all default conditions (consistency and semantic). input_default_condition false Boolean false Enable default condition for inputs (consistency and semantic). input_default_consistency_condition false Boolean false Enable default consistency condition for inputs. input_default_semantic_condition false Boolean false Enable default semantic condition for inputs. node_default_condition false Boolean false Enable default condition for nodes (consistency and semantic). node_default_condition_mode false List(source | incoming | incomingnaive | host | artifact | artifactnaive, -) incoming-artifact Configure the default condition for nodes. node_default_consistency_condition false Boolean false Enable default consistency condition for nodes. node_default_semantic_condition false Boolean false Enable default semantic condition for nodes. output_default_condition false Boolean false Enable default condition for outputs (consistency and semantic). output_default_consistency_condition false Boolean false Enable default consistency condition for outputs. output_default_semantic_condition false Boolean false Enable default semantic condition for outputs. relation_default_condition false Boolean false Enable default condition for relations (consistency and semantic). relation_default_condition_mode false List(source | target, -) source-target Configure the default condition for relations. relation_default_consistency_condition false Boolean false Enable default semantic condition for relations. relation_default_semantic_condition false Boolean false Enable default consistency condition for relations. relation_default_implied false Boolean false Enable default implication for relations. Does not apply for hosting relations. policy_default_condition false Boolean false Enable default condition for policies (consistency and semantic). policy_default_consistency_condition false Boolean false Enable default consistency condition for policies. policy_default_semantic_condition false Boolean false Enable default semantic condition for policies. group_default_condition false Boolean false Enable default condition for groups (consistency and semantic). group_default_consistency_condition false Boolean false Enable default consistency condition for groups. group_default_semantic_condition false Boolean false Enable default semantic condition for groups. artifact_default_condition false Boolean false Enable default condition for artifacts (consistency and semantic). artifact_default_condition_mode false List(container | technology, -) container Configure the default condition for artifacts. artifact_default_consistency_condition false Boolean false Enable default consistency condition for artifacts. artifact_default_semantic_condition false Boolean false Enable default semantic condition for artifacts. property_default_condition false Boolean false Enable default condition for properties (consistency and semantic). property_default_consistency_condition false Boolean false Enable default consistency condition for properties. property_default_semantic_condition false Boolean false Enable default semantic condition for properties. type_default_condition false Boolean false Enable default condition for types (consistency and semantic). type_default_consistency_condition false Boolean false Enable default consistency condition for types. type_default_semantic_condition false Boolean false Enable default semantic condition for types. technology_default_condition false Boolean false Enable default condition for (deployment) technologies (consistency and semantic). technology_default_condition_mode false List(container | other, -) container-other Configure the default condition for (deployment) technologies. technology_default_consistency_condition false Boolean false Enable default consistency condition for technologies. technology_default_semantic_condition false Boolean false Enable default semantic condition for technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-options","title":"Pruning Options","text":"The following options are used to configure the pruning of elements.
Keyname Mandatory Type Default Description pruning false Boolean false Enable pruning of all elements (consistency and semantic). input_pruning false Boolean false Enable pruning of inputs (consistency and semantic). input_consistency_pruning false Boolean false Enable consistency pruning of inputs. input_semantic_pruning false Boolean false Enable semantic pruning of inputs. node_pruning false Boolean false Enable pruning of nodes (consistency and semantic). node_consistency_pruning false Boolean false Enable consistency pruning of nodes. node_semantic_pruning false Boolean false Enable semantic pruning of nodes. output_pruning false Boolean false Enable pruning of output (consistency and semantic). output_consistency_pruning false Boolean false Enable consistency pruning of output. output_semantic_pruning false Boolean false Enable semantic pruning of output. relation_pruning false Boolean false Enable pruning of relations (consistency and semantic). relation_consistency_pruning false Boolean false Enable consistency pruning of relations. relation_semantic_pruning false Boolean false Enable semantic pruning of relations. policy_pruning false Boolean false Enable pruning of policies (consistency and semantic). policy_consistency_pruning false Boolean false Enable consistency pruning of policies. policy_semantic_pruning false Boolean false Enable semantic pruning of policies. group_pruning false Boolean false Enable pruning of groups (consistency and semantic). group_consistency_pruning false Boolean false Enable consistency pruning of groups. group_semantic_pruning false Boolean false Enable semantic pruning of groups. artifact_pruning false Boolean false Enable pruning of artifacts (consistency and semantic). artifact_consistency_pruning false Boolean false Enable consistency pruning of artifacts. artifact_semantic_pruning false Boolean false Enable semantic pruning of artifacts. property_pruning false Boolean false Enable pruning of properties (consistency and semantic). property_consistency_pruning false Boolean false Enable consistency pruning of properties. property_semantic_pruning false Boolean false Enable semantic pruning of properties. type_pruning false Boolean false Enable pruning of types (consistency and semantic). type_consistency_pruning false Boolean false Enable consistency pruning of types. type_semantic_pruning false Boolean false Enable semantic pruning of types. technology_pruning false Boolean false Enable pruning of (deployment) technologies (consistency and semantic). technology_consistency_pruning false Boolean false Enable consistency pruning of technologies. technology_semantic_pruning false Boolean false Enable semantic pruning of technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#checks-options","title":"Checks Options","text":"The following options are used to configure checks.
Keyname Mandatory Type Default Description checks false Boolean true Enable all checks. consistency_checks false Boolean true Enable all consistency checks. semantic_checks false Boolean true Enable all semantic checks. relation_source_check false Boolean true Enable the consistency check regarding present relation sources. relation_target_check false Boolean true Enable the consistency check regarding present relation targets. ambiguous_hosting_check false Boolean true Enable the consistency check regarding at maximum one present hosting relation. missing_artifact_container_check false Boolean true Enable the consistency check regarding present container of artifacts. ambiguous_artifact_check false Boolean true Enable the consistency check regarding ambiguous present artifacts. missing_property_container_check false Boolean true Enable the consistency check regarding present container of properties. ambiguous_property_check false Boolean true Enable the consistency check regarding ambiguous present properties. missing_type_container_check false Boolean true Enable the consistency check regarding present containers of types. ambiguous_type_check false Boolean ture Enable the consistency check regarding exactly one present type per container. expected_hosting_check false Boolean true Enable the semantic check regarding an expected present hosting relation. expected_incoming_relation_check false Boolean true Enable the semantic check regarding an expected incoming relation. expected_artifact_check false Boolean true Enable the semantic check regarding an expected artifact. expected_technology_check false Boolean true Enable the consistency check regarding present technologies. missing_technology_container_check false Boolean true Enable the consistency check regarding present container of technologies. ambiguous_technology_check false Boolean true Enable the consistency check regarding ambiguous present technologies. ambiguous_relation_check false Boolean true Enable the consistency check regarding ambiguous present relations. ambiguous_input_check false Boolean true Enable the consistency check regarding ambiguous present inputs. ambiguous_output_check false Boolean true Enable the consistency check regarding ambiguous present outputs. unconsumed_input_check false Boolean true Enable the semantic check regarding not consumed inputs. unproduced_output_check false Boolean true Enable the consistency check regarding not produced outputs.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#solver-options","title":"Solver Options","text":"The following options are used to configure the solver.
Keyname Mandatory Type Default Description optimization_topology false Boolean | min | max false Configure optimization considering topology. optimization_topology_unique false Boolean true Enable check for unique results considering topology. optimization_topology_mode false count | weight weight Configure optimization mode considering topology. optimization_technologies false Boolean | min | max false Enable optimization considering technologies. optimization_technologies_unique false Boolean false Enable check for unique results considering technologies. optimization_technologies_mode false count | weight | weight-count count Configure optimization mode considering technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normalization-options","title":"Normalization Options","text":"The following options are used to configure the normalizer.
Keyname Mandatory Type Default Description technology_required false Boolean false Enable if a technology is required by default for a node.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#enricher-options","title":"Enricher Options","text":"The following options are used to configure the enricher.
Keyname Mandatory Type Default Description enrich_input_condition false Boolean true Enable if a condition should be enriched to an element considering a variability input having the element id as name. enrich_technologies false Boolean false Enable if technologies are enriched. enrich_implementations false Boolean false Enable if implementations are enriched.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#constraints-options","title":"Constraints Options","text":"This is an experimental feature.
The following options are used to configure constraints.
Keyname Mandatory Type Default Description constraints false Boolean false Enable all constraints. relation_source_constraint false Boolean false Enable the constraint regarding present relation sources. relation_target_constraint false Boolean false Enable the constraint regarding present relation targets. artifact_container_constraint false Boolean false Enable the constraint regarding present container of artifacts. property_container_constraint false Boolean false Enable the constraint regarding present container of properties. type_container_constraint false Boolean false Enable the constraint regarding present containers of types. hosting_stack_constraint false Boolean false Enable the constraint regarding present hosting stack. technology_constraint false Boolean false Enable the constraint regarding technologies. unique_property_constraint false Boolean false Enable the constraint regarding unique property names. unique_artifact_constraint false Boolean false Enable the constraint regarding unique artifact names. unique_input_constraint false Boolean false Enable the constraint regarding unique deployment input names. unique_output_constraint false Boolean false Enable the constraint regarding unique deployment output names. required_artifact_constraint false Boolean false Enable the constraint regarding required artifact. required_incoming_relation_constraint false Boolean false Enable the constraint regarding required incoming relation.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-modes","title":"Pruning Modes","text":"There are several predefined pruning modes which provide different useful combinations of default conditions and the pruning of elements that can be directly used.
manual
: no default or pruning conditions are enabled at allconsistent-strict
: all default consistency conditions are enabledconsitent-loose
: consistency pruning is enableddefault
: all default conditions are enabled (consistency and semantic)semantic-strict
: consistency pruning is enabled and semantic defaultssemantic-loose
: pruning is enabled everywhere (consistency and semantic)Note, pruning modes do not consider input and output pruning in tosca_variability_1_0_rc_2
but in tosca_variability_1_0_rc_3
.
tosca_variability_1_0_rc_2
has the following default values.
mode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: true\noptimization_technologies: max\noptimization_technologies_mode: weight-count\ntechnology_constraint: true\nhosting_stack_constraint: true\nrelation_default_implied: true\ntechnology_required: false\nunconsumed_input_check: false\nunproduced_output_check: false\nenrich_technologies: true\nenrich_implementations: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#rc-v3","title":"RC v3","text":"tosca_variability_1_0_rc_3
has the following default values. Also, pruning modes consider input and output pruning.
mode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: true\noptimization_technologies: max\noptimization_technologies_mode: weight-count\noptimization_technologies_unique: false\ntechnology_constraint: true\nhosting_stack_constraint: true\nunique_property_constraint: true\nunique_artifact_constraint: true\nunique_input_constraint: true\nunique_output_constraint: true\nrequired_artifact_constraint: true\nrelation_default_implied: true\ntechnology_required: true\nchecks: false\nenrich_technologies: true\nenrich_implementations: true\nartifact_default_condition_mode: container-managed\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#default-conditions","title":"Default Conditions","text":"There are element-generic default conditions and type-specific default conditions. Element-generic default conditions are generic default conditions defined per element. However, type-specific default conditions are defined per type, e.g., node type, and, thus, override element-generic default conditions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-generic-default-conditions","title":"Element-Generic Default Conditions","text":"The following element-generic default conditions can be assigned to elements.
Element Consistency Semantic Default Conditions Node with Incoming Relations (incoming) false true Check if any incoming relation is present. Node with Artifacts (artifact) false true Check if any artifact is present. Property true false Check if the container, e.g., node template or policy, of the property is present. Input false true Check if the input is consumed. Output true false Check if the output is produced. Relation true false Check if the source and target of the relation is present. Policy false true Check if the policy has any targets which are present. Group false true Check if the group has any members which are present. Artifact (container) true false Check if the node template of the artifact is present. Technology (container) true false Check if the node template of the technology is present. Technology (other) true false Check if no other technology of the node template is present. Root true true The default condition of element always holds.Thereby, we define a consistency condition a condition which targets the consistency of the metamodel, thus, ensuring that the metamodel can be correctly parsed, e.g., a property must have a container. In contrast, a semantic condition targets semantic aspect of elements or the type system, e.g., a node without incoming relations is not used and can be removed.
Depending on the context, other default conditions are more applicable. The following default conditions can be chosen instead of the ones introduced above.
Element Consistency Semantic Default Conditions Node with Incoming Relations (incomingnaive) false true Check if any incoming relation is present usinghas_incoming_relation_naive
. Node with Incoming Relations (source) false true Check if any source of any incoming relation is present. Node with Outgoing Relations (outgoing) false true Check if any outgoing relation is present. Node with Outgoing Relations (outgoingnaive) false true Check if any outgoing relation is present using has_outgoing_relation_naive
. Node with Host (host) false true Check if any host is present. Node with Artifact (artifactnaive) false true Check if any artifact is present using has_artifact_naive
. Relation (source) true false Check if the source of the relation is present. Relation (target) true false Check if the target of the relation is present. Artifact (managed) false true Check if the artifact is managed by any technology.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#type-specific-default-conditions","title":"Type-Specific Default Conditions","text":"Conditional types conflict with this feature!
Type-specific default conditions can be defined to override element-generic default conditions for specific type. A type-specific default condition is defined as follows and is supported for nodes, relations, properties, artifact, groups, and policies.
Keyname Mandatory Type Default Description conditions true VariabilityCondition | List(VariabilityCondition) A variability condition. If a list is given, then the conditions are combined using the and operation. consistency false Boolean false Configures the condition to be a consistency condition. semantic false Boolean true Configures the condition to be a semantic condition.For example, the node type scenario.monitor
defines a type-specific semantic default condition checking for the presence of its host.
type_specific_conditions:\nnode_types:\nscenario.monitor:\nconditions: {host_presence: SELF}\nsemantic: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-rules","title":"Technology Rules","text":"Conditional types conflict with this feature!
Technology rules can be defined to automatically select a deployment technology for a component. A technology rule is defined as follows.
Keyname Mandatory Type Description technology true String The name of the deployment technology. component true String The type of the component to which the technology can be assigned. hosting false List(String) The type of the host of the component which the technology requires. If list, then refers to the hosting stack. conditions false VariabilityCondition | List(VariabilityCondition) The conditions under which a technology can be assigned to a component. weight false Number The weight which is minimized (default is 1). assign false String Configure the node type that is assigned (default:${current_type}.${technology_name}.${host_type_prefix}
). For example, the node type application
can be deployed using the deployment technology terraform
if the host is of type terraform_host
.
technology_rules:\nterraform:\n- component: application\nhosting: terraform_host\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-preset","title":"Variability Preset","text":"A variability preset predefines values for variability inputs that might be used when resolving variability.
Keyname Mandatory Type Description name false String An optional name of the variability preset. description false String An optional description for the variability preset. inputs true Map(String, InputParameterAssignment) A required map of input parameter assignments.For example, the following variability preset dev
set the values of the two variability inputs mode
and another_input
but not of another_another_input
.
variability:\ninputs:\nmode:\ntype: string\nanother_input: type: string\nanother_another_input:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nanother_input: another_value\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-expression","title":"Variability Expression","text":"A variability expression is an expression which consists of operators and functions which are listed below. For example, the following expression returns the total amount of costs. This result might be used inside a variability condition to ensure that the deployment costs are within a specific budget.
topology_template:\nvariability: expressions:\nmy_expression: {add: [{variability_input: costs_offering_a}, {variability_input: costs_offering_b}]}\n
There are different kinds of variability expressions, as displayed in Figure 1. Value expressions return any kind of value and logic expressions return Booleans.
Figure 1: Different variability expressions types","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-condition","title":"Variability Condition","text":"
A variability condition is a logic expression targeting the presence of an element, as displayed in Figure 1. Allowed operators and functions are listed below. For example, the following variability condition is_prod
evaluates to true if the variability input mode
equals prod
.
topology_template: variability:\ninputs: mode: type: string\nexpressions:\nis_prod: {equal: [{variability_input: mode}, prod]}\nnode_template:\nmy_prod_node:\ntype: my.prod.node\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#node-template","title":"Node Template","text":"A node template is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective node template is not present. A node template can also hold conditional types, artifact, and properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. artifacts false Map(String, ArtifactTemplate) | List(Map(String, ArtifactTemplate){single}) An optional map of artifact or a list of artifact maps. If a list is given, then each artifact map must contain only one artifact. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. persistent false Boolean Configure if node is persistent, e.g., always consumed by an end user from the browser. This will prevent unexpected pruning by setting the pruning option to false. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. weight false Boolean | Non-Negative Number Configure the weight of this element used during optimization (default is 1). implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. technology false String | List(Map(String, TechnologyTemplate){single}) An optional conditional assignment of deployment technologies. For example, the following node template has a variability condition assigned.
prod_database:\ntype: my.prod.db\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-template","title":"Technology Template","text":"A technology template is a conditional elements, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective technology template is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the technology as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_condition_mode false container | other | container-other Configure the default condition for this element. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. weight false Boolean | Non-Negative Number Configure the weight of this element used during optimization (default is 1). assign false String Configure the node type that is assigned (default:${current_type}.${technology_name}.${host_type_prefix}
).","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#type-assignment","title":"Type Assignment","text":"A type is a conditional element, thus, variability conditions and further options can be assigned to a type assignment. These conditions must hold otherwise the respective relationship is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the type as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following node template database
has a conditional type switching between a development and production database.
database:\ntype:\n- my.dev.db:\nconditions: <VariabilityCondition>\n- my.prod.db:\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#requirement-assignment","title":"Requirement Assignment","text":"A requirement assignment is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective relationship is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the requirement assignment as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source-target | source | target Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. implied false Boolean | SOURCE | TARGET | CONTAINER Enables that the manual conditions are used to imply the element when the source/ target (depending on the configuration) is present. This overrides the variability options of the variable topology template. For example, the following requirement assignment host
has a variability condition assigned.
requirements:\n- host:\nnode: dev_runtime\nconditions: {logic_expression: is_dev}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#relationship-templates","title":"Relationship Templates","text":"A relationship template can contain conditional properties. Note, the presence of a relationship template is bound to the presence of the requirement assignment in which it is used. A relationship template can also hold conditional properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property.For example, the following relationship templates contains conditional properties.
relationship_templates:\nmy_relationship:\ntype: my.relationship\nproperties:\n- property_one:\nvalue: value_one\nconditions: <VariabilityCondition>\n- property_two:\nvalue: value_two\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#property-assignment","title":"Property Assignment","text":"A property is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective relationship is not present. However, this only applies if the property assignment is wrapped as the following object and if it is used in a list.
Keyname Mandatory Type Description value false (Original) PropertyAssignment The value of the property. expression false ValueExpression A value expressions which is evaluated and used as value. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the value as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. These keywords are used to detect if a property assignment is wrapped. Thus, if any of these keywords must be used as value for property, then this property must be wrapped. For example, the property key_one
has the value {value: the_value}
and, thus, must be wrapped.
properties:\n- key_one:\nvalue: {value: the_value}\n- conditional_property:\nvalue: conditional_value\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#group-template","title":"Group Template","text":"A group is conditional element, thus, variability conditions and other options can be assigned. Depending on the group type the conditions are either assigned to the group itself or to the group members. A group can also hold conditional types and properties.
In general, the conditions are assigned to the group itself. These conditions must hold otherwise the respective group is not present. We refer to such a group also as conditional group.
However, if the group is derived from variability.groups.ConditionalMembers
then the conditions are assigned to the group members. These conditions must hold otherwise the respective group members are not present in the variability-resolved service template. Furthermore, group elements can be node templates and requirement assignments. We refer to such a group also as variability group. A variability group is always absent and, thus, always removed when resolving variability.
element implies target
or (element and condition) implies target
. For example, the following group example_group
is a conditional group which is only present if assigned conditions hold.
conditional_group:\ntype: tosca.groups.Root\nmembers: [prod_database, [application, prod_connects_to]]\nconditions: {logic_expression: is_prod}\n
However, the following group example_group
assigns its assigned conditions to its members, i.e., the node template prod_database
and the requirement assignment prod_connects_to
of the node template application
. In contrast to the previous example this group is not derived from variability.groups.ConditionalMembers
. Thus, the presence of the node template prod_database
depends on condition is_prod
.
variability_group:\ntype: variability.groups.ConditionalMembers\nmembers: [prod_database, [application, prod_connects_to]]\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#policy-template","title":"Policy Template","text":"A policy template is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective policy is not present. A policy can also hold conditional types and properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following policy template anticollocation
has the variability condition is_prod
assigned. Depending on the presence of this policy, the node templates wordpress
and mysql
must not be hosted on the same server, e.g., during production. For more information about this example, take a look in the TOSCA Simple Profile in YAML Version 1.3.
node_templates:\nwordpress:\ntype: tosca.nodes.WebServer\nrequirements:\n- host:\nnode_filter:\ncapabilities:\n- os:\nproperties:\n- architecture: x86_64\n- type: linux\nmysql:\ntype: tosca.nodes.DBMS.MySQL\nrequirements:\n- host:\nnode: tosca.nodes.Compute\nnode_filter:\ncapabilities:\n- os:\nproperties:\n- architecture: x86_64\n- type: linux\npolicies:\n- anticollocation:\ntype: tosca.policies.AntiCollocation\ntargets: [wordpress_server, mysql]\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#artifact-template","title":"Artifact Template","text":"A (deployment) artifact is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective artifact is not present. An artifact can also hold conditional properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the artifact as default. This overwrites assigned conditions. There must be only one default artifact. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_condition_mode false List(container | technology, -) Configure the default condition for this element. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following node template my_node
has two artifacts artifact_a
and artifact_b
assigned which are both conditional.
my_node:\ntype: my.node\nartifacts:\n- artifact_a:\nconditions: <VariabilityCondition>\n- artifact_b:\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template-input","title":"Topology Template Input","text":"A topology template input is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective input is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. default_alternative false Boolean Declare the input as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. For example, the topology template input has a variability condition assigned.
inputs:\nssh_key_file:\ntype: string\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template-output","title":"Topology Template Output","text":"A topology template output is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective output is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. default_alternative false Boolean Declare the output as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. For example, the topology template output has a variability condition assigned.
outputs:\nvm_address:\ntype: string\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#import-definition","title":"Import Definition","text":"An import definition is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective import is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following import has a variability condition assigned.
import:\n- file: some_file\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normative-group-types","title":"Normative Group Types","text":"There are two normative group types variability.groups.Root
and variability.groups.ConditionalMembers
. The first group type is the root group every other variability-related group, such as variability.groups.ConditionalMembers
should derive from.
variability.groups.Root:\nderived_from: tosca.groups.Root\n
The second group type should be used for variability groups.
variability.groups.ConditionalMembers:\nderived_from: variability.groups.Root\nconditions: VariabilityCondition | List(VariabilityCondition)
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normative-interface-types","title":"Normative Interface Types","text":"The following normative interfaces define a management interface for nodes and relationships. Currently, no management operations are defined. The definition is intended to be extended in other specifications, e.g., for building deployment artifacts after resolving variability.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-management-interface-for-nodes","title":"Variability Management Interface for Nodes","text":"The following interface manages the variability-related operations of nodes.
tosca.interfaces.node.management.Variability:\nderived_from: tosca.interfaces.Root\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-management-interface-for-relationships","title":"Variability Management Interface for Relationships","text":"The following interface manages the variability-related operations of relationships.
tosca.interfaces.relationship.management.Variability:\nderived_from: tosca.interfaces.Root\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#intrinsic-functions","title":"Intrinsic Functions","text":"The following intrinsic functions can be used inside a variability expression.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#logical-operators","title":"Logical Operators","text":"The following logical operators can be used inside a logic expression.
Keyname Input Output Description and List(BooleanExpression) Boolean Evaluates if all values aretrue
. or List(BooleanExpression) Boolean Evaluates if at least one value is true
. not BooleanExpression Boolean Negates the given value. xor List(BooleanExpression) Boolean Evaluates if exactly one value is true
. implies Tuple(BooleanExpression, BooleanExpression) Boolean Evaluates if first value implies the second value. amo List(BooleanExpression) Boolean Evaluates if at most one value is true
.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#arithmetic-operators","title":"Arithmetic Operators","text":"The following arithmetic operators can be used inside a variability expression.
Keyname Input Output Description add List(NumericExpression) Numeric Sums up given values. sub List(NumericExpression) Numeric Subtracts values from the first one. mul List(NumericExpression) Numeric Multiplies given values. div List(NumericExpression) Numeric Divides values from the first one. mod Tuple(NumericExpression, NumericExpression) Numeric Divides values and returns the remainder.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#presence-operators","title":"Presence Operators","text":"The following presence operators can be used inside a logic expression.
Keyname Input Output Description variability_input String Any Returns the value of a variability input. logic_expression String Boolean Returns the value of the Logic Expression. value_expression String Any Returns the value of the Value Expression. node_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if node is present. host_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any host of the node is present. Note, an error will be thrown later when consistency is checked if there are multiple hosting relations present. has_source Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any source of any incoming relation of the node template is present. has_incoming_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship. has_incoming_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship in a naive way that will result in a circle considering the default condition of relations. has_outgoing_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship. has_outgoing_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship in a naive way that will result in a circle considering the default condition of relations. has_artifact Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present. has_artifact_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present in a naive way that will result in a circle considering the default condition of artifacts. relation_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number) Boolean Returns if relation is present. artifact_presence Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is present. is_managed SELF | Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is managed by a deployment technology. policy_presence Policy: String | Number Boolean Returns if policy is present. group_presence Group: String Boolean Returns if group is present. input_presence Input: String | Number Boolean Returns if input is present. is_consumed Input: String | Number Boolean Returns if input is consumed by a property. output_presence Output: String | Number Boolean Returns if output is present. is_produced Output: String | Number Boolean Returns if output is produced by a property. source_presence SELF | CONTAINER Boolean Returns if source node of relation is present. Can only be used inside a relation. Otherwise usenode_presence
. target_presence SELF | CONTAINER Boolean Returns if target node of relation is present. Can only be used inside a relation. Otherwise use node_presence
. has_present_target Policy: String | Number | SELF | CONTAINER Boolean Returns if any target of the given policy is present. has_present_member Group: String | SELF | CONTAINER Boolean Returns if any member of the given group is present. node_type_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Type: String | Number) Boolean Returns if type of node is present. relation_type_presence Triple(Node: String | SELF | CONTAINER, Relation: String | Number, Type: String | Number) Boolean Returns if type of relation is present. group_type_presence Tuple(Group: String | SELF | CONTAINER, Type: String | Number) Boolean Returns if type of group is present. policy_type_presence Tuple(Group: String | SELF | CONTAINER, Type: String | Number) Boolean Returns if type of policy is present. artifact_type_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Type: String | Number) Boolean Returns if type of policy is present. node_property_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Property: String | Number) Boolean Returns if property of node is present. relation_property_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number, Property: String | Number) Boolean Returns if property of relation is present. group_property_presence Tuple(Group: String | SELF | CONTAINER, Property: String | Number) Boolean Returns if property of group is present. policy_property_presence Tuple(Policy: String | Number | SELF | CONTAINER |, Property: String | Number) Boolean Returns if property of policy is present. artifact_property_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Artifact: String | Number, Property: String | Number) Boolean Returns if property of artifact is present. container_presence SELF | CONTAINER Boolean Returns if container is present. Can only be used inside a property or artifact. import_presence Import: Number Boolean Returns if import is present. technology_presence Tuple(Node: String, Technology: String | Number) Boolean Returns if technology of node is present.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#string-operators","title":"String Operators","text":"The following string operators can be used inside a variability expression.
Keyname Input Output Description concat List(ValueExpression) String Concatenates the given values. join Tuple(List(ValueExpression), String) String Joins the given values using the provided delimiter. token Tuple(ValueExpression, String, Number) String Splits a given value by the provided delimiter and returns the element specified by the provided index.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#constraint-operators","title":"Constraint Operators","text":"The following constraint operators can be used inside a variability expression.
Keyname Input Output Description equal List(ValueExpression) Boolean Evaluates if the given values are equal. greater Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is greater than the second value. greater_or_equal Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is greater or equal to the second value. less Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is less than the second value. less_or_equal Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is less or equal to the second value. in_range Tuple(NumericExpression, Tuple(NumericExpression, NumericExpression)) Boolean Evaluates if the value is in a given range. valid_values Tuple(ValueExpression, List(ValueExpression)) Boolean Evaluates if the value is element of the list. length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a given length. min_length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a minimum length. max_length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a maximum length.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#analytical-operators","title":"Analytical Operators","text":"The following analytical operators can be used inside a variability expression.
Keyname Input Output Description sum List(Number) Number Returns the sum of the given values. count List(Number) Number Returns the count of the given values. min List(Number) Number Returns the min of the given values. max List(Number) Number Returns the max of the given values. mean List(Number) Number Returns the mean of the given values. median List(Number) Number Returns the median of the given values. variance List(Number) Number Returns the variance of the given values. standard_deviation List(Number) Number Returns the standard deviation of the given values. linear_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using linear regression. polynomial_regression List(List(Tuple(Number, Number)), Number, Number) Number Returns the prediction using polynomial regression. logarithmic_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using logarithmic regression. exponential_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using exponential regression.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#date-operators","title":"Date Operators","text":"The following date operators can be used inside a variability expression.
Keyname Input Output Description weekday Empty List String Returns the current weekday. same Tuple(String | Number, String | Number) Boolean Returns if first date is the same date as the second. before Tuple(String | Number, String | Number) Boolean Returns if first date is before the second date. before_or_same Tuple(String | Number, String | Number) Boolean Returns if first date is before or same as the second date. after Tuple(String | Number, String | Number) Boolean Returns if first date is after the second date. after_or_same Tuple(String | Number, String | Number) Boolean Returns if first date is after or same as the second date. within Tuple(String | Number, Tuple(String | Number, String | Number)) Boolean Returns if given date is within the given dates.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#plugin-definition","title":"Plugin Definition","text":"The following plugins can be defined.
Keyname Mandatory Type Description technology false List(String) An optional list of technology rule plugins. Strings are treated as relative imports. Plugins are also loaded from \"./plugins/technology\".","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-plugin","title":"Technology Plugin","text":"A technology plugin must export the following interface.
export type TechnologyPluginBuilder = {\nbuild(graph: Graph): TechnologyPlugin\n}\n
export type TechnologyPlugin = {\nassign: (node: Node) => {[technology: string]: TechnologyTemplate}[]\nimplement: (name: string, type: NodeType) => NodeTypeMap\n}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#processing","title":"Processing","text":"This section is outdated.
We describe on a high-level the steps to derive a variability-resolved service template from a variable service template.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#resolve-variability","title":"Resolve Variability","text":"To resolve the variability in a variable service template, conduct the following steps:
tosca_variability_1_0
.conditions
at node templates.tosca_simple_yaml_1_3
.Variability inputs can be assigned either directly or indirectly using (possibly multiple) variability presets. Therefore, conduct the following steps:
Thereby, inputs which are merged at a later step, override existing inputs. Thus, directly assigned variability inputs have the highest priority. For example, given the following variability definition.
variability:\ninputs:\nmode:\ntype: string\nanother_input: type: string\nanother_another_input:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nanother_input: dev\nanother_another_input: dev\nprod:\nname: Production\ndescription: Deploy the application on a public cloud\ninputs:\nmode: prod\nanother_input: prod\n
When the presets dev
and prod
are applied and the variability input mode
is directly assigned to override
, then the following variability inputs are retrieved.
mode: override\nanother_input: prod\nanother_another_input: dev\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#check-element-presence","title":"Check Element Presence","text":"To check if an element is present, check that all assigned conditions hold:
conditions
.conditions
which the element is member of.The element is present if all conditions hold.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#conduct-checks","title":"Conduct Checks","text":"To conduct the consistency and semantic checks, conduct the following steps:
Since the derived variability-resolved service template might be further processed, e.g. by topology completion, some or all of these checks might be omitted.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-elements","title":"Pruning Elements","text":"To further support modeling, elements can be pruned by additionally evaluating the respective default condition before evaluating assigned conditions. For example, when evaluating if a property of a node template is present, then evaluate first if respective node template is present and then assigned conditions. Such pruning propagates through the whole topology. For example, the properties of a relationship template used in a requirement assignment of a node template which is not present are also not present.
There are element-generic default conditions and type-specific default conditions. Element-generic default conditions are generic default conditions defined per element. However, type-specific default conditions are defined per type, e.g., node type, and, thus, override element-generic default conditions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#optimization","title":"Optimization","text":"The variability-resolved service template can be optimized regarding the weight of node templates. The default weight of a node template is 1. Per default, the variability-resolved service template is optimized regarding the minimal weight/ number of node templates. The primary intention is to minimize the deployment complexity, but optimization could be also used, e.g., to minimize overall costs. The weight of a node template can be configured in its definition. Moreover, technology selection can be optimized.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-system","title":"Element System","text":"When introducing conditional elements, we follow typically the approach of using a list whose entries are maps that contain a single element. Thus, elements can just be defined as usual but in a list (instead of a map) and can even share the same names. This has some implication on managing elements which we are discussing in the following.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-collections","title":"Element Collections","text":"As an overview, the following table shows the collections that are used in TOSCA and the ones which are used in Variability4TOSCA.
Element TOSCA Variability4TOSCA Inputs Map Map, List Outputs Map Map, List Nodes Map Map, List Relations List List Properties Map Map, List Policies List List Groups Map Map, List Artifacts Map Map, List","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-uniqueness","title":"Element Uniqueness","text":"As an overview, the following table shows the uniqueness of elements in TOSCA and in Variability4TOSCA in terms of identifiers, such as the key in a map. This is directly related to the used collections.
Element TOSCA Variability4TOSCA Inputs Outputs Nodes Relations Properties Policies Groups Artifacts","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-identifier-system","title":"Element Identifier System","text":"Each element has an identifier that is unique per (variable) service template. This identifier system is required since some conditional elements, such as artifacts, can have non-unique names. The identifier of an element is constructed as follows.
<Element Type>.<Element Name>[@<Element Index>][.<Element Container ID>]\n
Available element types are node
, relation
, property
, group
, policy
, artifact
, input
, output
, technology
, type
, and import
.
For example, consider the given variable service template.
node_templates:\nmy_node:\ntype: my.node\nproperties:\n- my_property:\nvalue: first\nconditions: <VariabilityCondition>\n- my_property:\nvalue: second\nconditions: <VariabilityCondition>\nartifacts:\n- my_artifact:\nfile: path/to/my_artifact_first\nconditions: <VariabilityCondition>\n- my_artifact:\nfile: path/to/my_artifact_second\nconditions: <VariabilityCondition>\n
Next, the following identifiers, among others, exist.
node.my_node
for the node template my_node
.property.my_property@0.node.my_node
for the first property my_property
of the node template my_node
.artifact.my_artifact@1.node.my_node
for the second artifact my_artifact
of the node template my_node
.Each element has a display representation that is unique per (variable) service template. This display system is required since some conditional elements, such as artifacts, can have non-unique names. The display representation of an element is constructed as follows.
<Element Type> \"<Element Name>[@<Element Index>]\"[ of <Element Container Display>]\n
Available element types are Node
, Relation
, Property
, Group
, Policy
, Artifact
, Input
, Output
, Technology
, Type
, and Import
.
For example, consider the given variable service template.
node_templates:\nmy_node:\ntype: my.node\nproperties:\n- my_property:\nvalue: first\nconditions: <VariabilityCondition>\n- my_property:\nvalue: second\nconditions: <VariabilityCondition>\nartifacts:\n- my_artifact:\nfile: path/to/my_artifact_first\nconditions: <VariabilityCondition>\n- my_artifact:\nfile: path/to/my_artifact_second\nconditions: <VariabilityCondition>\n
Next, the following display representations, among others, exist.
Node \"my_node\"
for the node template my_node
.Property \"my_property@0\" of Node \"my_node\"
for the first property my_property
of the node template my_node
.Artifact \"my_artifact@1\" of Node \"my_node\"
for the second artifact my_artifact
of the node template my_node
.We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/","title":"Introduction","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#variability4tosca-conformance-test-suite-10-release-candidate","title":"Variability4TOSCA Conformance Test Suite 1.0 Release Candidate","text":"This document specifies the conformance test suite for the Variability4TOSCA specification which can be used to evaluate Variability4TOSCA implementations. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#conformance-tests","title":"Conformance Tests","text":"Each test is described on a separate page. The description includes typically a variable service template, variability inputs, expected errors, expected variability-resolved service template and so on along with an explanation about the expected processing.
ID Test 1 Operator \"count\" 2 Operator \"exponential_regression\" 3 Operator \"variance\" 4 Operator \"logarithmic_regression\" 5 Operator \"max\" 6 Operator \"mean\" 7 Operator \"median\" 8 Operator \"min\" 9 Operator \"polynomial_regression\" 10 Operator \"standard_deviation\" 11 Operator \"sum\" 12 Operator \"variance\" 13 Operator \"add\" 14 Operator \"div\" 15 Operator \"mod\" (Even) 16 Operator \"add\" (Odd) 17 Operator \"mul\" 18 Operator \"sub\" 19 artifacts-artifact-presence-number-absent 20 artifacts-artifact-presence-number-present 21 artifacts-artifact-presence-string-absent 22 artifacts-artifact-presence-string-present 23 artifacts-conditional 24 artifacts-container-presence-absent 25 artifacts-container-presence-present 26 artifacts-default-alternative 27 artifacts-default-alternative-false 28 artifacts-default-condition 29 artifacts-dont-throw-ambiguous-artifact 30 Artifact Pruning 31 artifacts-pruning-managed-manual 32 artifacts-pruning-managed-rules 33 artifacts-pruning-managed-rules-host 34 artifacts-pruning-managed-rules-multiple-different 35 artifacts-pruning-managed-rules-none 36 artifacts-pruning-manged-rules-multiple-same 37 artifacts-required-artifact-constraint-sat 38 artifacts-required-artifact-constraint-sat-pruning 39 artifacts-required-artifact-constraint-unsat 40 artifacts-throw-ambiguous-artifact 41 artifacts-throw-ambiguous-default 42 artifacts-throw-missing-artifact-container 43 artifacts-unique-artifact-constraint-sat-none 44 artifacts-unique-artifact-constraint-sat-one 45 artifacts-unique-artifact-constraint-sat-other 46 artifacts-unique-artifact-constraint-unsat 47 Operator \"and\" Evaluates to \"True\" (Empty) 48 Operator \"and\" Evaluates to \"false\" 49 Operator \"and\" Evaluates to \"false\" (Nested) 50 Operator \"and\" Evaluates to \"true\" 51 Operator \"and\" Evaluates to \"true\" (Nested) 52 Operator \"implies\": false false -> true 53 Operator \"implies\": false true -> true 54 Operator \"implies\": true false -> false 55 Operator \"implies\": true true -> true 56 Operator \"not\" Evaluates to \"false\" 57 Operator \"not\" Evaluates to \"true\" 58 Operator \"or\" Evaluates to \"False\" (Empty) 59 Operator \"or\" Evaluates to \"False\" 60 Operator \"or\" Evaluates to \"true\" 61 Operator \"or\" Evaluates to \"true\" (All \"true\") 62 Operator \"xor\": all false -> false 63 Operator \"xor\": One ture -> true 64 Operator \"xor\": all true -> false 65 circles-alpha 66 circles-bravo 67 circles-charlie 68 circles-delta 69 circles-echo 70 circles-golf 71 circles-hotel 72 circles-india 73 consistency-throw-hosting-relation-missing 74 consistency-throw-hosting-relation-missing-constraint 75 consistency-throw-multiple-hosting-relations 76 consistency-throw-multiple-hosting-relations-constraint 77 consistency-throw-relation-source-missing 78 consistency-throw-relation-target-missing 79 Operator \"equal\" Evaluates to \"false\" 80 Operator \"equal\" Evaluates to \"true\" 81 Operator \"greater_or_equal\" Evaluates to \"true\" (Greater) 82 Operator \"greater_or_equal\" Evaluates to \"true\" (Equal) 83 Operator \"greater_or_equal\" Evaluates to \"false\" (Less) 84 Operator \"greater\" Evaluates to \"false\" (Equal) 85 Operator \"greater\" Evaluates to \"true\" (Greater) 86 Operator \"greater\" Evaluates to \"false\" (Less) 87 Operator \"in_range\" Evaluates to \"false\" 88 Operator \"in_range\" Evaluates to \"true\" 89 Operator \"length\" Evaluates to \"false\" 90 Operator \"length\" Evaluates to \"true\" 91 Operator \"less_or_equal\" Evaluates to \"true\" (Equal) 92 Operator \"less_or_equal\" Evaluates to \"false\" (Greater) 93 Operator \"less_or_equal\" Evaluates to \"true\" (Less) 94 Operator \"less\" Evaluates to \"false\" (Equal) 95 Operator \"less\" Evaluates to \"false\" (Greater) 96 Operator \"less\" Evaluates to \"true\" (Less) 97 Operator \"max_length\" Evaluates to \"true\" (Equal) 98 Operator \"max_length\" Evaluates to \"false\" (Greater) 99 Operator \"max_length\" Evaluates to \"true\" (Less) 100 Operator \"min_length\" Evaluates to \"true\" (Equal) 101 Operator \"min_length\" Evaluates to \"true\" (Greater) 102 Operator \"min_length\" Evaluates to \"false\" (Less) 103 Operator \"valid_values\" Evaluates to \"false\" 104 Operator \"valid_values\" Evaluates to \"true\" 105 date-operators-after-false 106 date-operators-after-or-same-false 107 date-operators-after-or-same-true 108 date-operators-after-true 109 date-operators-before-false 110 date-operators-before-or-same-false 111 date-operators-before-or-same-true 112 date-operators-before-true 113 date-operators-same-false 114 date-operators-same-true 115 date-operators-within-false 116 date-operators-within-true 117 Conditional Group 118 groups-default-condition 119 groups-default-condition-nothing 120 groups-group-presence-absent 121 groups-group-presence-present 122 groups-prune 123 hosting-aware-pruning-constraints-elastic 124 hosting-aware-pruning-constraints-static 125 hosting-aware-pruning-fig-10-broken 126 hosting-aware-pruning-fig-10-fixed 127 hosting-aware-pruning-host-elastic 128 hosting-aware-pruning-host-static 129 hosting-aware-pruning-motivation-elastic 130 hosting-aware-pruning-motivation-static 131 hosting-aware-pruning-provider-elastic 132 hosting-aware-pruning-provider-static 133 hosting-aware-pruning-transitive-ambiguous 134 hosting-aware-pruning-transitive-both 135 hosting-aware-pruning-transitive-preserved 136 hosting-aware-pruning-transitive-unexpected 137 implications-constraints 138 implications-implied-left 139 implications-implied-right 140 implications-implies-left 141 implications-implies-right 142 implications-incoming-left 143 implications-incoming-right 144 implications-motivating-scenario-cloud 145 implications-motivating-scenario-static 146 implications-requires 147 implications-unexpected 148 implications-naive-constraints 149 implications-naive-implied-left 150 implications-naive-implied-right 151 implications-naive-implies-left 152 implications-naive-implies-right 153 implications-naive-incoming-left 154 implications-naive-incoming-right 155 implications-naive-motivating-scenario-cloud 156 implications-naive-motivating-scenario-static 157 implications-naive-naive 158 implications-naive-naive-another 159 implications-naive-naive-another-no-optimization 160 implications-naive-naive-another-not 161 implications-naive-naive-not 162 implications-naive-requires 163 implications-naive-unexpected 164 implied-default-fixed-left 165 implied-default-fixed-right 166 implied-default-manual-left 167 implied-default-manual-right 168 implied-host-broken 169 implied-host-fixed-left 170 implied-host-fixed-right 171 implied-host-manual-left 172 implied-host-manual-right 173 import-conditional 174 import-empty 175 import-get-import-absent 176 import-get-import-present 177 inputs-conditional 178 inputs-conditional-list 179 inputs-default-alternative 180 inputs-input-presence-absent 181 inputs-input-presence-present 182 inputs-pruning-consumed 183 inputs-pruning-consumed-still 184 inputs-pruning-no-consumer 185 inputs-pruning-not-consumed-anymore 186 inputs-pruning-not-consumed-anymore-v3 187 inputs-unique-input-constraint-sat 188 inputs-unique-input-constraint-sat-other 189 inputs-unique-input-constraint-sat-pruning-consumed 190 inputs-unique-input-constraint-sat-pruning-consumed-default 191 inputs-unique-input-constraint-unsat 192 nodes-conditional 193 nodes-conditional-type 194 nodes-conditional-type-default 195 nodes-default-false-false 196 nodes-default-false-true 197 nodes-default-host-absent 198 nodes-default-host-present 199 nodes-default-true-false 200 nodes-default-true-true 201 nodes-host-presence-absent 202 nodes-host-presence-false-false 203 nodes-host-presence-present 204 nodes-host-presence-true-false 205 nodes-host-presence-true-true 206 nodes-host-presence-true-true-constraint 207 nodes-node-presence-absent 208 nodes-node-presence-present 209 nodes-required-incoming-relation-constraint-sat 210 nodes-required-incoming-relation-constraint-unsat 211 nodes-type-specific 212 Benchmark 213 Operator \"concat\" 214 Get Variability Expression 215 Operator \"concat\" 216 other-logic-expression-false 217 other-logic-expression-true 218 other-logic-value-expression 219 other-nothing 220 other-preset 221 other-presets 222 other-throw-CONTAINER 223 other-throw-SELF 224 other-throw-not-unique 225 Operator \"concat\" 226 Get Variability Expression 227 Get Variability Input 228 other-version 229 other-weight 230 outputs-conditional 231 outputs-conditional-list 232 outputs-default 233 outputs-input-presence-absent 234 outputs-input-presence-present 235 outputs-pruning-not-produced-anymore-unfurl-1 236 outputs-pruning-not-produced-anymore-unfurl-2 237 outputs-pruning-not-produced-anymore-xopera 238 outputs-pruning-not-produced-anymore-xopera-v3 239 outputs-pruning-produced-unfurl 240 outputs-pruning-produced-unfurl-attribute 241 outputs-pruning-produced-unfurl-attribute-not 242 outputs-unique-output-constraint-sat 243 outputs-unique-output-constraint-sat-default 244 outputs-unique-output-constraint-sat-other 245 outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera 246 outputs-unique-output-constraint-sat-pruning-produced-xopera 247 outputs-unique-output-constraint-unsat 248 persistent-persistent 249 persistent-persistent-false 250 persistent-persistent-throw 251 persistent-persistent-undefined 252 policies-conditional 253 policies-default-condition 254 policies-default-condition-nothing 255 Policy Targets Absent Members 256 Policy Targets Absent Nodes 257 Policy Has No Targets 258 Policy Targets Present Member 259 Policy Targets One Present Node 260 Policy Targets Present Nodes 261 policies-policy-presence-absent 262 policies-policy-presence-present 263 Policy Pruning 264 properties-artifact-container-presence-absent 265 properties-artifact-container-presence-present 266 properties-conditional 267 properties-default-alternative 268 properties-default-alternative-false 269 properties-default-condition 270 properties-expression 271 properties-list 272 properties-list-another 273 properties-map 274 properties-map-another 275 properties-node-container-presence-absent 276 properties-node-container-presence-present 277 properties-node-node-presence-CONTAINER-absent 278 properties-node-node-presence-CONTAINER-present 279 properties-node-property-presence-number-absent 280 properties-node-property-presence-number-present 281 properties-node-property-presence-string-absent 282 properties-node-property-presence-string-present 283 properties-properties 284 properties-relation-container-presence-absent 285 properties-relation-container-presence-present 286 properties-throw-ambiguous-property 287 properties-throw-missing-property-container 288 properties-throw-multiple-default 289 properties-unique-property-constraint-sat 290 properties-unique-property-constraint-unsat 291 pruning-alpha-default 292 pruning-alpha-default-naive 293 pruning-alpha-pruning 294 pruning-artifact-default-alpha 295 pruning-artifact-default-bravo 296 pruning-artifact-default-charlie 297 pruning-artifact-default-delta 298 pruning-artifact-default-naive 299 pruning-bravo-default 300 pruning-bravo-pruning 301 pruning-charlie-default 302 pruning-charlie-pruning 303 pruning-delta-default 304 pruning-delta-pruning 305 pruning-echo-default 306 pruning-echo-pruning 307 pruning-foxtrott-default 308 pruning-foxtrott-pruning 309 pruning-hotel-default 310 pruning-hotel-pruning 311 pruning-incoming-artifact-pruning-alpha 312 pruning-incoming-artifact-pruning-bravo 313 pruning-incoming-artifact-pruning-charlie 314 pruning-incoming-artifact-pruning-delta 315 pruning-incoming-artifact-pruning-echo 316 pruning-incoming-artifact-pruning-foxtrott 317 pruning-incoming-artifact-pruning-golf 318 pruning-incoming-artifact-pruning-hotel 319 pruning-incoming-artifact-pruning-naive-alpha 320 pruning-incoming-artifact-pruning-naive-bravo 321 pruning-india-default 322 pruning-india-pruning 323 pruning-juliett-default 324 pruning-juliett-pruning 325 pruning-kilo-default 326 pruning-kilo-pruning 327 pruning-lima-default 328 pruning-lima-pruning 329 pruning-mike-default 330 pruning-mike-pruning 331 pruning-outgoing-relation-absent 332 pruning-outgoing-relation-present 333 pruning-outgoing-target-absent 334 pruning-outgoing-target-present 335 pruning-outgoingnaive-target-present 336 pruning-pruning 337 pruning-pruning-false-false 338 pruning-pruning-false-true 339 pruning-pruning-true-false 340 pruning-pruning-true-true 341 Relation Pruning 342 relationships-conditional 343 relationships-throw-multiple 344 relationships-throw-undefined 345 relationships-throw-unused 346 relationships-type-specific 347 requirement-assignment-conditional 348 requirement-assignment-default-alternative 349 requirement-assignment-default-alternative-false 350 requirement-assignment-default-condition 351 requirement-assignment-default-condition-throw-source 352 requirement-assignment-default-condition-throw-target 353 requirement-assignment-one-hosting-relation 354 requirement-assignment-relation-presence-index-absent 355 requirement-assignment-relation-presence-name-absent 356 requirement-assignment-source-presence-absent 357 requirement-assignment-source-presence-present 358 requirement-assignment-target-presence-absent 359 requirement-assignment-target-presence-present 360 requirement-assignment-throw-multiple-defaults 361 Scenario \"Alpha\" 362 scenario-worker-agent-false 363 scenario-worker-agent-true 364 scenario-worker-worker-false 365 scenario-worker-worker-true 366 technologies-ambiguous 367 technologies-ambiguous-disabled 368 technologies-conditional 369 technologies-constraint 370 technologies-constraint-disabled 371 technologies-default-multiple 372 technologies-default-true 373 technologies-expected 374 technologies-expected-disabled 375 technologies-lowercase 376 technologies-missing 377 technologies-missing-disabled 378 technologies-optimization 379 technologies-optimization-double 380 technologies-optimization-order 381 technologies-optimization-unsat 382 technologies-optimization-weight 383 technologies-pruning 384 technologies-pruning-disabled 385 technologies-rules 386 technologies-rules-v3 387 technologies-throw-required 388 technologies-unique 389 technologies-unique-disabled 390 variability-inputs-implies 391 variability-inputs-no-constraints","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/test-analytical-operators-count/","title":"Operator \"count\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-count/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ncount:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-count/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/","title":"Operator \"exponential_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nexponential_regression:\n- - - 0\n- 1\n- - 1\n- 2.72\n- - 2\n- 7.39\n- - 3\n- 20.09\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 54.6\n
"},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/","title":"Operator \"variance\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlinear_regression:\n- - - 0\n- 0\n- - 1\n- 2\n- - 2\n- 4\n- 100\n
"},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 200\n
"},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/","title":"Operator \"logarithmic_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlogarithmic_regression:\n- - - 0.01\n- -4.61\n- - 0.5\n- -0.7\n- - 1\n- 0\n- - 2\n- 0.69\n- - 3\n- 1\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.34\n
"},{"location":"variability4tosca/tests/test-analytical-operators-max/","title":"Operator \"max\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-max/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-max/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-mean/","title":"Operator \"mean\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-mean/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmean:\n- 1\n- 2\n- 3\n- 4\n- 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-mean/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-median/","title":"Operator \"median\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-median/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmedian:\n- 1\n- 2\n- 3\n- 4\n- 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-median/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 3\n
"},{"location":"variability4tosca/tests/test-analytical-operators-min/","title":"Operator \"min\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-min/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-min/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/","title":"Operator \"polynomial_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\npolynomial_regression:\n- - - 0\n- 0\n- - 1\n- 1\n- - 2\n- 4\n- 2\n- 5\n
"},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 25\n
"},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/","title":"Operator \"standard_deviation\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nstandard_deviation:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.12\n
"},{"location":"variability4tosca/tests/test-analytical-operators-sum/","title":"Operator \"sum\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-sum/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsum:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-sum/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-variance/","title":"Operator \"variance\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-variance/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariance:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-variance/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.25\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/","title":"Operator \"add\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nadd:\n- 10\n- 1\n- 1\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 15\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/","title":"Operator \"div\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ndiv:\n- 10\n- 1\n- 2\n- 5\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/","title":"Operator \"mod\" (Even)","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmod:\n- 10\n- 2\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 0\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/","title":"Operator \"add\" (Odd)","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmod:\n- 11\n- 2\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/","title":"Operator \"mul\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmul:\n- 10\n- 1\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 120\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/","title":"Operator \"sub\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsub:\n- 10\n- 1\n- 1\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 5\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/","title":"artifacts-artifact-presence-number-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- 0\nartifacts:\nartifact_one:\nconditions: false\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/","title":"artifacts-artifact-presence-number-present","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- 0\nartifacts:\nartifact_one:\nconditions: true\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/","title":"artifacts-artifact-presence-string-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- artifact_one\nartifacts:\nartifact_one:\nconditions: false\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/","title":"artifacts-artifact-presence-string-present","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- artifact_one\nartifacts:\nartifact_one:\nconditions: true\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-conditional/","title":"artifacts-conditional","text":""},{"location":"variability4tosca/tests/test-artifacts-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_artifact_check: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\nconditions: true\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/","title":"artifacts-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nartifacts:\nartifact_one:\nconditions:\ncontainer_presence: SELF\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/","title":"artifacts-container-presence-present","text":""},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions:\ncontainer_presence: SELF\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/","title":"artifacts-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: false\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative/","title":"artifacts-default-alternative","text":""},{"location":"variability4tosca/tests/test-artifacts-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-condition/","title":"artifacts-default-condition","text":""},{"location":"variability4tosca/tests/test-artifacts-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/","title":"artifacts-dont-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#description","title":"Description","text":"Artifacts are not ambiguous since unique check is based on name scoped by node.
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-prune/","title":"Artifact Pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/","title":"artifacts-pruning-managed-manual","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nweight: 1\n- component: application\ntechnology: ansible\nartifact: second.artifact.type\nweight: 1\nnode_templates:\napplication:\ntype: application\npersistent: true\ntechnology:\n- ansible:\nartifact: second.artifact.type\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nconditions: false\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#second.artifact.type::ansible\nartifacts:\nsecond_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/","title":"artifacts-pruning-managed-rules-host","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#description","title":"Description","text":"Pruning via rules also works if no host is present. In this case, the technology and the artifact form a circle, while the application provides the presence impulse since its persistent.
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: terraform\nartifact: second.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/","title":"artifacts-pruning-managed-rules-multiple-different","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: terraform\nartifact: first.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/","title":"artifacts-pruning-managed-rules-none","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#description","title":"Description","text":"No rule support artifact \"second_artifact_type\". Hence it is removed since empty \"or\" is assigned which evaluates to false
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/","title":"artifacts-pruning-managed-rules","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nweight: 1\n- component: application\ntechnology: terraform\nartifact: second.artifact.type\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/","title":"artifacts-pruning-manged-rules-multiple-same","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/","title":"artifacts-required-artifact-constraint-sat-pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: true\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/","title":"artifacts-required-artifact-constraint-sat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/","title":"artifacts-required-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/","title":"artifacts-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Artifact \"artifact_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/","title":"artifacts-throw-ambiguous-default","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Artifact \"artifact_one_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/","title":"artifacts-throw-missing-artifact-container","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of artifact \"artifact_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/","title":"artifacts-unique-artifact-constraint-sat-none","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#description","title":"Description","text":"Unique artifact constraints is SAT since no artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nchecks: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/","title":"artifacts-unique-artifact-constraint-sat-one","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#description","title":"Description","text":"Unique artifact constraints is SAT since one artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/","title":"artifacts-unique-artifact-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#description","title":"Description","text":"Unique artifact constraints is SAT since the other one artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/","title":"artifacts-unique-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#description","title":"Description","text":"Unique artifact constraints is UNSAT since two artifacts with same name of same container are present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/","title":"Operator \"and\" Evaluates to \"True\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/","title":"Operator \"and\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- false\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/","title":"Operator \"and\" Evaluates to \"false\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/","title":"Operator \"and\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/","title":"Operator \"and\" Evaluates to \"true\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/","title":"Operator \"implies\": false false -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/","title":"Operator \"implies\": false true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/","title":"Operator \"implies\": true false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/","title":"Operator \"implies\": true true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/","title":"Operator \"not\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/","title":"Operator \"not\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/","title":"Operator \"or\" Evaluates to \"False\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/","title":"Operator \"or\" Evaluates to \"False\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/","title":"Operator \"or\" Evaluates to \"true\" (All \"true\")","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/","title":"Operator \"or\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- true\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-false-all/","title":"Operator \"xor\": all false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-xor-false-all/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-false-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nxor:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-false-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true-all/","title":"Operator \"xor\": all true -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-xor-true-all/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nxor:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true/","title":"Operator \"xor\": One ture -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-xor-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nxor:\n- true\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-xor-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-circles-alpha/","title":"circles-alpha","text":""},{"location":"variability4tosca/tests/test-circles-alpha/#description","title":"Description","text":"node and relation defaults are enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
if node_one is absent, then also node_two and relation_one are absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-bravo/","title":"circles-bravo","text":""},{"location":"variability4tosca/tests/test-circles-bravo/#description","title":"Description","text":"node and relation defaults are enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
node_one is present since true is assigned as condition
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-charlie/","title":"circles-charlie","text":""},{"location":"variability4tosca/tests/test-circles-charlie/#description","title":"Description","text":"(node_one <=> node_two && node_two <=> !node_one) is contradiction
"},{"location":"variability4tosca/tests/test-circles-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnot:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-charlie/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-circles-delta/","title":"circles-delta","text":""},{"location":"variability4tosca/tests/test-circles-delta/#description","title":"Description","text":"node and relation defaults are enabled
node_one is present
node_two checks if node_one is NOT present (second circle)
since node_one is present, node_two is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions:\nnot:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-circles-echo/","title":"circles-echo","text":""},{"location":"variability4tosca/tests/test-circles-echo/#description","title":"Description","text":"node and relation pruning is enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
if node_one is absent, then also node_two and relation_one are absent
since the solution is optimized towards minimal numbers of nodes, the expected template is empty
note, this is the same behaviour as if only node and relation defaults would have been enabled
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-echo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-golf/","title":"circles-golf","text":""},{"location":"variability4tosca/tests/test-circles-golf/#description","title":"Description","text":"node and relation pruning is enabled
node_one checks if relation_two_one or relation_three_one is present
node_three is absent
expected template is empty wrt optimization
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-golf/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-hotel/","title":"circles-hotel","text":""},{"location":"variability4tosca/tests/test-circles-hotel/#description","title":"Description","text":"node and relation pruning is enabled
only node_three is present since pruning does not hold since node_three has no incoming relation in the first place
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-hotel/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-india/","title":"circles-india","text":""},{"location":"variability4tosca/tests/test-circles-india/#description","title":"Description","text":"relation defaults (NOT pruning) is enabled
since node_three is present, relation_three_one is present (condition is not overridden by pruning since relation pruning is not enabled)
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nrequirements:\n- relation_three_one:\nnode: node_one\nconditions:\nsource_presence: SELF\n
"},{"location":"variability4tosca/tests/test-circles-india/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/","title":"consistency-throw-hosting-relation-missing-constraint","text":""},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nhosting_stack_constraint: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: false\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/","title":"consistency-throw-hosting-relation-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nconstraints: false\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: false\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"one\" expected to have a hosting relation\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/","title":"consistency-throw-multiple-hosting-relations-constraint","text":""},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nconstraints: false\noptimization_topology: false\nhosting_stack_constraint: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\n- host:\nnode: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/","title":"consistency-throw-multiple-hosting-relations","text":""},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nconstraints: false\noptimization_topology: false\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\n- host:\nnode: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"one\" has more than one hosting relations\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/","title":"consistency-throw-relation-source-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nconditions: false\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation target \"two\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/","title":"consistency-throw-relation-target-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation source \"one\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/","title":"Operator \"equal\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since not all parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nequal:\n- 1\n- 1\n- 2\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/","title":"Operator \"equal\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since all parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nequal:\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/","title":"Operator \"greater_or_equal\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/","title":"Operator \"greater_or_equal\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/","title":"Operator \"greater_or_equal\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is less than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/","title":"Operator \"greater\" Evaluates to \"false\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/","title":"Operator \"greater\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the second parameter is greater than the first parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/","title":"Operator \"greater\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is less than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/","title":"Operator \"in_range\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter is not in range.
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nin_range:\n- 2\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/","title":"Operator \"in_range\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter is in range.
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nin_range:\n- 1\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/","title":"Operator \"length\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter has not expected length.
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlength:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/","title":"Operator \"length\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter has expected length.
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlength:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/","title":"Operator \"less_or_equal\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/","title":"Operator \"less_or_equal\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/","title":"Operator \"less_or_equal\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is less than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/","title":"Operator \"less\" Evaluates to \"false\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/","title":"Operator \"less\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/","title":"Operator \"less\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is less than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/","title":"Operator \"max_length\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has exactly 5 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/","title":"Operator \"max_length\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has more than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/","title":"Operator \"max_length\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has less than 6 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 6\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/","title":"Operator \"min_length\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has exactly 5 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/","title":"Operator \"min_length\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has more than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/","title":"Operator \"min_length\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has less than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 6\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/","title":"Operator \"valid_values\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter is not a valid value.
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalid_values:\n- 2\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/","title":"Operator \"valid_values\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter is a valid value.
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalid_values:\n- 1\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-after-false/","title":"date-operators-after-false","text":""},{"location":"variability4tosca/tests/test-date-operators-after-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/","title":"date-operators-after-or-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/","title":"date-operators-after-or-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-after-true/","title":"date-operators-after-true","text":""},{"location":"variability4tosca/tests/test-date-operators-after-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-before-false/","title":"date-operators-before-false","text":""},{"location":"variability4tosca/tests/test-date-operators-before-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/","title":"date-operators-before-or-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/","title":"date-operators-before-or-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-before-true/","title":"date-operators-before-true","text":""},{"location":"variability4tosca/tests/test-date-operators-before-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-same-false/","title":"date-operators-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsame:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-same-true/","title":"date-operators-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsame:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-01T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-within-false/","title":"date-operators-within-false","text":""},{"location":"variability4tosca/tests/test-date-operators-within-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nwithin:\n- 2023-01-04T00:00:00.000Z\n- - 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-within-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-within-true/","title":"date-operators-within-true","text":""},{"location":"variability4tosca/tests/test-date-operators-within-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nwithin:\n- 2023-01-02T00:00:00.000Z\n- - 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-within-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-groups-conditional/","title":"Conditional Group","text":""},{"location":"variability4tosca/tests/test-groups-conditional/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- vm\nconditions: false\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/","title":"groups-default-condition-nothing","text":""},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#description","title":"Description","text":"Group \"group_three\" is not removed since its conditions are \"true\".
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nconditions: true\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\ngroup_three:\ntype: tosca.groups.Root\nmembers: []\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-default-condition/","title":"groups-default-condition","text":""},{"location":"variability4tosca/tests/test-groups-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ngroup_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-absent/","title":"groups-group-presence-absent","text":""},{"location":"variability4tosca/tests/test-groups-group-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\ngroup_presence: group_one\ngroups:\ngroup_one:\ntype: group_one\nconditions: false\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-present/","title":"groups-group-presence-present","text":""},{"location":"variability4tosca/tests/test-groups-group-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\ngroup_presence: group_one\ngroups:\ngroup_one:\ntype: group_one\nconditions: true\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\ngroups:\ngroup_one:\ntype: group_one\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-prune/","title":"groups-prune","text":""},{"location":"variability4tosca/tests/test-groups-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ngroup_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nconditions: true\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/","title":"hosting-aware-pruning-constraints-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\nimplied: true\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nimplied: true\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: gcp_database\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/","title":"hosting-aware-pruning-constraints-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\nimplied: true\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nimplied: true\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/","title":"hosting-aware-pruning-fig-10-broken","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-artifact-host\noptimization_topology: min\noptimization_topology_unique: false\nhosting_stack_constraint: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- host: elastic\n- host: static\n- database:\nnode: database\nimplied: true\ndatabase:\ntype: database\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/","title":"hosting-aware-pruning-fig-10-fixed","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: false\nhosting_stack_constraint: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- host: elastic\n- host: static\n- database:\nnode: database\nimplied: true\ndatabase:\ntype: database\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- host: elastic\n- database: database\ndatabase:\ntype: database\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/","title":"hosting-aware-pruning-host-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/","title":"hosting-aware-pruning-host-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/","title":"hosting-aware-pruning-motivation-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: false\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: gcp_database\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/","title":"hosting-aware-pruning-motivation-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/#description","title":"Description","text":"alternative is to model 2 conditions at the direct hosts
2 conditions at shop database connections
alternative is to model 2 conditions at the databases directly
1 condition at monitor
required, since incoming pruning of monitor host is not triggered
5 conditions in total
hosting_stack_constraint has no effect
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: false\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/","title":"hosting-aware-pruning-provider-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\nconditions:\nlogic_expression: is_static\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\nconditions:\nlogic_expression: is_elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/","title":"hosting-aware-pruning-provider-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#description","title":"Description","text":"-
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\nconditions:\nlogic_expression: is_static\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\nconditions:\nlogic_expression: is_elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/","title":"hosting-aware-pruning-transitive-ambiguous","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: false\noptimization_topology: false\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/","title":"hosting-aware-pruning-transitive-both","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/","title":"hosting-aware-pruning-transitive-preserved","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/","title":"hosting-aware-pruning-transitive-unexpected","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/#description","title":"Description","text":"circle at agent
pruned due to optimization
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: false\noptimization_topology: true\noptimization_topology_unique: true\nexpected_hosting_check: false\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implications-constraints/","title":"implications-constraints","text":""},{"location":"variability4tosca/tests/test-implications-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: false\noptimization_topology_unique: true\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\nconstraints:\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_host\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_host\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- dev_database:\nnode: dev_database\n- dev_host:\nnode: dev_host\n- prod_database:\nnode: prod_database\n- prod_host:\nnode: prod_host\ndev_database:\ntype: dev_database\nrequirements:\n- host: dev_host\ndev_host:\ntype: dev_host\nrequirements:\n- host:\nnode: dev_cloud\ndev_cloud:\ntype: dev_cloud\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host:\nnode: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- prod_database: prod_database\n- prod_host: prod_host\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-implied-left/","title":"implications-implied-left","text":""},{"location":"variability4tosca/tests/test-implications-implied-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-right/","title":"implications-implied-right","text":""},{"location":"variability4tosca/tests/test-implications-implied-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-left/","title":"implications-implies-left","text":""},{"location":"variability4tosca/tests/test-implications-implies-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-right/","title":"implications-implies-right","text":""},{"location":"variability4tosca/tests/test-implications-implies-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-incoming-left/","title":"implications-incoming-left","text":""},{"location":"variability4tosca/tests/test-implications-incoming-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-incoming-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\n
"},{"location":"variability4tosca/tests/test-implications-incoming-right/","title":"implications-incoming-right","text":""},{"location":"variability4tosca/tests/test-implications-incoming-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-incoming-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/","title":"implications-motivating-scenario-cloud","text":""},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/","title":"implications-motivating-scenario-static","text":""},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_kubernetes\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: os_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-constraints/","title":"implications-naive-constraints","text":""},{"location":"variability4tosca/tests/test-implications-naive-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\nconstraints:\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_host\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_database\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_host\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_database\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- dev_database:\nnode: dev_database\n- dev_host:\nnode: dev_host\n- prod_database:\nnode: prod_database\n- prod_host:\nnode: prod_host\ndev_database:\ntype: dev_database\nrequirements:\n- host: dev_host\ndev_host:\ntype: dev_host\nrequirements:\n- host:\nnode: dev_cloud\ndev_cloud:\ntype: dev_cloud\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host:\nnode: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- prod_database: prod_database\n- prod_host: prod_host\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-left/","title":"implications-naive-implied-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-implied-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-right/","title":"implications-naive-implied-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-implied-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-left/","title":"implications-naive-implies-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-implies-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-right/","title":"implications-naive-implies-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-implies-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/","title":"implications-naive-incoming-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/","title":"implications-naive-incoming-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/","title":"implications-naive-motivating-scenario-cloud","text":""},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/","title":"implications-naive-motivating-scenario-static","text":""},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_kubernetes\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: os_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/","title":"implications-naive-naive-another-no-optimization","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: false\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- database: database\n- host: static\ndatabase:\ntype: database\nrequirements:\n- host: static\nstatic:\ntype: static\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/","title":"implications-naive-naive-another-not","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another/","title":"implications-naive-naive-another","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- database: database\n- host: static\ndatabase:\ntype: database\nrequirements:\n- host: static\nstatic:\ntype: static\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-not/","title":"implications-naive-naive-not","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: dev_host\n- host:\nnode: prod_host\ndev_host:\ntype: dev_host\nprod_host:\ntype: prod_host\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-not/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive/","title":"implications-naive-naive","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: dev_host\n- host:\nnode: prod_host\ndev_host:\ntype: dev_host\nprod_host:\ntype: prod_host\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (besides optimization)\n
"},{"location":"variability4tosca/tests/test-implications-naive-requires/","title":"implications-naive-requires","text":""},{"location":"variability4tosca/tests/test-implications-naive-requires/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nconditions: false\nright:\ntype: right\nrequirements:\n- far_right: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-requires/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-unexpected/","title":"implications-naive-unexpected","text":""},{"location":"variability4tosca/tests/test-implications-naive-unexpected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implications-requires/","title":"implications-requires","text":""},{"location":"variability4tosca/tests/test-implications-requires/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nconditions: false\nright:\ntype: right\nrequirements:\n- far_right: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-requires/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-unexpected/","title":"implications-unexpected","text":""},{"location":"variability4tosca/tests/test-implications-unexpected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/","title":"implied-default-fixed-left","text":""},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\n- connection:\nnode: right\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: left\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/","title":"implied-default-fixed-right","text":""},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\n- connection:\nnode: right\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: right\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/","title":"implied-default-manual-left","text":""},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\nimplied: false\n- connection:\nnode: right\nimplied: false\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: left\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/","title":"implied-default-manual-right","text":""},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\nimplied: false\n- connection:\nnode: right\nimplied: false\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: right\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/","title":"implied-host-broken","text":""},{"location":"variability4tosca/tests/test-implied-host-broken/#description","title":"Description","text":"Only one hosting relation must be present. Hence, there is a conflict between implied relations and hosting constraints.
"},{"location":"variability4tosca/tests/test-implied-host-broken/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: true\n- host:\nnode: right\nimplied: true\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/","title":"implied-host-fixed-left","text":""},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host: left\n- host: right\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/","title":"implied-host-fixed-right","text":""},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host: left\n- host: right\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/","title":"implied-host-manual-left","text":""},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: false\n- host:\nnode: right\nimplied: false\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/","title":"implied-host-manual-right","text":""},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: false\n- host:\nnode: right\nimplied: false\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: right\nright:\ntype: Right\n
"},{"location":"variability4tosca/tests/test-import-conditional/","title":"import-conditional","text":""},{"location":"variability4tosca/tests/test-import-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: true\n- file: another_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-import-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- some_file\n
"},{"location":"variability4tosca/tests/test-import-empty/","title":"import-empty","text":""},{"location":"variability4tosca/tests/test-import-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: false\n- file: another_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-import-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-import-get-import-absent/","title":"import-get-import-absent","text":""},{"location":"variability4tosca/tests/test-import-get-import-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: false\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimport_presence: 0\n
"},{"location":"variability4tosca/tests/test-import-get-import-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-import-get-import-present/","title":"import-get-import-present","text":""},{"location":"variability4tosca/tests/test-import-get-import-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: true\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimport_presence: 0\n
"},{"location":"variability4tosca/tests/test-import-get-import-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- some_file\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-inputs-conditional-list/","title":"inputs-conditional-list","text":""},{"location":"variability4tosca/tests/test-inputs-conditional-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\n- one:\ntype: string\n- two:\ntype: string\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-inputs-conditional-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-conditional/","title":"inputs-conditional","text":""},{"location":"variability4tosca/tests/test-inputs-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\none:\ntype: string\ntwo:\ntype: string\nconditions: false\nthree:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-inputs-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-default-alternative/","title":"inputs-default-alternative","text":""},{"location":"variability4tosca/tests/test-inputs-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\n- one:\ntype: a\ndefault_alternative: true\n- one:\ntype: b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-inputs-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: a\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/","title":"inputs-input-presence-absent","text":""},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\ninput:\nconditions: false\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\ninput_presence: input\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-present/","title":"inputs-input-presence-present","text":""},{"location":"variability4tosca/tests/test-inputs-input-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\ninput:\nconditions: true\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\ninput_presence: input\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\ninput:\ntype: string\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/","title":"inputs-pruning-consumed-still","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: some_input\nanother_container:\ntype: container\nconditions: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/","title":"inputs-pruning-consumed","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/","title":"inputs-pruning-no-consumer","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/","title":"inputs-pruning-not-consumed-anymore-v3","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\ntopology_template:\nvariability:\noptions:\ntechnology_required: false\nenrich_technologies: false\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/","title":"inputs-pruning-not-consumed-anymore","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/","title":"inputs-unique-input-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/","title":"inputs-unique-input-constraint-sat-pruning-consumed-default","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\nunique_input_constraint: true\ninputs:\n- some_input:\ntype: string\n- some_input:\ntype: string_other\ndefault_alternative: true\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: 0\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/","title":"inputs-unique-input-constraint-sat-pruning-consumed","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\nunique_input_constraint: true\ninputs:\n- some_input:\ntype: string\n- some_input:\ntype: string_other\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: 0\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/","title":"inputs-unique-input-constraint-sat","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\nconditions: false\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string_a\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/","title":"inputs-unique-input-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#description","title":"Description","text":"UNSAT since two inputs are present with same name
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/","title":"nodes-conditional-type-default","text":""},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype:\n- type_one:\nconditions: false\n- type_two:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: type_two\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type/","title":"nodes-conditional-type","text":""},{"location":"variability4tosca/tests/test-nodes-conditional-type/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype:\n- type_one:\nconditions: false\n- type_two:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: type_two\n
"},{"location":"variability4tosca/tests/test-nodes-conditional/","title":"nodes-conditional","text":""},{"location":"variability4tosca/tests/test-nodes-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-nodes-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-false/","title":"nodes-default-false-false","text":""},{"location":"variability4tosca/tests/test-nodes-default-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: false\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-true/","title":"nodes-default-false-true","text":""},{"location":"variability4tosca/tests/test-nodes-default-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: false\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-absent/","title":"nodes-default-host-absent","text":""},{"location":"variability4tosca/tests/test-nodes-default-host-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\ndefault_condition_mode: host\nrequirements:\n- host:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-present/","title":"nodes-default-host-present","text":""},{"location":"variability4tosca/tests/test-nodes-default-host-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\ndefault_condition_mode: host\nrequirements:\n- host:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- host: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-false/","title":"nodes-default-true-false","text":""},{"location":"variability4tosca/tests/test-nodes-default-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-true/","title":"nodes-default-true-true","text":""},{"location":"variability4tosca/tests/test-nodes-default-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/","title":"nodes-host-presence-absent","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: container\nrequirements:\n- host: node\nnode:\ntype: node\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/","title":"nodes-host-presence-false-false","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: container\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-present/","title":"nodes-host-presence-present","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host: node\nnode:\ntype: node\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- host: node\nnode:\ntype: node\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/","title":"nodes-host-presence-true-false","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- host_one: node_one\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/","title":"nodes-host-presence-true-true-constraint","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/","title":"nodes-host-presence-true-true","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nconstraints: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one hosting relations\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/","title":"nodes-node-presence-absent","text":""},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnode_presence: node\nnode:\ntype: node\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-present/","title":"nodes-node-presence-present","text":""},{"location":"variability4tosca/tests/test-nodes-node-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnode_presence: node\nnode:\ntype: node\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode:\ntype: node\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/","title":"nodes-required-incoming-relation-constraint-sat","text":""},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nrelation_pruning: true\ntype_pruning: true\nrequired_incoming_relation_constraint: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\npersistent: true\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/","title":"nodes-required-incoming-relation-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nrelation_pruning: true\ntype_pruning: true\nrequired_incoming_relation_constraint: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\npersistent: true\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-type-specific/","title":"nodes-type-specific","text":""},{"location":"variability4tosca/tests/test-nodes-type-specific/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_default_condition: true\ntype_specific_conditions:\nnode_types:\none:\nconditions:\nor: []\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\n
"},{"location":"variability4tosca/tests/test-nodes-type-specific/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\n
"},{"location":"variability4tosca/tests/test-other-benchmark/","title":"Benchmark","text":""},{"location":"variability4tosca/tests/test-other-benchmark/#description","title":"Description","text":"To benchmark our implementation of a Variability4TOSCA processor, we run several tests. Thereby, a service template is generated and then resolved based on a seed. A seed of value n results in 2n node templates and 2n relationship templates, thus, 4n templates. For example, a seed of 10,000 generates 20,0000 node templates and 20,0000 relationship templates. When variability is resolved, n node templates and n relationship templates are removed.
"},{"location":"variability4tosca/tests/test-other-benchmark/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\nexpressions:\ncondition_0_present:\nequal:\n- variability_input: mode\n- present\ncondition_0_removed:\nequal:\n- variability_input: mode\n- absent\ncondition_1_present:\nequal:\n- variability_input: mode\n- present\ncondition_1_removed:\nequal:\n- variability_input: mode\n- absent\noptions:\ntype_default_condition: true\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nconditions:\nlogic_expression: condition_0_present\nrequirements:\n- relation_present:\nnode: component_1_present\nconditions:\nlogic_expression: condition_0_present\nrelationship: relationship_0_present\n- relation_removed:\nnode: component_1_removed\nconditions:\nlogic_expression: condition_0_removed\nrelationship: relationship_0_removed\ncomponent_0_removed:\ntype: component_type_0_removed\nconditions:\nlogic_expression: condition_0_removed\ncomponent_1_present:\ntype: component_type_1_present\nconditions:\nlogic_expression: condition_1_present\nrequirements:\n- relation_present:\nnode: component_0_present\nconditions:\nlogic_expression: condition_1_present\nrelationship: relationship_1_present\n- relation_removed:\nnode: component_0_removed\nconditions:\nlogic_expression: condition_1_removed\nrelationship: relationship_1_removed\ncomponent_1_removed:\ntype: component_type_1_removed\nconditions:\nlogic_expression: condition_1_removed\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_0_removed:\ntype: relationship_type_0_removed\nrelationship_1_present:\ntype: relationship_type_1_present\nrelationship_1_removed:\ntype: relationship_type_1_removed\n
"},{"location":"variability4tosca/tests/test-other-benchmark/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
mode: present\n
"},{"location":"variability4tosca/tests/test-other-benchmark/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nrequirements:\n- relation_present:\nnode: component_1_present\nrelationship: relationship_0_present\ncomponent_1_present:\ntype: component_type_1_present\nrequirements:\n- relation_present:\nnode: component_0_present\nrelationship: relationship_1_present\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_1_present:\ntype: relationship_type_1_present\n
"},{"location":"variability4tosca/tests/test-other-concat/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-concat/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-concat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nconcat:\n- hello\n- ' '\n- world\n
"},{"location":"variability4tosca/tests/test-other-concat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: hello world\n
"},{"location":"variability4tosca/tests/test-other-default-variability-input/","title":"Get Variability Expression","text":""},{"location":"variability4tosca/tests/test-other-default-variability-input/#description","title":"Description","text":"Assigns \"Miles\" to the variable \"value\" of the node \"container\" since the variability expression \"name\" resolves to \"Miles\".
"},{"location":"variability4tosca/tests/test-other-default-variability-input/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nsome_input:\ndefault:\nconcat:\n- some\n- _\n- value\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariability_input: some_input\n
"},{"location":"variability4tosca/tests/test-other-default-variability-input/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: some_value\n
"},{"location":"variability4tosca/tests/test-other-join/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-join/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-join/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\njoin:\n- - hello\n- world\n- ' '\n
"},{"location":"variability4tosca/tests/test-other-join/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: hello world\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-false/","title":"other-logic-expression-false","text":""},{"location":"variability4tosca/tests/test-other-logic-expression-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname:\nnode_presence: node_one\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nlogic_expression: name\nnode_one:\ntype: node_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-true/","title":"other-logic-expression-true","text":""},{"location":"variability4tosca/tests/test-other-logic-expression-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname:\nnode_presence: node_one\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nlogic_expression: name\nnode_one:\ntype: node_one\nconditions: true\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-other-logic-value-expression/","title":"other-logic-value-expression","text":""},{"location":"variability4tosca/tests/test-other-logic-value-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- equal:\n- token:\n- hello world\n- ' '\n- 1\n- world\n- node_presence: node_one\nnode_one:\ntype: node_one\nconditions: true\n
"},{"location":"variability4tosca/tests/test-other-logic-value-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-other-nothing/","title":"other-nothing","text":""},{"location":"variability4tosca/tests/test-other-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-preset/","title":"other-preset","text":""},{"location":"variability4tosca/tests/test-other-preset/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\npresets:\none:\ninputs:\nmode: one\ntwo:\ninputs:\nmode: two\nexpressions:\nis_one:\nequal:\n- variability_input: mode\n- one\nis_two:\nequal:\n- variability_input: mode\n- two\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions:\nlogic_expression: is_one\ntwo:\ntype: two\nconditions:\nlogic_expression: is_two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-preset/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-presets/","title":"other-presets","text":""},{"location":"variability4tosca/tests/test-other-presets/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\npresets:\none:\ninputs:\nmode: one\ntwo:\ninputs:\nmode: two\nexpressions:\nis_one:\nequal:\n- variability_input: mode\n- one\nis_two:\nequal:\n- variability_input: mode\n- two\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions:\nlogic_expression: is_one\ntwo:\ntype: two\nconditions:\nlogic_expression: is_two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-presets/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/","title":"other-throw-CONTAINER","text":""},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nCONTAINER:\ntype: container\n
"},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node must not be named \"CONTAINER\"\n
"},{"location":"variability4tosca/tests/test-other-throw-SELF/","title":"other-throw-SELF","text":""},{"location":"variability4tosca/tests/test-other-throw-SELF/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nSELF:\ntype: SELF\n
"},{"location":"variability4tosca/tests/test-other-throw-SELF/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node must not be named \"SELF\"\n
"},{"location":"variability4tosca/tests/test-other-throw-not-unique/","title":"other-throw-not-unique","text":""},{"location":"variability4tosca/tests/test-other-throw-not-unique/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_templates:\none:\ntype: one\nconditions:\nnot:\nnode_presence: two\nrequirements:\n- host: one_host\none_host:\ntype: one_host\ntwo:\ntype: two\nconditions:\nnot:\nnode_presence: one\nrequirements:\n- host: two_host\ntwo_host:\ntype: two_host\n
"},{"location":"variability4tosca/tests/test-other-throw-not-unique/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-other-token/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-token/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-token/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ntoken:\n- hello world\n- ' '\n- 1\n
"},{"location":"variability4tosca/tests/test-other-token/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: world\n
"},{"location":"variability4tosca/tests/test-other-value-expression/","title":"Get Variability Expression","text":""},{"location":"variability4tosca/tests/test-other-value-expression/#description","title":"Description","text":"Assigns \"Miles\" to the variable \"value\" of the node \"container\" since the variability expression \"name\" resolves to \"Miles\".
"},{"location":"variability4tosca/tests/test-other-value-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname: Miles\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalue_expression: name\n
"},{"location":"variability4tosca/tests/test-other-value-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: Miles\n
"},{"location":"variability4tosca/tests/test-other-variability-input/","title":"Get Variability Input","text":""},{"location":"variability4tosca/tests/test-other-variability-input/#description","title":"Description","text":"Assigns \"Miles\" to property \"value\" of the node \"container\" since the input \"name\" has the value \"Miles\".
"},{"location":"variability4tosca/tests/test-other-variability-input/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nname:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariability_input: name\n
"},{"location":"variability4tosca/tests/test-other-variability-input/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
name: Miles\n
"},{"location":"variability4tosca/tests/test-other-variability-input/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: Miles\n
"},{"location":"variability4tosca/tests/test-other-version/","title":"other-version","text":""},{"location":"variability4tosca/tests/test-other-version/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\n
"},{"location":"variability4tosca/tests/test-other-version/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-other-weight/","title":"other-weight","text":""},{"location":"variability4tosca/tests/test-other-weight/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nweight: 1\n
"},{"location":"variability4tosca/tests/test-other-weight/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-conditional-list/","title":"outputs-conditional-list","text":""},{"location":"variability4tosca/tests/test-outputs-conditional-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\n- one:\ntype: string\n- two:\ntype: string\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-conditional-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-conditional/","title":"outputs-conditional","text":""},{"location":"variability4tosca/tests/test-outputs-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\none:\ntype: string\ntwo:\ntype: string\nconditions: false\nthree:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-default/","title":"outputs-default","text":""},{"location":"variability4tosca/tests/test-outputs-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\n- one:\ntype: a\ndefault_alternative: true\n- one:\ntype: b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-outputs-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: a\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/","title":"outputs-input-presence-absent","text":""},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\ninput:\nconditions: false\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\noutput_presence: input\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-present/","title":"outputs-input-presence-present","text":""},{"location":"variability4tosca/tests/test-outputs-input-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\ninput:\nconditions: true\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\noutput_presence: input\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/","title":"outputs-pruning-not-produced-anymore-unfurl-1","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/","title":"outputs-pruning-not-produced-anymore-unfurl-2","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue:\neval: '::container::some_property'\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/","title":"outputs-pruning-not-produced-anymore-xopera-v3","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\ntopology_template:\nvariability:\noptions:\ntechnology_required: false\nenrich_technologies: false\noutputs:\ninput:\ntype: string\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/","title":"outputs-pruning-not-produced-anymore-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/","title":"outputs-pruning-produced-unfurl-attribute-not","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: false\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/","title":"outputs-pruning-produced-unfurl-attribute","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/","title":"outputs-pruning-produced-unfurl","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/","title":"outputs-unique-output-constraint-sat-default","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\ndefault_alternative: true\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/","title":"outputs-unique-output-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/","title":"outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\nunique_output_constraint: true\noutputs:\n- input:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\n- input:\ntype: string_b\nvalue:\nget_property:\n- container\n- another_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\n- some_property: some_value\n- another_property:\nconditions: false\nvalue: another_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/","title":"outputs-unique-output-constraint-sat-pruning-produced-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\nunique_output_constraint: true\noutputs:\n- input:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\n- input:\ntype: string_b\nvalue:\nget_property:\n- container\n- another_property\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- some_property: some_value\n- another_property:\nconditions: false\nvalue: another_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/","title":"outputs-unique-output-constraint-sat","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_a\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/","title":"outputs-unique-output-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-false/","title":"persistent-persistent-false","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\npersistent_check: false\noptimization_topology: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\npersistent: false\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-throw/","title":"persistent-persistent-throw","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-throw/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-throw/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node default condition mode \"incoming(naive)-host\" requires at least one persistent node template\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/","title":"persistent-persistent-undefined","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\npersistent_check: false\noptimization_topology: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-persistent-persistent/","title":"persistent-persistent","text":""},{"location":"variability4tosca/tests/test-persistent-persistent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-policies-conditional/","title":"policies-conditional","text":""},{"location":"variability4tosca/tests/test-policies-conditional/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\nconditions: false\n- policy_three:\ntype: policy_three\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_three:\ntype: policy_three\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/","title":"policies-default-condition-nothing","text":""},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#description","title":"Description","text":"Do not remove policy \"policy_one\" since pruning is not forced.
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition/","title":"policies-default-condition","text":""},{"location":"variability4tosca/tests/test-policies-default-condition/#description","title":"Description","text":"Remove policy \"policy_one\" since is has no present targets.
"},{"location":"variability4tosca/tests/test-policies-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/","title":"Policy Targets Absent Members","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes and a group whose both members are absent. Thus, the policy \"policy_one\" has no present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nnode_three:\ntype: node_three\nconditions: false\nnode_four:\ntype: node_four\nconditions: false\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_three\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_one:\ntype: group_one\nmembers: []\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/","title":"Policy Targets Absent Nodes","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes, thus, has no present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/","title":"Policy Has No Targets","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#description","title":"Description","text":"The policy \"policy_one\" has no targets. Thus, the policy has no present targets and, therefore, is removed.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\nconditions:\nhas_present_target: policy_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/","title":"Policy Targets Present Member","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes and a group which has one absent and one present node. Since one node is present, the policy \"policy_one\" has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nnode_three:\ntype: node_three\nconditions: false\nnode_four:\ntype: node_four\nconditions: true\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_three\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_four:\ntype: node_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/","title":"Policy Targets One Present Node","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#description","title":"Description","text":"The policy \"policy_one\" targets one absent and one present node, thus, has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/","title":"Policy Targets Present Nodes","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#description","title":"Description","text":"The policy \"policy_one\" targets two present nodes, thus, has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/","title":"policies-policy-presence-absent","text":""},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\npolicy_presence: policy_one\npolicies:\n- policy_one:\ntype: policy_one\nconditions: false\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-present/","title":"policies-policy-presence-present","text":""},{"location":"variability4tosca/tests/test-policies-policy-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\npolicy_presence: policy_one\npolicies:\n- policy_one:\ntype: policy_one\nconditions: true\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-prune/","title":"Policy Pruning","text":""},{"location":"variability4tosca/tests/test-policies-prune/#description","title":"Description","text":"Remove policy \"policy_one\" even though assigned conditions evaluate to \"true\" since policy pruning is enabled.
"},{"location":"variability4tosca/tests/test-policies-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/","title":"properties-artifact-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions: false\nfile: path\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/","title":"properties-artifact-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions: true\nfile: path\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-conditional/","title":"properties-conditional","text":""},{"location":"variability4tosca/tests/test-properties-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\n- key_two: value_two\n- key_three: value_three\n- key_four:\nvalue: value_four\nconditions: true\nrequirements:\n- connects_to:\nnode: node_two\nrelationship: relation_one\nartifacts:\nartifact_one:\nproperties:\n- property_artifact_one_one:\nvalue: value_artifact_one_one\nconditions: false\n- property_artifact_one_one:\nvalue: value_artifact_one_two\nconditions: true\nnode_two:\ntype: node_two\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\n- key_two: value_two\n- key_three: value_three\n- key_four:\nvalue: value_four\nconditions: true\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\nproperties:\n- property_group_one_one:\nvalue: value_group_one_one\nconditions: false\n- property_group_one_one:\nvalue: value_group_one_two\nconditions: true\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nproperties:\n- property_policy_one_one:\nvalue: value_policy_one_one\nconditions: false\n- property_policy_one_one:\nvalue: value_policy_one_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_two\nkey_two: value_two\nkey_three: value_three\nkey_four: value_four\nrequirements:\n- connects_to:\nnode: node_two\nrelationship: relation_one\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nproperties:\nproperty_artifact_one_one: value_artifact_one_two\nnode_two:\ntype: node_two\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\nkey_one: value_one_two\nkey_two: value_two\nkey_three: value_three\nkey_four: value_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\nproperties:\nproperty_group_one_one: value_group_one_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nproperties:\nproperty_policy_one_one: value_policy_one_two\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative-false/","title":"properties-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-properties-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: true\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_three\nnode_two:\ntype: node_two\nproperties:\nkey_two: value_two_two\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative/","title":"properties-default-alternative","text":""},{"location":"variability4tosca/tests/test-properties-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: false\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nproperties:\nkey_two: value_two_two\n
"},{"location":"variability4tosca/tests/test-properties-default-condition/","title":"properties-default-condition","text":""},{"location":"variability4tosca/tests/test-properties-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nproperty_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-expression/","title":"properties-expression","text":""},{"location":"variability4tosca/tests/test-properties-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nsome_input:\ntype: string\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nexpression:\nvariability_input: some_input\n
"},{"location":"variability4tosca/tests/test-properties-expression/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
some_input: some_value\n
"},{"location":"variability4tosca/tests/test-properties-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: some_value\n
"},{"location":"variability4tosca/tests/test-properties-list-another/","title":"properties-list-another","text":""},{"location":"variability4tosca/tests/test-properties-list-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-list-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-list/","title":"properties-list","text":""},{"location":"variability4tosca/tests/test-properties-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue:\n- value_one_two\n- value_one_three\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-map-another/","title":"properties-map-another","text":""},{"location":"variability4tosca/tests/test-properties-map-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-map-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-map/","title":"properties-map","text":""},{"location":"variability4tosca/tests/test-properties-map/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue:\nsome_key: some_value\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-map/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/","title":"properties-node-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/","title":"properties-node-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/","title":"properties-node-node-presence-CONTAINER-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\nnode_presence: CONTAINER\nvalue: 69\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/","title":"properties-node-node-presence-CONTAINER-present","text":""},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\nnode_presence: CONTAINER\nvalue: 69\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/","title":"properties-node-property-presence-number-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: false\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- 0\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/","title":"properties-node-property-presence-number-present","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: true\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- 0\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/","title":"properties-node-property-presence-string-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: false\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- property_one\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/","title":"properties-node-property-presence-string-present","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: true\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- property_one\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-properties/","title":"properties-properties","text":""},{"location":"variability4tosca/tests/test-properties-properties/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nproperty_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one\nconditions: true\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-properties/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/","title":"properties-relation-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nconditions: false\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/","title":"properties-relation-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nconditions: true\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/","title":"properties-throw-ambiguous-property","text":""},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one: value_one\n- key_one: value_one\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Property \"key_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/","title":"properties-throw-missing-property-container","text":""},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of property \"key_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/","title":"properties-throw-multiple-default","text":""},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: true\n- key_one:\nvalue: value_one_four\ndefault_alternative: true\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Property \"key_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/","title":"properties-unique-property-constraint-sat","text":""},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_property_constraint: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nconditions: false\nvalue: value_one_a\n- key_one: value_one_b\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_b\nkey_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/","title":"properties-unique-property-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_property_constraint: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one: value_one_a\n- key_one: value_one_b\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/","title":"pruning-alpha-default-naive","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/#description","title":"Description","text":"\"naive\" default condition of nodes is enabled
\"naive\" allows that target is removed
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default/","title":"pruning-alpha-default","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-default/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/","title":"pruning-alpha-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/","title":"pruning-artifact-default-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nartifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/","title":"pruning-artifact-default-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/","title":"pruning-artifact-default-charlie","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/","title":"pruning-artifact-default-delta","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/","title":"pruning-artifact-default-naive","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifactnaive\nartifact_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-default/","title":"pruning-bravo-default","text":""},{"location":"variability4tosca/tests/test-pruning-bravo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
target is \"true\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/","title":"pruning-bravo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
target is \"true\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-default/","title":"pruning-charlie-default","text":""},{"location":"variability4tosca/tests/test-pruning-charlie-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
target is \"false\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/","title":"pruning-charlie-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
target is \"false\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-delta-default/","title":"pruning-delta-default","text":""},{"location":"variability4tosca/tests/test-pruning-delta-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"true\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-pruning/","title":"pruning-delta-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-delta-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"true\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-default/","title":"pruning-echo-default","text":""},{"location":"variability4tosca/tests/test-pruning-echo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-echo-pruning/","title":"pruning-echo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-echo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/","title":"pruning-foxtrott-default","text":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/","title":"pruning-foxtrott-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to relation
thus, relation is removed
target is also removed due to pruning
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-default/","title":"pruning-hotel-default","text":""},{"location":"variability4tosca/tests/test-pruning-hotel-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"true\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: true\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/","title":"pruning-hotel-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"true\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: true\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/","title":"pruning-incoming-artifact-pruning-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nartifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/","title":"pruning-incoming-artifact-pruning-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/","title":"pruning-incoming-artifact-pruning-charlie","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/","title":"pruning-incoming-artifact-pruning-delta","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/","title":"pruning-incoming-artifact-pruning-echo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntource:\ntype: tource\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/","title":"pruning-incoming-artifact-pruning-foxtrott","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\nconditions: false\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/","title":"pruning-incoming-artifact-pruning-golf","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/","title":"pruning-incoming-artifact-pruning-hotel","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\nconditions: true\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/","title":"pruning-incoming-artifact-pruning-naive-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifactnaive\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: true\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/","title":"pruning-incoming-artifact-pruning-naive-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifactnaive\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-india-default/","title":"pruning-india-default","text":""},{"location":"variability4tosca/tests/test-pruning-india-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-india-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-india-pruning/","title":"pruning-india-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-india-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-india-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-default/","title":"pruning-juliett-default","text":""},{"location":"variability4tosca/tests/test-pruning-juliett-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, node \"another\" has a relation \"another\" on target
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another:\nnode: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/","title":"pruning-juliett-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, node \"another\" has a relation \"another\" on target
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another:\nnode: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another: target\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-default/","title":"pruning-kilo-default","text":""},{"location":"variability4tosca/tests/test-pruning-kilo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/","title":"pruning-kilo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-lima-default/","title":"pruning-lima-default","text":""},{"location":"variability4tosca/tests/test-pruning-lima-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since \"true\" is assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-lima-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-lima-pruning/","title":"pruning-lima-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-lima-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is also removed due to pruning
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-lima-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-mike-default/","title":"pruning-mike-default","text":""},{"location":"variability4tosca/tests/test-pruning-mike-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
Moreover, node \"ananother\" has a relation on \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since node \"ananother\" has a requirement on it
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother:\nnode: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-pruning/","title":"pruning-mike-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-mike-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
Moreover, node \"ananother\" has a relation on \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since node \"ananother\" has a requirement on it
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother:\nnode: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother: another\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/","title":"pruning-outgoing-relation-absent","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/#description","title":"Description","text":"Thus, there is no circle.
\"relation\" is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/","title":"pruning-outgoing-relation-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/#description","title":"Description","text":"Thus, there is no circle.
\"relation\" is present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/","title":"pruning-outgoing-target-absent","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/#description","title":"Description","text":"Thus, there is no circle.
\"target\" is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/","title":"pruning-outgoing-target-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/","title":"pruning-outgoingnaive-target-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoingnaive\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/","title":"pruning-pruning-false-false","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\npruning: false\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/","title":"pruning-pruning-false-true","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/","title":"pruning-pruning-true-false","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\npruning: false\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/","title":"pruning-pruning-true-true","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-pruning/","title":"pruning-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_one_one:\nnode: node_three\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two_one: node_three\n- relation_two_two: node_five\nnode_three:\ntype: node_three\nconditions: true\nnode_four:\ntype: node_four\nnode_five:\ntype: node_five\nnode_six:\ntype: node_six\nrequirements:\n- relation_six_one: node_five\n
"},{"location":"variability4tosca/tests/test-pruning-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_four:\ntype: node_four\nnode_five:\ntype: node_five\nnode_six:\ntype: node_six\nrequirements:\n- relation_six_one: node_five\n
"},{"location":"variability4tosca/tests/test-pruning-relation/","title":"Relation Pruning","text":""},{"location":"variability4tosca/tests/test-pruning-relation/#description","title":"Description","text":"Node \"node_one\" is not present. The relation \"relation_two\" is also not present even though assigned conditions evaluate to \"true\" since relation pruning is enabled.
"},{"location":"variability4tosca/tests/test-pruning-relation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-pruning-relation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-relationships-conditional/","title":"relationships-conditional","text":""},{"location":"variability4tosca/tests/test-relationships-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\nrthree:\ntype: tthree\n
"},{"location":"variability4tosca/tests/test-relationships-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrthree:\ntype: tthree\n
"},{"location":"variability4tosca/tests/test-relationships-throw-multiple/","title":"relationships-throw-multiple","text":""},{"location":"variability4tosca/tests/test-relationships-throw-multiple/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- two:\nnode: node_two\nrelationship: relation_one\nnode_two:\ntype: node_two\nrequirements:\n- one:\nnode: node_one\nrelationship: relation_one\nrelationship_templates:\nrelation_one:\ntype: relation_one\n
"},{"location":"variability4tosca/tests/test-relationships-throw-multiple/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"relation_one\" is used multiple times\n
"},{"location":"variability4tosca/tests/test-relationships-throw-undefined/","title":"relationships-throw-undefined","text":""},{"location":"variability4tosca/tests/test-relationships-throw-undefined/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-relationships-throw-undefined/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relationship \"rthree\" of relation \"three\" of node \"two\" does not exist!\n
"},{"location":"variability4tosca/tests/test-relationships-throw-unused/","title":"relationships-throw-unused","text":""},{"location":"variability4tosca/tests/test-relationships-throw-unused/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\nrthree:\ntype: rthree\n
"},{"location":"variability4tosca/tests/test-relationships-throw-unused/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"rthree\" is never used\n
"},{"location":"variability4tosca/tests/test-relationships-type-specific/","title":"relationships-type-specific","text":""},{"location":"variability4tosca/tests/test-relationships-type-specific/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nrelation_default_condition: true\ntype_specific_conditions:\nrelationship_types:\nrone:\nconditions:\nor: []\nnode_templates:\nsource:\ntype: source\nrequirements:\n- one:\nnode: target\nrelationship: rone\n- two:\nnode: target\nrelationship: rtwo\ntarget:\ntype: target\nrelationship_templates:\nrone:\ntype: rone\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-relationships-type-specific/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- two:\nnode: target\nrelationship: rtwo\ntarget:\ntype: target\nrelationship_templates:\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/","title":"requirement-assignment-conditional","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/","title":"requirement-assignment-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\n- two_two:\nnode: two\ndefault_alternative: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/","title":"requirement-assignment-default-alternative","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\n- two_two:\nnode: two\ndefault_alternative: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two_two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/","title":"requirement-assignment-default-condition-throw-source","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation source \"one\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/","title":"requirement-assignment-default-condition-throw-target","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: true\ntwo:\ntype: two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation target \"two\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/","title":"requirement-assignment-default-condition","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/","title":"requirement-assignment-one-hosting-relation","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: true\n- host:\nnode: three\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- host: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/","title":"requirement-assignment-relation-presence-index-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- 0\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: false\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- relation_two: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/","title":"requirement-assignment-relation-presence-name-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: false\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- relation_two: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/","title":"requirement-assignment-source-presence-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\nsource_presence: SELF\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/","title":"requirement-assignment-source-presence-present","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nconditions: true\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\nsource_presence: SELF\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nrequirements:\n- relation_one: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/","title":"requirement-assignment-target-presence-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/","title":"requirement-assignment-target-presence-present","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nrequirements:\n- relation_one: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/","title":"requirement-assignment-throw-multiple-defaults","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\ndefault_alternative: true\n- two:\nnode: two\ndefault_alternative: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"two@0\" of node \"one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/","title":"Scenario \"Alpha\"","text":""},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#description","title":"Description","text":"A more complex scenario that shows that the fact that node \"node_two\" is not present propagates even to the property \"property_two\" of the relationship template \"relationship_one\".
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition: false\nnode_pruning: false\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions: false\nproperties:\n- property_one: value_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: true\nrelationship: relationship_one\n- relation_two:\nnode: node_three\nconditions: false\n- relation_three:\nnode: node_four\ndefault_alternative: true\nartifacts:\n- artifact_one: file_one\n- artifact_one:\nfile: file_one\ndefault_alternative: true\nnode_three:\ntype: node_three\nnode_four:\ntype: node_four\nrelationship_templates:\nrelationship_one:\ntype: relationship_one\nproperties:\n- property_two: value_two\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\ngroup_two:\ntype: group_two\nmembers:\n- node_two\n- - node_two\n- relation_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_three:\ntype: node_three\nnode_four:\ntype: node_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/","title":"scenario-worker-agent-false","text":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/#description","title":"Description","text":"worker is absent
agent is absent, thus, also the virtual machine is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions: false\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/","title":"scenario-worker-agent-true","text":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/#description","title":"Description","text":"worker is absent
agent is present, thus, also the virtual machine is present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions: true\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/","title":"scenario-worker-worker-false","text":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/#description","title":"Description","text":"agent is only present if the virtual machine is present, thus, circle
worker is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions:\nhost_presence: SELF\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/","title":"scenario-worker-worker-true","text":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/#description","title":"Description","text":"agent is only present if the virtual machine is present, thus, circle
worker is present, thus, all components are present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions:\nhost_presence: SELF\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: true\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/","title":"technologies-ambiguous-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nambiguous_technology_check: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous/","title":"technologies-ambiguous","text":""},{"location":"variability4tosca/tests/test-technologies-ambiguous/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nambiguous_technology_check: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-conditional/","title":"technologies-conditional","text":""},{"location":"variability4tosca/tests/test-technologies-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/","title":"technologies-constraint-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntechnology_constraint: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-constraint/","title":"technologies-constraint","text":""},{"location":"variability4tosca/tests/test-technologies-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-technologies-default-multiple/","title":"technologies-default-multiple","text":""},{"location":"variability4tosca/tests/test-technologies-default-multiple/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\ndefault_alternative: true\n- terraform:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-technologies-default-multiple/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has multiple default technologies\n
"},{"location":"variability4tosca/tests/test-technologies-default-true/","title":"technologies-default-true","text":""},{"location":"variability4tosca/tests/test-technologies-default-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n- terraform:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-technologies-default-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-expected-disabled/","title":"technologies-expected-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-expected-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: false\ntechnology_pruning: false\ntechnology_constraint: false\nexpected_technology_check: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-expected-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has no present technology\n
"},{"location":"variability4tosca/tests/test-technologies-expected/","title":"technologies-expected","text":""},{"location":"variability4tosca/tests/test-technologies-expected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: false\ntechnology_pruning: false\ntechnology_constraint: false\nexpected_technology_check: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-expected/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" expected to have a technology\n
"},{"location":"variability4tosca/tests/test-technologies-lowercase/","title":"technologies-lowercase","text":""},{"location":"variability4tosca/tests/test-technologies-lowercase/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- Ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-lowercase/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-missing-disabled/","title":"technologies-missing-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-missing-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-missing-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-technologies-missing/","title":"technologies-missing","text":""},{"location":"variability4tosca/tests/test-technologies-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of technology \"ansible@0\" of node \"container\" does not exist\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-double/","title":"technologies-optimization-double","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-double/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_technologies: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\npersistent: true\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nrequirements:\n- relation:\nnode: container_host\nconditions: false\ncontainer_host:\ntype: container_host\ncontainer_host_agent:\ntype: container_host_agent\nrequirements:\n- host:\nnode: container_host\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-double/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/","title":"technologies-optimization-order","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-order/#description","title":"Description","text":"order of technologies does not matter
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/","title":"technologies-optimization-unsat","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#description","title":"Description","text":"technology optimization requires technology pruning
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\ntechnology_pruning: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-weight/","title":"technologies-optimization-weight","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-weight/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_mode: weight\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- terraform:\nconditions: true\nweight: 0.5\n- ansible:\nconditions: true\nweight: 1\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-weight/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::terraform\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization/","title":"technologies-optimization","text":""},{"location":"variability4tosca/tests/test-technologies-optimization/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- terraform:\nconditions: true\n- ansible:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/","title":"technologies-pruning-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\ntechnology_pruning: false\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of technology \"ansible@0\" of node \"container\" does not exist\n
"},{"location":"variability4tosca/tests/test-technologies-pruning/","title":"technologies-pruning","text":""},{"location":"variability4tosca/tests/test-technologies-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-technologies-rules-v3/","title":"technologies-rules-v3","text":""},{"location":"variability4tosca/tests/test-technologies-rules-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: terraform\nhosting:\n- terraform_host\n- component: application\ntechnology: terraform\nhosting:\n- ansible_terraform_host\n- component: another\ntechnology: terraform\nhosting:\n- another_terraform_host\n- component: database\ntechnology:\n- terraform\n- component: dbms\ntechnology:\n- terraform\n- component: application\ntechnology: ansible\nhosting:\n- ansible_host\n- component: application\ntechnology: ansible\nhosting:\n- ansible_terraform_host\n- component: application\ntechnology: helm\nhosting:\n- helm_host\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application::terraform@ansible_terraform_host\nrequirements:\n- host: ansible_terraform_host\n- database: database\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database~database::terraform\nrequirements:\n- host: dbms\ndbms:\ntype: dbms~dbms::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules/","title":"technologies-rules","text":""},{"location":"variability4tosca/tests/test-technologies-rules/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nenrich_technologies: true\ntechnology_rules:\n- component: application\ntechnology: terraform\nhosting:\n- terraform_host\n- component: application\ntechnology: terraform\nhosting:\n- ansible_terraform_host\n- component: another\ntechnology: terraform\nhosting:\n- another_terraform_host\n- component: database\ntechnology: terraform\n- component: dbms\ntechnology: terraform\n- component: application\ntechnology: ansible\nhosting:\n- ansible_host\n- component: application\ntechnology: ansible\nhosting:\n- ansible_terraform_host\n- component: application\ntechnology: helm\nhosting:\n- helm_host\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application::terraform@ansible_terraform_host\nrequirements:\n- host: ansible_terraform_host\n- database: database\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database~database::terraform\nrequirements:\n- host: dbms\ndbms:\ntype: dbms~dbms::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-throw-required/","title":"technologies-throw-required","text":""},{"location":"variability4tosca/tests/test-technologies-throw-required/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nterraform_host:\nderived_from: tosca.nodes.Root\nansible_terraform_host:\nderived_from: tosca.nodes.Root\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\ntechnology_rules:\n- component: ansible_host\ntechnology: terraform\n- component: terraform_host\ntechnology: terraform\n- component: ansible_terraform_host\ntechnology: terraform\n- component: database\ntechnology: terraform\n- component: dbms\ntechnology: terraform\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-throw-required/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"application\" has no technology candidates\n
"},{"location":"variability4tosca/tests/test-technologies-unique-disabled/","title":"technologies-unique-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-unique-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: false\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n- puppet:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-unique-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::puppet\n
"},{"location":"variability4tosca/tests/test-technologies-unique/","title":"technologies-unique","text":""},{"location":"variability4tosca/tests/test-technologies-unique/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n- puppet:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-unique/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering technologies (besides optimization)\n
"},{"location":"variability4tosca/tests/test-variability-inputs-implies/","title":"variability-inputs-implies","text":""},{"location":"variability4tosca/tests/test-variability-inputs-implies/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nimplies: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-implies/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Variability inputs constraints are violated\n
"},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/","title":"variability-inputs-no-constraints","text":""},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"tags/","title":"Tags","text":"This document holds tags used throughout this documentation.
","tags":["Misc"]},{"location":"tags/#algorithms-2022","title":"Algorithms 2022","text":"This document holds colors, fonts, and logos.
","tags":["Misc"]},{"location":"branding/#colors","title":"Colors","text":"This document holds the dependencies used in production. The list is available as CSV. We ensure, that only the licenses 0BSD, Apache-2.0, BSD-2-Clause, BSD-3-Clause, BlueOak-1.0.0, CC-BY-3.0, CC0-1.0, ISC, MIT, PSF, Public Domain, Python-2.0 are used.
ID Dependency License URL 1 @ewoudenberg/difflib@0.1.0 PSF https://github.com/ewoudenberg/difflib.js 2 @isaacs/cliui@8.0.2 ISC https://github.com/yargs/cliui 3 @pkgjs/parseargs@0.11.0 MIT https://github.com/pkgjs/parseargs 4 @yarnpkg/lockfile@1.1.0 BSD-2-Clause https://github.com/yarnpkg/yarn/blob/master/packages/lockfile 5 abort-controller@3.0.0 MIT https://github.com/mysticatea/abort-controller 6 accepts@1.3.8 MIT https://github.com/jshttp/accepts 7 ansi-regex@5.0.1 MIT https://github.com/chalk/ansi-regex 8 ansi-regex@6.0.1 MIT https://github.com/chalk/ansi-regex 9 ansi-styles@4.3.0 MIT https://github.com/chalk/ansi-styles 10 ansi-styles@6.2.1 MIT https://github.com/chalk/ansi-styles 11 anymatch@3.1.3 ISC https://github.com/micromatch/anymatch 12 archiver-utils@5.0.2 MIT https://github.com/archiverjs/archiver-utils 13 archiver@7.0.1 MIT https://github.com/archiverjs/node-archiver 14 argparse@2.0.1 Python-2.0 https://github.com/nodeca/argparse 15 array-flatten@1.1.1 MIT https://github.com/blakeembrey/array-flatten 16 arrify@1.0.1 MIT https://github.com/sindresorhus/arrify 17 async-mutex@0.5.0 MIT https://github.com/DirtyHairy/async-mutex 18 async@3.2.4 MIT https://github.com/caolan/async 19 async@3.2.5 MIT https://github.com/caolan/async 20 asynckit@0.4.0 MIT https://github.com/alexindigo/asynckit 21 at-least-node@1.0.0 ISC https://github.com/RyanZim/at-least-node 22 axios@0.27.2 MIT https://github.com/axios/axios 23 b4a@1.6.6 Apache-2.0 https://github.com/holepunchto/b4a 24 balanced-match@1.0.2 MIT https://github.com/juliangruber/balanced-match 25 bare-events@2.4.2 Apache-2.0 https://github.com/holepunchto/bare-events 26 base64-js@1.5.1 MIT https://github.com/beatgammit/base64-js 27 binary-extensions@2.2.0 MIT https://github.com/sindresorhus/binary-extensions 28 body-parser@1.20.3 MIT https://github.com/expressjs/body-parser 29 brace-expansion@1.1.11 MIT https://github.com/juliangruber/brace-expansion 30 brace-expansion@2.0.1 MIT https://github.com/juliangruber/brace-expansion 31 braces@3.0.2 MIT https://github.com/micromatch/braces 32 braces@3.0.3 MIT https://github.com/micromatch/braces 33 buffer-crc32@0.2.13 MIT https://github.com/brianloveswords/buffer-crc32 34 buffer-crc32@1.0.0 MIT https://github.com/brianloveswords/buffer-crc32 35 buffer@6.0.3 MIT https://github.com/feross/buffer 36 bytes@3.1.2 MIT https://github.com/visionmedia/bytes.js 37 call-bind@1.0.7 MIT https://github.com/ljharb/call-bind 38 call-me-maybe@1.0.2 MIT https://github.com/limulus/call-me-maybe 39 chalk@4.1.2 MIT https://github.com/chalk/chalk 40 chokidar@3.5.3 MIT https://github.com/paulmillr/chokidar 41 ci-info@3.8.0 MIT https://github.com/watson/ci-info 42 color-convert@2.0.1 MIT https://github.com/Qix-/color-convert 43 color-name@1.1.4 MIT https://github.com/colorjs/color-name 44 colors@1.4.0 MIT https://github.com/Marak/colors.js 45 combined-stream@1.0.8 MIT https://github.com/felixge/node-combined-stream 46 commander@12.1.0 MIT https://github.com/tj/commander.js 47 commander@2.20.3 MIT https://github.com/tj/commander.js 48 commander@6.2.1 MIT https://github.com/tj/commander.js 49 compress-commons@6.0.2 MIT https://github.com/archiverjs/node-compress-commons 50 concat-map@0.0.1 MIT https://github.com/substack/node-concat-map 51 content-disposition@0.5.4 MIT https://github.com/jshttp/content-disposition 52 content-type@1.0.5 MIT https://github.com/jshttp/content-type 53 cookie-signature@1.0.6 MIT https://github.com/visionmedia/node-cookie-signature 54 cookie@0.6.0 MIT https://github.com/jshttp/cookie 55 core-util-is@1.0.3 MIT https://github.com/isaacs/core-util-is 56 cors@2.8.5 MIT https://github.com/expressjs/cors 57 crc-32@1.2.2 Apache-2.0 https://github.com/SheetJS/js-crc32 58 crc32-stream@6.0.0 MIT https://github.com/archiverjs/node-crc32-stream 59 cross-spawn@7.0.3 MIT https://github.com/moxystudio/node-cross-spawn 60 dayjs@1.11.11 MIT https://github.com/iamkun/dayjs 61 debug@2.6.9 MIT https://github.com/visionmedia/debug 62 debug@4.3.4 MIT https://github.com/debug-js/debug 63 define-data-property@1.1.4 MIT https://github.com/ljharb/define-data-property 64 delayed-stream@1.0.0 MIT https://github.com/felixge/node-delayed-stream 65 depd@2.0.0 MIT https://github.com/dougwilson/nodejs-depd 66 destroy@1.2.0 MIT https://github.com/stream-utils/destroy 67 dreamopt@0.8.0 MIT https://github.com/andreyvit/dreamopt.js 68 eastasianwidth@0.2.0 MIT https://github.com/komagata/eastasianwidth 69 ee-first@1.1.1 MIT https://github.com/jonathanong/ee-first 70 ejs@3.1.10 Apache-2.0 https://github.com/mde/ejs 71 emoji-regex@8.0.0 MIT https://github.com/mathiasbynens/emoji-regex 72 emoji-regex@9.2.2 MIT https://github.com/mathiasbynens/emoji-regex 73 encodeurl@1.0.2 MIT https://github.com/pillarjs/encodeurl 74 encodeurl@2.0.0 MIT https://github.com/pillarjs/encodeurl 75 end-of-stream@1.4.4 MIT https://github.com/mafintosh/end-of-stream 76 es-define-property@1.0.0 MIT https://github.com/ljharb/es-define-property 77 es-errors@1.3.0 MIT https://github.com/ljharb/es-errors 78 es6-promise@4.2.8 MIT https://github.com/stefanpenner/es6-promise 79 escape-html@1.0.3 MIT https://github.com/component/escape-html 80 etag@1.8.1 MIT https://github.com/jshttp/etag 81 event-target-shim@5.0.1 MIT https://github.com/mysticatea/event-target-shim 82 events@3.3.0 MIT https://github.com/Gozala/events 83 express@4.21.0 MIT https://github.com/expressjs/express 84 extract-zip@2.0.1 BSD-2-Clause https://github.com/maxogden/extract-zip 85 fast-fifo@1.3.2 MIT https://github.com/mafintosh/fast-fifo 86 fd-slicer@1.1.0 MIT https://github.com/andrewrk/node-fd-slicer 87 filelist@1.0.4 Apache-2.0 https://github.com/mde/filelist 88 fill-range@7.0.1 MIT https://github.com/jonschlinkert/fill-range 89 fill-range@7.1.1 MIT https://github.com/jonschlinkert/fill-range 90 finalhandler@1.3.1 MIT https://github.com/pillarjs/finalhandler 91 find-yarn-workspace-root@2.0.0 Apache-2.0 https://github.com/square/find-yarn-workspace-root 92 follow-redirects@1.15.2 MIT https://github.com/follow-redirects/follow-redirects 93 foreground-child@3.1.1 ISC https://github.com/tapjs/foreground-child 94 form-data@4.0.0 MIT https://github.com/form-data/form-data 95 forwarded@0.2.0 MIT https://github.com/jshttp/forwarded 96 fresh@0.5.2 MIT https://github.com/jshttp/fresh 97 friendly-node-cron@1.5.0 MIT https://github.com/FreaKzero/friendly-node-cron 98 fs-extra@11.2.0 MIT https://github.com/jprichardson/node-fs-extra 99 fs-extra@7.0.1 MIT https://github.com/jprichardson/node-fs-extra 100 fs-extra@9.1.0 MIT https://github.com/jprichardson/node-fs-extra 101 fs.realpath@1.0.0 ISC https://github.com/isaacs/fs.realpath 102 function-bind@1.1.1 MIT https://github.com/Raynos/function-bind 103 function-bind@1.1.2 MIT https://github.com/Raynos/function-bind 104 get-intrinsic@1.2.0 MIT https://github.com/ljharb/get-intrinsic 105 get-intrinsic@1.2.4 MIT https://github.com/ljharb/get-intrinsic 106 get-stream@5.2.0 MIT https://github.com/sindresorhus/get-stream 107 glob-parent@5.1.2 ISC https://github.com/gulpjs/glob-parent 108 glob-to-regexp@0.3.0 BSD-2-Clause https://github.com/fitzgen/glob-to-regexp 109 glob@10.4.1 ISC https://github.com/isaacs/node-glob 110 glob@7.2.3 ISC https://github.com/isaacs/node-glob 111 gopd@1.0.1 MIT https://github.com/ljharb/gopd 112 graceful-fs@4.2.11 ISC https://github.com/isaacs/node-graceful-fs 113 has-flag@4.0.0 MIT https://github.com/sindresorhus/has-flag 114 has-property-descriptors@1.0.2 MIT https://github.com/inspect-js/has-property-descriptors 115 has-proto@1.0.1 MIT https://github.com/inspect-js/has-proto 116 has-symbols@1.0.3 MIT https://github.com/inspect-js/has-symbols 117 has@1.0.3 MIT https://github.com/tarruda/has 118 hasown@2.0.2 MIT https://github.com/inspect-js/hasOwn 119 heap@0.2.7 MIT https://github.com/qiao/heap.js 120 http-errors@2.0.0 MIT https://github.com/jshttp/http-errors 121 iconv-lite@0.4.24 MIT https://github.com/ashtuchkin/iconv-lite 122 ieee754@1.2.1 BSD-3-Clause https://github.com/feross/ieee754 123 inflight@1.0.6 ISC https://github.com/npm/inflight 124 inherits@2.0.4 ISC https://github.com/isaacs/inherits 125 ipaddr.js@1.9.1 MIT https://github.com/whitequark/ipaddr.js 126 is-absolute@1.0.0 MIT https://github.com/jonschlinkert/is-absolute 127 is-binary-path@2.1.0 MIT https://github.com/sindresorhus/is-binary-path 128 is-docker@2.2.1 MIT https://github.com/sindresorhus/is-docker 129 is-extglob@2.1.1 MIT https://github.com/jonschlinkert/is-extglob 130 is-fullwidth-code-point@3.0.0 MIT https://github.com/sindresorhus/is-fullwidth-code-point 131 is-glob@4.0.3 MIT https://github.com/micromatch/is-glob 132 is-number@7.0.0 MIT https://github.com/jonschlinkert/is-number 133 is-relative@1.0.0 MIT https://github.com/jonschlinkert/is-relative 134 is-stream@2.0.1 MIT https://github.com/sindresorhus/is-stream 135 is-unc-path@1.0.0 MIT https://github.com/jonschlinkert/is-unc-path 136 is-windows@1.0.2 MIT https://github.com/jonschlinkert/is-windows 137 is-wsl@2.2.0 MIT https://github.com/sindresorhus/is-wsl 138 isarray@1.0.0 MIT https://github.com/juliangruber/isarray 139 isexe@2.0.0 ISC https://github.com/isaacs/isexe 140 isnumber@1.0.0 MIT https://github.com/brycebaril/node-isnumber 141 jackspeak@3.4.0 BlueOak-1.0.0 https://github.com/isaacs/jackspeak 142 jake@10.8.5 Apache-2.0 https://github.com/jakejs/jake 143 js-ini@1.6.0 MIT https://github.com/Sdju/js-ini 144 js-yaml@4.1.0 MIT https://github.com/nodeca/js-yaml 145 json-diff@1.0.6 MIT https://github.com/andreyvit/json-diff 146 json-stable-stringify@1.0.2 MIT https://github.com/ljharb/json-stable-stringify 147 jsonfile@4.0.0 MIT https://github.com/jprichardson/node-jsonfile 148 jsonfile@6.1.0 MIT https://github.com/jprichardson/node-jsonfile 149 jsonify@0.0.1 Public Domain https://github.com/ljharb/jsonify 150 klaw-sync@6.0.0 MIT https://github.com/manidlou/node-klaw-sync 151 lazystream@1.0.1 MIT https://github.com/jpommerening/node-lazystream 152 lnk@1.1.0 MIT https://github.com/schnittstabil/lnk 153 lodash@4.17.21 MIT https://github.com/lodash/lodash 154 logic-solver@2.0.1 MIT https://github.com/meteor/logic-solver 155 lru-cache@10.2.2 ISC https://github.com/isaacs/node-lru-cache 156 lru-cache@6.0.0 ISC https://github.com/isaacs/node-lru-cache 157 media-typer@0.3.0 MIT https://github.com/jshttp/media-typer 158 merge-descriptors@1.0.3 MIT https://github.com/sindresorhus/merge-descriptors 159 methods@1.1.2 MIT https://github.com/jshttp/methods 160 micromatch@4.0.8 MIT https://github.com/micromatch/micromatch 161 mime-db@1.52.0 MIT https://github.com/jshttp/mime-db 162 mime-types@2.1.35 MIT https://github.com/jshttp/mime-types 163 mime@1.6.0 MIT https://github.com/broofa/node-mime 164 minimatch@3.1.2 ISC https://github.com/isaacs/minimatch 165 minimatch@5.1.6 ISC https://github.com/isaacs/minimatch 166 minimatch@9.0.4 ISC https://github.com/isaacs/minimatch 167 minimist@1.2.8 MIT https://github.com/minimistjs/minimist 168 minipass@7.0.3 ISC https://github.com/isaacs/minipass 169 minipass@7.1.2 ISC https://github.com/isaacs/minipass 170 mkdirp@0.5.6 MIT https://github.com/substack/node-mkdirp 171 ms@2.0.0 MIT https://github.com/zeit/ms 172 ms@2.1.2 MIT https://github.com/zeit/ms 173 ms@2.1.3 MIT https://github.com/vercel/ms 174 negotiator@0.6.3 MIT https://github.com/jshttp/negotiator 175 node-cron@3.0.3 ISC https://github.com/merencia/node-cron 176 node-nailgun-client@0.1.2 Apache-2.0 https://github.com/markushedvall/node-nailgun-client 177 node-nailgun-server@0.1.4 Apache-2.0 https://github.com/markushedvall/node-nailgun-server 178 node-plantuml@0.9.0 MIT https://github.com/markushedvall/node-plantuml 179 normalize-path@3.0.0 MIT https://github.com/jonschlinkert/normalize-path 180 object-assign@4.1.1 MIT https://github.com/sindresorhus/object-assign 181 object-inspect@1.13.2 MIT https://github.com/inspect-js/object-inspect 182 ohm-js@16.4.0 MIT https://github.com/harc/ohm 183 on-finished@2.4.1 MIT https://github.com/jshttp/on-finished 184 once@1.4.0 ISC https://github.com/isaacs/once 185 open@7.4.2 MIT https://github.com/sindresorhus/open 186 opentosca-vintner@0.1.7 Apache-2.0 https://github.com/OpenTOSCA/opentosca-vintner 187 os-tmpdir@1.0.2 MIT https://github.com/sindresorhus/os-tmpdir 188 papaparse@5.4.1 MIT https://github.com/mholt/PapaParse 189 parseurl@1.3.3 MIT https://github.com/pillarjs/parseurl 190 patch-package@8.0.0 MIT https://github.com/ds300/patch-package 191 path-is-absolute@1.0.1 MIT https://github.com/sindresorhus/path-is-absolute 192 path-key@3.1.1 MIT https://github.com/sindresorhus/path-key 193 path-scurry@1.11.1 BlueOak-1.0.0 https://github.com/isaacs/path-scurry 194 path-to-regexp@0.1.10 MIT https://github.com/pillarjs/path-to-regexp 195 pend@1.2.0 MIT https://github.com/andrewrk/node-pend 196 picomatch@2.3.1 MIT https://github.com/micromatch/picomatch 197 pify@2.3.0 MIT https://github.com/sindresorhus/pify 198 plantuml-encoder@1.4.0 MIT https://github.com/markushedvall/plantuml-encoder 199 prettier@2.8.7 MIT https://github.com/prettier/prettier 200 process-nextick-args@2.0.1 MIT https://github.com/calvinmetcalf/process-nextick-args 201 process@0.11.10 MIT https://github.com/shtylman/node-process 202 proxy-addr@2.0.7 MIT https://github.com/jshttp/proxy-addr 203 pump@3.0.0 MIT https://github.com/mafintosh/pump 204 qs@6.13.0 BSD-3-Clause https://github.com/ljharb/qs 205 queue-tick@1.0.1 MIT https://github.com/mafintosh/queue-tick 206 range-parser@1.2.1 MIT https://github.com/jshttp/range-parser 207 raw-body@2.5.2 MIT https://github.com/stream-utils/raw-body 208 readable-stream@2.3.8 MIT https://github.com/nodejs/readable-stream 209 readable-stream@4.5.2 MIT https://github.com/nodejs/readable-stream 210 readdir-enhanced@1.5.2 MIT https://github.com/bigstickcarpet/readdir-enhanced 211 readdir-glob@1.1.3 Apache-2.0 https://github.com/Yqnn/node-readdir-glob 212 readdirp@3.6.0 MIT https://github.com/paulmillr/readdirp 213 regression@2.0.1 MIT https://github.com/Tom-Alexander/regression-js 214 rimraf@2.7.1 ISC https://github.com/isaacs/rimraf 215 safe-buffer@5.1.2 MIT https://github.com/feross/safe-buffer 216 safe-buffer@5.2.1 MIT https://github.com/feross/safe-buffer 217 safer-buffer@2.1.2 MIT https://github.com/ChALkeR/safer-buffer 218 sax@1.2.4 ISC https://github.com/isaacs/sax-js 219 semver@7.5.4 ISC https://github.com/npm/node-semver 220 send@0.19.0 MIT https://github.com/pillarjs/send 221 serve-static@1.16.2 MIT https://github.com/expressjs/serve-static 222 set-function-length@1.2.2 MIT https://github.com/ljharb/set-function-length 223 setprototypeof@1.2.0 ISC https://github.com/wesleytodd/setprototypeof 224 shebang-command@2.0.0 MIT https://github.com/kevva/shebang-command 225 shebang-regex@3.0.0 MIT https://github.com/sindresorhus/shebang-regex 226 side-channel@1.0.6 MIT https://github.com/ljharb/side-channel 227 signal-exit@4.1.0 ISC https://github.com/tapjs/signal-exit 228 slash@2.0.0 MIT https://github.com/sindresorhus/slash 229 stats-lite@2.2.0 MIT https://github.com/brycebaril/node-stats-lite 230 statuses@2.0.1 MIT https://github.com/jshttp/statuses 231 streamx@2.18.0 MIT https://github.com/mafintosh/streamx 232 string-width@4.2.3 MIT https://github.com/sindresorhus/string-width 233 string-width@5.1.2 MIT https://github.com/sindresorhus/string-width 234 string_decoder@1.1.1 MIT https://github.com/nodejs/string_decoder 235 string_decoder@1.3.0 MIT https://github.com/nodejs/string_decoder 236 strip-ansi@6.0.1 MIT https://github.com/chalk/strip-ansi 237 strip-ansi@7.1.0 MIT https://github.com/chalk/strip-ansi 238 supports-color@7.2.0 MIT https://github.com/chalk/supports-color 239 sync-directory@6.0.5 ISC https://github.com/hoperyy/sync-directory 240 systeminformation@5.22.11 MIT https://github.com/sebhildebrandt/systeminformation 241 tar-stream@3.1.7 MIT https://github.com/mafintosh/tar-stream 242 text-decoder@1.1.0 Apache-2.0 https://github.com/holepunchto/text-decoder 243 tmp@0.0.33 MIT https://github.com/raszi/node-tmp 244 to-regex-range@5.0.1 MIT https://github.com/micromatch/to-regex-range 245 toidentifier@1.0.1 MIT https://github.com/component/toidentifier 246 tslib@2.5.0 0BSD https://github.com/Microsoft/tslib 247 type-is@1.6.18 MIT https://github.com/jshttp/type-is 248 unc-path-regex@0.1.2 MIT https://github.com/regexhq/unc-path-regex 249 underscore@1.13.6 MIT https://github.com/jashkenas/underscore 250 universalify@0.1.2 MIT https://github.com/RyanZim/universalify 251 universalify@2.0.0 MIT https://github.com/RyanZim/universalify 252 unpipe@1.0.0 MIT https://github.com/stream-utils/unpipe 253 util-deprecate@1.0.2 MIT https://github.com/TooTallNate/util-deprecate 254 utils-merge@1.0.1 MIT https://github.com/jaredhanson/utils-merge 255 uuid@10.0.0 MIT https://github.com/uuidjs/uuid 256 uuid@8.3.2 MIT https://github.com/uuidjs/uuid 257 vary@1.1.2 MIT https://github.com/jshttp/vary 258 which@2.0.2 ISC https://github.com/isaacs/node-which 259 wordwrap@1.0.0 MIT https://github.com/substack/node-wordwrap 260 wrap-ansi@7.0.0 MIT https://github.com/chalk/wrap-ansi 261 wrap-ansi@8.1.0 MIT https://github.com/chalk/wrap-ansi 262 wrappy@1.0.2 ISC https://github.com/npm/wrappy 263 xml2js@0.6.2 MIT https://github.com/Leonidas-from-XIV/node-xml2js 264 xmlbuilder@11.0.1 MIT https://github.com/oozcitak/xmlbuilder-js 265 yallist@4.0.0 ISC https://github.com/isaacs/yallist 266 yaml@2.3.2 ISC https://github.com/eemeli/yaml 267 yauzl@2.10.0 MIT https://github.com/thejoshwolfe/yauzl 268 zip-stream@6.0.1 MIT https://github.com/archiverjs/node-zip-streamWe fixed the following issues by patching the dependencies.
No, Vintner is not an orchestrator. But it is possible to deploy applications using orchestrator plugins.
","tags":["Misc"]},{"location":"faq/#how-can-i-contribute","title":"How can I contribute?","text":"Contributions are very much welcome. Please read Development and Code of Conduct.
","tags":["Misc"]},{"location":"faq/#under-which-license-is-vintner-available","title":"Under which license is Vintner available?","text":"This project is licensed under Apache-2.0.
","tags":["Misc"]},{"location":"getting-started/","title":"Getting Started","text":"In this example, we will deploy a textfile on our local machine which has a different content depending on our input. This is just a simple example without any dependencies, such as a Docker Engine or a cloud. For a more complex scenario including OpenStack and GCP see Motivating Scenario.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
We currently support xOpera and Unfurl. Since both can only be installed on Linux, we provide a WSL integration for both. We configure and enable xOpera. For more information see Installation.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
Next, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template getting-started --path examples/xopera-getting-started\n
Next, we initialize an application instance.
vintner instances init --instance getting-started --template getting-started\n
The imported template contains the following conditional node templates.
first:\ntype: textfile\nconditions: {logic_expression: is_first}\nproperties:\ncontent: 'First Textfile has been selected!'\nrequirements:\n- host: node: localhost\nconditions: {logic_expression: is_first}\nsecond:\ntype: textfile\nconditions: {logic_expression: is_second}\nproperties:\ncontent: 'Second Textfile has been selected!'\nrequirements:\n- host: node: localhost\nconditions: {logic_expression: is_second}\n
We intend to deploy the first textfile. We specify this when resolving variability.
vintner instances resolve --instance getting-started --presets first\n
Finally, we deploy the application.
vintner instances deploy --instance getting-started\n
The deployed textfile has the content as expected.
/tmp/vintner-getting-started.txtFirst Textfile has been selected!\n
Eventually, we undeploy the application.
vintner instances undeploy --instance getting-started\n
","tags":["Vintner","Guide","xOpera","Unfurl"]},{"location":"installation/","title":"Installation","text":"This document holds instructions on installing Vintner.
","tags":["Vintner","Docker"]},{"location":"installation/#script","title":"Script","text":"Vintner can be installed on Linux x64/ arm64 and Windows x64 using our installation scripts.
Linux x64/ arm64Windows x64curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Install a specific version as follows.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo VERSION=${VERSION} bash -\n
powershell -Command \"& {Invoke-WebRequest -Uri 'https://vintner.opentosca.org/install.ps1' -UseBasicParsing | Invoke-Expression}\"\n
Install a specific version as follows.
Invoke-WebRequest -Uri \"https://vintner.opentosca.org/install.ps1\" -OutFile install.ps1\n$env:VERSION = \"DESIRED_VERSION\"\npowershell -ExecutionPolicy Bypass -File .\\install.ps1\nRemove-Item install.ps1\n
","tags":["Vintner","Docker"]},{"location":"installation/#npm","title":"NPM","text":"Vintner can be installed using npm
. Ensure, that npm bin -g
is in your $PATH
.
npm install --global opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#yarn-classic","title":"Yarn (Classic)","text":"Vintner can be installed using yarn
(classic). Ensure, that yarn global bin
is in your $PATH
.
yarn global add opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#yarn-modern","title":"Yarn (Modern)","text":"Vintner can be installed using yarn
(modern). However, this will not install Vintner permanently but only temporary.
yarn dlx opentosca-vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#choco","title":"Choco","text":"Vintner can be installed using choco
.
choco install opentosca-vintner -y\n
","tags":["Vintner","Docker"]},{"location":"installation/#docker","title":"Docker","text":"Vintner can be installed using Docker. The Image is about 3GB large and contains tools, such as xOpera, Unfurl, Ansible, Terraform, and all of our examples.
","tags":["Vintner","Docker"]},{"location":"installation/#github-container-registry","title":"GitHub Container Registry","text":"Pull the latest image from the GitHub Container Registry.
docker pull ghcr.io/opentosca/opentosca-vintner:latest\n
","tags":["Vintner","Docker"]},{"location":"installation/#starting-the-container","title":"Starting the Container","text":"First, we create directories for persisting data.
mkdir vintner\ncd vintner\n\nmkdir data\nmkdir shared\n
Next, we start the container.
docker run \\\n--detach \\\n--volume ${PWD}/data:/vintner/data \\\n--volume ${PWD}/shared:/vintner/shared \\\n--network host \\\n--name vintner \\\nghcr.io/opentosca/opentosca-vintner:latest\n
The command consists of the following aspects.
--detach
starts the container in the background.--volume ${PWD}/data:/vintner/data
persists all data written by Vintner.--volume ${PWD}/shared:/vintner/shared
should be used to share data between the host and the container, e.g., CSARs or GCP credentials.--network host
uses the host network, e.g., for ipv6 support.--name vintner
is the container name. ghcr.io/opentosca/opentosca-vintner:latest
pulls the latest Docker ImageInside the container, the following directories are of interest.
/vintner/data
holds all data written by Vintner./vintner/shared
should be used to share data between the host and the container, e.g., CSARs or GCP credentials./vintner/examples
holds the examples directory of the repository.The container runs in the background. Vintner is executed as follows.
docker exec -it vintner vintner --version\n
On Linux, we set an alias to directly use Vintner as command in the terminal on the docker host. To persist the alias, add the alias, e.g., to ~/.bashrc
(requires reloading the session).
alias vintner=\"docker exec -it vintner vintner\"\n
Now, Vintner is available as follows.
vintner --version\n
","tags":["Vintner","Docker"]},{"location":"installation/#xopera","title":"xOpera","text":"xOpera is already installed inside the container and Vintner is already correctly configured to connect to xOpera. By default, xOpera is already enabled. Enable xOpera as follows.
docker exec -it vintner vintner orchestrators enable --orchestrator xopera\n
","tags":["Vintner","Docker"]},{"location":"installation/#unfurl","title":"Unfurl","text":"Unfurl is already installed inside the container and Vintner is already correctly configured to connect to Unfurl. Enable Unfurl as follows.
docker exec -it vintner vintner orchestrators enable --orchestrator unfurl\n
","tags":["Vintner","Docker"]},{"location":"installation/#stopping-the-container","title":"Stopping the Container","text":"Ensure to only stop Vintner, once Vintner is idle. Otherwise, data and deployments will be corrupted. Stop the container as follows.
docker stop vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#watching-the-logs-of-the-container","title":"Watching the Logs of the Container","text":"Watch the logs of the container as follows.
docker logs -f vintner\n
","tags":["Vintner","Docker"]},{"location":"installation/#debugging-the-container","title":"Debugging the Container","text":"In case we need to debug something inside the container or perform any administrative ./tasks, we can exec into the container as follows. This starts a shell inside the container.
docker exec -it vintner /bin/bash\n
","tags":["Vintner","Docker"]},{"location":"installation/#manual","title":"Manual","text":"Install Vintner manually by downloading the binary for your system and adding it to $PATH
. There are no other dependencies required. The following example shows the installation on selected platforms and architectures.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.xz\ntar -xf vintner-linux-x64.xz\nrm vintner-linux-x64.xz\nmv vintner-linux-x64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-arm64.xz\ntar -xf vintner-linux-arm64.xz\nrm vintner-linux-arm64.xz\nmv vintner-linux-arm64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-alpine-x64.xz\ntar -xf vintner-alpine-x64.xz\nrm vintner-alpine-x64.xz\nmv vintner-alpine-x64 /usr/bin/vintner\nchmod +x /usr/bin/vintner\nvintner setup init\n
First, create the directory $env:USERPROFILE\\bin
and add it to your PATH. We recommend to do this manually.
$userBin = \"$env:USERPROFILE\\bin\"\nif (-not (Test-Path -Path $userBin)) {\nNew-Item -ItemType Directory -Force -Path \"$env:USERPROFILE\\bin\"\n$userPath = [System.Environment]::GetEnvironmentVariable(\"PATH\", [System.EnvironmentVariableTarget]::User)\n$newPath = \"$userPath$userBin;\"\n[System.Environment]::SetEnvironmentVariable(\"PATH\", $newPath, [System.EnvironmentVariableTarget]::User)\n}\n
Next, install vintner.
$userBin = \"$env:USERPROFILE\\bin\"\nInvoke-WebRequest -URI https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-win-x64.exe.xz -OutFile vintner-win-x64.exe.xz\ntar -xf vintner-win-x64.exe.xz\nRemove-Item vintner-win-x64.exe.xz\nMove-Item vintner-win-x64.exe $userBin\\vintner.exe\nvintner setup init\n
The following binaries are available:
Platform Architecture Binary Archive Signature Checksum Alpine x64 link link link link Linux arm64 link link link link Linux x64 link link link link Windows x64 link link link link","tags":["Vintner","Docker"]},{"location":"installation/#checksum","title":"Checksum","text":"To verify the integrity of a binary, proceed as follows. The following is a walkthrough for vintner-linux-x64
. We assume that vintner-linux-x64
is present in the current working directory.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.sha256\nsha256sum --check vintner-linux-x64.sha256\n
","tags":["Vintner","Docker"]},{"location":"installation/#signature","title":"Signature","text":"Every binary is cryptographically signed.
","tags":["Vintner","Docker"]},{"location":"installation/#verification","title":"Verification","text":"To verify a signature of a binary, first import our public key and download the respective signature. The following is a walkthrough for vintner-linux-x64
using gpg
. We assume that vintner-linux-x64
is present in the current working directory.
First, we import the public key.
curl https://vintner.opentosca.org/vintner-release.gpg | gpg --import\n
Next, we download the signature.
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.asc\n
Next, we verify the signature.
gpg --verify vintner-linux-x64.asc\n
The output should be something as follows.
gpg: assuming signed data in 'vintner-linux-x64'\ngpg: Signature made Sun Oct 23 19:12:56 2022 UTC\ngpg: using RSA key 4BB862B810B792CC072D59DB964183A1485881AD\ngpg: Good signature from \"vintner-release\" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 4BB8 62B8 10B7 92CC 072D 59DB 9641 83A1 4858 81AD\n
","tags":["Vintner","Docker"]},{"location":"installation/#public-key","title":"Public Key","text":"The following public key shall be used for verifying signatures. The public key is also available as download.
pub rsa4096/964183A1485881AD 2022-10-23 [SC]\n4BB862B810B792CC072D59DB964183A1485881AD\nuid [unknown] vintner-release\nsub rsa4096/B230BD6651AA1BB8 2022-10-23 [E]\n
-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGNVcowBEAC0jzKuuLE6AqCaRvjp1mwCC76Px6wG4jgvrXfraCaOf3Y3uywW\nlD3NNfqb/rc/FYQXH9lIU9n6zIB47mK0zoeHWWqPjRp6BTTbbMjePinHCb2K1XM5\nwLglw0OeC2T/NvfbU7FbN/QVFgQPWL16UhuoQhfraax6TFGO9iF/+yhG7AYZ+vAE\n7GkaPQAlzGrbbyffaBYzoqgalHslmxG9RvAxDBaQXrcsqJiv6Zfv8rDNdPlGk7mX\nUIbMHUuFzcep15ZQy+9PY/JLyYBUUDNhAXKLomjNPuCQHvZ/DS/XveIW+l6EYSLq\nr6B/XCFkVWUO2RugvmpEacUSLrIL39ceUh0dYnpEDU4Z8dRlAyVaswR5j90bPrgz\nNSaLF5NQrWlE8gksvK2KYog9Q4lrAdD0wQNV0bnU6YG3TM71wXZim8PokTzxPrA0\nJAigEHzN9nbHSzjB71m8cVt6Zl4lGCCYqr8jSjKAUAN01koQVZd/lFljXfI27NcG\ny7yYBc97IWaOM039kyPKKVGAB3I3l9d90+RL3tSET2MwPN3Vjlq3ArJ6QBKeB80S\nHgRroYVXx+dCJpZhMeeTC8kVjWNL1kctwOMtxWU7N4fO+pi2BW1F5QHlYWJj2fRY\nMp9LE9NYXD1UO/8N1bT2RLGPwrmXXCJF20UDc63wuKzO0IBgXBvPArkUtwARAQAB\ntA92aW50bmVyLXJlbGVhc2WJAk4EEwEIADgWIQRLuGK4ELeSzActWduWQYOhSFiB\nrQUCY1VyjAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCWQYOhSFiBraf5\nD/4mHhD7nwLQ87bE4d6jPB9prwN86eT3bpz1wXoVwFJfArJ7I3wH/0uQe0GXGbJx\nG9TUdQHAGgN6/e99x54Dg4n4Qzap4W5baYlE3Klu6BUZOx9RKhSdtGfCk0+kUpxV\nlMNLWeXFeHepCp3CwKdH3gkwcWxaBBSsYE2ayk34+CXs3ftttRRUPmCCyxk+XiM9\nHSDO/1yIdiwO1XPFVuFZA150wdW2KYL4AuG4aB7lh1nd6jNgoz7LjwdpWN4Sa+38\n5AkQVez1n8Ru1ul4GRPbS2T+OZu6aoITe6i3JxDEAL/ljPN07ufiqFnTYKh8yUsl\npPOpoM6ytMgcPlSxDfyhWSKw4aFYEJYT6Teeniup4ElywOJsBHfQ6Tl9Ix9nVti1\n9h+xbO7mik802AVYdyXtBrZHNdaUClsJjYpL17mivuZ1JoFNAmLPo1nTr/4IVuiI\nA/LoKotLsL9OI+4rhXzsvIyvJBXHhcDp7TOjfEp8S9tLygDLnlC4lsJLzVdDamq2\n/iDnucQu3TMRoVLrZwVAtsr5GyazmAZcpBjkh88Rgf4iKWbAesG7yGgJdOJ5Bi81\nvmm25Sks+UxaXQzXcTe6ga80o5dqm1KYIkoj+assnA0LwOh1GZt7FZaSoQqXERKm\nyEjOAXNt8ZhewyJZGizYhGUslFOQA/8/kKBKcW9hxqTqLbkCDQRjVXKMARAA2MNq\nipSOqaLOzDz4EULTYknshTe34bKw4EDYVbTeHhIJKr1VWkPo8XK9o74+NgiwpI2H\nfPlO61BMm0FWRq9RUPQHNWU6qtV2KimQuvTdlwUiiX9uLeJvU6DO25350d7b9RdZ\naXUT1In9Ziya67ThsnXQqPusUyV7OEFI9xLX8EsmrZjw/7S3ACJ0ekehq0tRcPJo\nhS5bmN75V9YZVmQViW5nuUfg3iifhsn6xMSBV2oQ+vg0qFwKlTRO1a12ltJuJjCB\nFAtB3C8aI/tl//KRnkyuARmrtGtaht0oCbi+J3/1ChnTvbEXlMG65mNw/OXz+KsI\nGPn4dOvigMQMTfTcvSX6pT4H3xmadFl4pF+8gmysxZuSMhTrPhLXitu24r9DxRrY\ndAibrXOJu7J20+8ZttvRAiEUYAvUyQVtgsc0aAkbUGGBwt4NmdMb0mbN34X0bKPV\nXGc/JImn1pZd1h7zzO4nHlJPDtjb5/s4C3g9isnvFHFXmAIfV9q94e0lXmI5xsQY\nrGqcQzT8JT8S2SpvX/2ABPWyLBAxveDAKZpKNu6uasG2AeA8GpNqOGJq4S7IkaUx\n1xNaQzkJvemKWefslExVAhV1uv2cOxCIq8wTxsozRxs+5WzWxIfT/ob60edKgMkn\nz8NfPbCZw5PkHf/e0pbkbGJI8F2VerjubSSNDEMAEQEAAYkCNgQYAQgAIBYhBEu4\nYrgQt5LMBy1Z25ZBg6FIWIGtBQJjVXKMAhsMAAoJEJZBg6FIWIGtx80QAIOGvqB5\nX+E6VvblU5HHbj8mSZOqWKWgDpnKlehEjEx5UxFgJckmywhYy6UpxjLVGUvIaDLj\nXTmekqV32PUzaLEA5Z/n7nnNBXhVkAPReXqOrpMru+G6q5EgEBtAqVBx34J1Wq/f\nFBWVq4qoPVQrIuvJRtpQJTl7EDWfFZNDrbWCyNjWCQFOU0RzbpGN8Psr2yQZGBpa\n/BkobV3ffJnNvWd2qqP0eOsmOZUrERO3wlbb4Gfi7IvbBaqrwcXw9PwgQ0mWGXoH\nIGvcc3XgEoN4j/RCrkz8LufgkmDjjcomfwXMC/g7NWChCxlGAmZPqZnU5hCLLHpL\nnIyEZJEhpWXk2VGwgiSl+LhfSk1jWGStVL92bgW/YGu7+rjWA6+2hu9PZ0bneAWb\nB/ho86sE5y9eeSUM87aN0E5rWCmzx8ijTKOcukdpk+yJS1L1d/CxAv5twSrA23ne\naTBoNMm9JmUxJU8ILWY9DRBWV1FLsoBy3v3+ztQWz6i3bPZKNVgPdQD2XyXMZQfu\nZWvvd6zqXqPPX38sveW+jMyw4jUORWYkjF1MOP/YtmmuVbdcvJNTrwLlN+KWzSzd\ne83fmHrZs0iN43SQBPNtz3hYWnwpQLZCSgLa0UKzaVWLkhHA/QBFOPMQUNwdfaHq\nq2BZ9kJ+ruFawgv9hjTz2vYO/EGXwZuqcvHB\n=MPBe\n-----END PGP PUBLIC KEY BLOCK-----\n
","tags":["Vintner","Docker"]},{"location":"interface/","title":"Interface","text":"This document holds the interface specification.
","tags":["Vintner"]},{"location":"interface/#vintner-assets-clean","title":"vintner assets clean","text":"cleans all assets
CLIcURLJavaScriptPythonKotlinvintner assets clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/assets/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-assets-content","title":"vintner assets content","text":"shows content of an asset
CLIcURLJavaScriptPythonKotlinvintner assets content --name ${NAME}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\"}' \\\n${SERVER_ADDRESS}/assets/content\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/content\", {\nname: NAME\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/content\", json={\n\"name\": NAME\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/content\", json=mapOf(\n\"name\" to NAME\n))\n
Option Mandatory Type Description name true string name","tags":["Vintner"]},{"location":"interface/#vintner-assets-delete","title":"vintner assets delete","text":"deletes an asset
CLIcURLJavaScriptPythonKotlinvintner assets delete --name ${NAME}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\"}' \\\n${SERVER_ADDRESS}/assets/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/delete\", {\nname: NAME\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/delete\", json={\n\"name\": NAME\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/delete\", json=mapOf(\n\"name\" to NAME\n))\n
Option Mandatory Type Description name true string name","tags":["Vintner"]},{"location":"interface/#vintner-assets-import","title":"vintner assets import","text":"imports an asset
CLIcURLJavaScriptPythonKotlinvintner assets import --name ${NAME} --file ${FILE} --content ${CONTENT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"name\": \"${NAME}\", \"file\": \"${FILE}\", \"content\": \"${CONTENT}\"}' \\\n${SERVER_ADDRESS}/assets/import\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/import\", {\nname: NAME,\nfile: FILE,\ncontent: CONTENT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/import\", json={\n\"name\": NAME,\n\"file\": FILE,\n\"content\": CONTENT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/import\", json=mapOf(\n\"name\" to NAME,\n\"file\" to FILE,\n\"content\" to CONTENT\n))\n
Option Mandatory Type Description name true string name (must match /^[a-z-]+$/) file true string path to a file content true string content to import","tags":["Vintner"]},{"location":"interface/#vintner-assets-list","title":"vintner assets list","text":"lists all assets
CLIcURLJavaScriptPythonKotlinvintner assets list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/assets/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/assets/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/assets/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/assets/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-about","title":"vintner info about","text":"general information
CLIcURLJavaScriptPythonKotlinvintner info about
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/about\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/about\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/about\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/about\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-author","title":"vintner info author","text":"open author
CLIcURLJavaScriptPythonKotlinvintner info author
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/author\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/author\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/author\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/author\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-contact","title":"vintner info contact","text":"contact us
CLIcURLJavaScriptPythonKotlinvintner info contact
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/contact\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/contact\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/contact\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/contact\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-dependencies","title":"vintner info dependencies","text":"dependencies used to implement vintner
CLIcURLJavaScriptPythonKotlinvintner info dependencies
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/dependencies\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/dependencies\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/dependencies\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/dependencies\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-docs","title":"vintner info docs","text":"open documentation
CLIcURLJavaScriptPythonKotlinvintner info docs
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/docs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/docs\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/docs\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/docs\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-license","title":"vintner info license","text":"license of vintner
CLIcURLJavaScriptPythonKotlinvintner info license
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/license\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/license\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/license\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/license\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-info-repo","title":"vintner info repo","text":"open repository
CLIcURLJavaScriptPythonKotlinvintner info repo
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/info/repo\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/info/repo\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/info/repo\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/info/repo\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-ansible","title":"vintner install ansible","text":"installs Ansible
CLIcURLJavaScriptPythonKotlinvintner install ansible
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/ansible\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/ansible\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/ansible\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/ansible\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-docker","title":"vintner install docker","text":"installs Docker
CLIcURLJavaScriptPythonKotlinvintner install docker
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/docker\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/docker\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/docker\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/docker\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-gcloud","title":"vintner install gcloud","text":"installs GCloud
CLIcURLJavaScriptPythonKotlinvintner install gcloud
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/gcloud\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/gcloud\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/gcloud\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/gcloud\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-platformio","title":"vintner install platformio","text":"installs PlatformIO Core CLI
CLIcURLJavaScriptPythonKotlinvintner install platformio
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/platformio\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/platformio\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/platformio\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/platformio\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-python","title":"vintner install python","text":"installs Python
CLIcURLJavaScriptPythonKotlinvintner install python
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/python\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/python\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/python\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/python\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-terraform","title":"vintner install terraform","text":"installs Terraform
CLIcURLJavaScriptPythonKotlinvintner install terraform
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/terraform\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/terraform\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/terraform\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/terraform\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-unfurl","title":"vintner install unfurl","text":"installs Unfurl in a venv in \"~/unfurl\"
CLIcURLJavaScriptPythonKotlinvintner install unfurl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/unfurl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/unfurl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/unfurl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/unfurl\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-utils","title":"vintner install utils","text":"installs utils, such as sudo, unzip, git ...
CLIcURLJavaScriptPythonKotlinvintner install utils
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/utils\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/utils\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/utils\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/utils\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-install-xopera","title":"vintner install xopera","text":"installs xOpera in a venv in \"~/opera\"
CLIcURLJavaScriptPythonKotlinvintner install xopera
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/install/xopera\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/install/xopera\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/install/xopera\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/install/xopera\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-adapt","title":"vintner instances adapt","text":"submit sensor data used for adapting the instance
cURLJavaScriptPythonKotlincurl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"inputs\": \"${INPUTS}\"}' \\\n${SERVER_ADDRESS}/instances/adapt\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/adapt\", {\ninstance: INSTANCE,\ninputs: INPUTS\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/adapt\", json={\n\"instance\": INSTANCE,\n\"inputs\": INPUTS\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/adapt\", json=mapOf(\n\"instance\" to INSTANCE,\n\"inputs\" to INPUTS\n))\n
Option Mandatory Type Description instance true string instance name inputs true InputAssignmentMap sensor data","tags":["Vintner"]},{"location":"interface/#vintner-instances-clean","title":"vintner instances clean","text":"deletes all instances
CLIcURLJavaScriptPythonKotlinvintner instances clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/instances/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-code","title":"vintner instances code","text":"opens the instance directory in visual studio code
CLIvintner instances code --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-continue","title":"vintner instances continue","text":"continue instance (deployment)
CLIcURLJavaScriptPythonKotlinvintner instances continue --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/continue\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/continue\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/continue\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/continue\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-debug","title":"vintner instances debug","text":"debug utility that passes a command into the orchestrator in scope of the instance
CLIcURLJavaScriptPythonKotlinvintner instances debug --instance ${INSTANCE} --command ${COMMAND}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"command\": \"${COMMAND}\"}' \\\n${SERVER_ADDRESS}/instances/debug\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/debug\", {\ninstance: INSTANCE,\ncommand: COMMAND\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/debug\", json={\n\"instance\": INSTANCE,\n\"command\": COMMAND\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/debug\", json=mapOf(\n\"instance\" to INSTANCE,\n\"command\" to COMMAND\n))\n
Option Mandatory Type Description instance true string instance name command true string command force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-delete","title":"vintner instances delete","text":"deletes instance
CLIcURLJavaScriptPythonKotlinvintner instances delete --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/delete\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/delete\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/delete\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-deploy","title":"vintner instances deploy","text":"deploys instance
CLIcURLJavaScriptPythonKotlinvintner instances deploy --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/deploy\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/deploy\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/deploy\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/deploy\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs (env: OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}) retries false boolean number of retries (default: \"1\") verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-info","title":"vintner instances info","text":"display instance info
CLIcURLJavaScriptPythonKotlinvintner instances info --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/info\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/info\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/info\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/info\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-init","title":"vintner instances init","text":"initializes a new instance
CLIcURLJavaScriptPythonKotlinvintner instances init --instance ${INSTANCE} --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/instances/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/init\", {\ninstance: INSTANCE,\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/init\", json={\n\"instance\": INSTANCE,\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/init\", json=mapOf(\n\"instance\" to INSTANCE,\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description instance true string instance name (must match /^[a-z-]+$/) template true string template name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-inspect","title":"vintner instances inspect","text":"inspects variability-resolved service template
CLIcURLJavaScriptPythonKotlinvintner instances inspect --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/inspect\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/inspect\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/inspect\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/inspect\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-list","title":"vintner instances list","text":"lists all instances
CLIcURLJavaScriptPythonKotlinvintner instances list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/instances/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-instances-open","title":"vintner instances open","text":"opens template directory in a file browser
CLIvintner instances open --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-outputs","title":"vintner instances outputs","text":"returns instance outputs
CLIcURLJavaScriptPythonKotlinvintner instances outputs --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/outputs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/outputs\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/outputs\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/outputs\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-path","title":"vintner instances path","text":"returns the path to the instance directory
CLIcURLJavaScriptPythonKotlinvintner instances path --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/path\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/path\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/path\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-resolve","title":"vintner instances resolve","text":"resolves variability
CLIcURLJavaScriptPythonKotlinvintner instances resolve --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/resolve\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/resolve\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/resolve\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/resolve\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name presets false string... names of variability presets(env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML], env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY}) force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-state","title":"vintner instances state","text":"set the state of the instance
CLIcURLJavaScriptPythonKotlinvintner instances state --instance ${INSTANCE} --state ${STATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"state\": \"${STATE}\"}' \\\n${SERVER_ADDRESS}/instances/state\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/state\", {\ninstance: INSTANCE,\nstate: STATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/state\", json={\n\"instance\": INSTANCE,\n\"state\": STATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/state\", json=mapOf(\n\"instance\" to INSTANCE,\n\"state\" to STATE\n))\n
Option Mandatory Type Description instance true string instance name state true string state force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-swap","title":"vintner instances swap","text":"swap instance template
CLIcURLJavaScriptPythonKotlinvintner instances swap --instance ${INSTANCE} --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\", \"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/instances/swap\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/swap\", {\ninstance: INSTANCE,\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/swap\", json={\n\"instance\": INSTANCE,\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/swap\", json=mapOf(\n\"instance\" to INSTANCE,\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description instance true string instance name template true string template name force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-unadapt","title":"vintner instances unadapt","text":"stop adaptation loop of instance
cURLJavaScriptPythonKotlincurl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/unadapt\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/unadapt\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/unadapt\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/unadapt\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name","tags":["Vintner"]},{"location":"interface/#vintner-instances-undeploy","title":"vintner instances undeploy","text":"undeploys instance
CLIcURLJavaScriptPythonKotlinvintner instances undeploy --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/undeploy\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/undeploy\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/undeploy\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/undeploy\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-update","title":"vintner instances update","text":"update instance
CLIcURLJavaScriptPythonKotlinvintner instances update --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/update\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/update\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/update\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/update\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs (env: OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}) verbose false boolean verbose no-verbose false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-instances-validate","title":"vintner instances validate","text":"validates variability-resolved service template
CLIcURLJavaScriptPythonKotlinvintner instances validate --instance ${INSTANCE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"instance\": \"${INSTANCE}\"}' \\\n${SERVER_ADDRESS}/instances/validate\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/instances/validate\", {\ninstance: INSTANCE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/instances/validate\", json={\n\"instance\": INSTANCE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/instances/validate\", json=mapOf(\n\"instance\" to INSTANCE\n))\n
Option Mandatory Type Description instance true string instance name inputs false string path to the deployment inputs verbose false boolean verbose no-verbose false boolean dry false boolean dry run no-dry false boolean force false boolean force (default: false) no-force false boolean lock false boolean enable instance locking (default: true) no-lock false boolean machine false boolean enable state machine (default: true) no-machine false boolean","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-attest","title":"vintner orchestrators attest","text":"attests an orchestrator plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators attest --orchestrator ${ORCHESTRATOR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"orchestrator\": \"${ORCHESTRATOR}\"}' \\\n${SERVER_ADDRESS}/orchestrators/attest\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/attest\", {\norchestrator: ORCHESTRATOR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/attest\", json={\n\"orchestrator\": ORCHESTRATOR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/attest\", json=mapOf(\n\"orchestrator\" to ORCHESTRATOR\n))\n
Option Mandatory Type Description orchestrator true string orchestrator","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-enable","title":"vintner orchestrators enable","text":"enables an orchestrator plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators enable --orchestrator ${ORCHESTRATOR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"orchestrator\": \"${ORCHESTRATOR}\"}' \\\n${SERVER_ADDRESS}/orchestrators/enable\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/enable\", {\norchestrator: ORCHESTRATOR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/enable\", json={\n\"orchestrator\": ORCHESTRATOR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/enable\", json=mapOf(\n\"orchestrator\" to ORCHESTRATOR\n))\n
Option Mandatory Type Description orchestrator true string orchestrator","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-unfurl","title":"vintner orchestrators init unfurl","text":"initializes unfurl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init unfurl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/unfurl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/unfurl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of unfurl (default: \"~/unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-unfurl-wsl","title":"vintner orchestrators init unfurl-wsl","text":"initializes unfurl-wsl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init unfurl-wsl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/unfurl-wsl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/unfurl-wsl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of unfurl (default: \"~/unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-xopera","title":"vintner orchestrators init xopera","text":"initializes xopera plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init xopera
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/xopera\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/xopera\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean disable the use of a virtual environment dir false string directory of xopera (default: \"~/opera\")","tags":["Vintner"]},{"location":"interface/#vintner-orchestrators-init-xopera-wsl","title":"vintner orchestrators init xopera-wsl","text":"initializes xopera-wsl plugin
CLIcURLJavaScriptPythonKotlinvintner orchestrators init xopera-wsl
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/orchestrators/init/xopera-wsl\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/orchestrators/init/xopera-wsl\")\n
Option Mandatory Type Description venv false boolean enable the use of a virtual environment (default: true) no-venv false boolean enable the use of a virtual environment dir false string directory of opera (default: \"~/opera\")","tags":["Vintner"]},{"location":"interface/#vintner-query","title":"vintner query","text":"runs a query and returns the result
CLIcURLJavaScriptPythonKotlinvintner query --query ${QUERY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"query\": \"${QUERY}\"}' \\\n${SERVER_ADDRESS}/query\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/query\", {\nquery: QUERY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/query\", json={\n\"query\": QUERY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/query\", json=mapOf(\n\"query\" to QUERY\n))\n
Option Mandatory Type Description query true string path to query or query string source false string specifies where to search for template to query (default: \"vintner\") output false string path of the output format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-sensors-compute","title":"vintner sensors compute","text":"starts a sensor for compute utilization, such as cpu and memory
CLIvintner sensors compute --instance ${INSTANCE} --template ${TEMPLATE}\n
Option Mandatory Type Description instance true string monitored instance template true string node template name vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every 10 seconds\") submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-file","title":"vintner sensors file","text":"starts a sensor for data stored in a file
CLIvintner sensors file --instance ${INSTANCE} --file ${FILE}\n
Option Mandatory Type Description instance true string monitored instance file true string path to file vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every 10 seconds\") watch false boolean watch file and send changes (default: true) no-watch false boolean submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-location","title":"vintner sensors location","text":"starts a sensor for the current location
CLIvintner sensors location --instance ${INSTANCE} --template ${TEMPLATE}\n
Option Mandatory Type Description instance true string monitored instance template true string node template name vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every minute\") submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-sensors-weekday","title":"vintner sensors weekday","text":"starts a sensor for the weekday
CLIvintner sensors weekday --instance ${INSTANCE}\n
Option Mandatory Type Description instance true string monitored instance vintner false string vintner address to submit sensors data (default: \"http://127.0.0.1:3000\") time-interval false string interval to submit data (default: \"every day\") start false string set day to start from submission false boolean send data (default: true) no-submission false boolean","tags":["Vintner"]},{"location":"interface/#vintner-server-start","title":"vintner server start","text":"starts the server
CLIvintner server start
Option Mandatory Type Description host false string host on which to listen (default: \"127.0.0.1\") port false number port on which to listen (default: \"3000\")","tags":["Vintner"]},{"location":"interface/#vintner-setup-benchmark","title":"vintner setup benchmark","text":"benchmarks the variability resolver
CLIcURLJavaScriptPythonKotlinvintner setup benchmark
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/benchmark\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/benchmark\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/benchmark\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/benchmark\")\n
Option Mandatory Type Description io false boolean enable read and writes to the filesystem no-io false boolean disable read and writes to the filesystem seeds false numbers... seed for generating service templates (default: [10,250,500,1000,2500,5000,10000]) runs false number number of measurements for each test (default: 10) latex false boolean plot results as latex (default: false) markdown false boolean plot results as markdown (default: false)","tags":["Vintner"]},{"location":"interface/#vintner-setup-clean","title":"vintner setup clean","text":"cleans up the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/clean\")\n
Option Mandatory Type Description force false boolean force clean up no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-setup-code","title":"vintner setup code","text":"opens the home directory in visual studio code
CLIvintner setup code
","tags":["Vintner"]},{"location":"interface/#vintner-setup-init","title":"vintner setup init","text":"initialises the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup init
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/init\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/init\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/init\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-setup-open","title":"vintner setup open","text":"opens the home directory
CLIvintner setup open
","tags":["Vintner"]},{"location":"interface/#vintner-setup-path","title":"vintner setup path","text":"returns the path to the home directory
CLIcURLJavaScriptPythonKotlinvintner setup path
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/path\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/path\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/path\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-setup-reset","title":"vintner setup reset","text":"resets the filesystem
CLIcURLJavaScriptPythonKotlinvintner setup reset
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/setup/reset\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/setup/reset\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/setup/reset\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/setup/reset\")\n
Option Mandatory Type Description force false boolean force clean up no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-study-technology","title":"vintner study technology","text":"conduct technology case study
CLIcURLJavaScriptPythonKotlinvintner study technology --application ${APPLICATION} --experimental ${EXPERIMENTAL}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"application\": \"${APPLICATION}\", \"experimental\": \"${EXPERIMENTAL}\"}' \\\n${SERVER_ADDRESS}/study/technology\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/study/technology\", {\napplication: APPLICATION,\nexperimental: EXPERIMENTAL\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/study/technology\", json={\n\"application\": APPLICATION,\n\"experimental\": EXPERIMENTAL\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/study/technology\", json=mapOf(\n\"application\" to APPLICATION,\n\"experimental\" to EXPERIMENTAL\n))\n
Option Mandatory Type Description application true string application name, e.g., boutique or shop experimental true enable experimental feature","tags":["Vintner"]},{"location":"interface/#vintner-template-enrich","title":"vintner template enrich","text":"enrich conditions
CLIcURLJavaScriptPythonKotlinvintner template enrich --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/enrich\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/enrich\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/enrich\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/enrich\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-implement","title":"vintner template implement","text":"implement node types
CLIcURLJavaScriptPythonKotlinvintner template implement --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/implement\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/implement\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/implement\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/implement\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory orchestrator false string the orchestrator for which node type should be implemented (default: \"unfurl\")","tags":["Vintner"]},{"location":"interface/#vintner-template-init","title":"vintner template init","text":"initializes a CSAR
CLIcURLJavaScriptPythonKotlinvintner template init --path ${PATH} --template ${TEMPLATE} --vintner ${VINTNER}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\", \"template\": \"${TEMPLATE}\", \"vintner\": \"${VINTNER}\"}' \\\n${SERVER_ADDRESS}/template/init\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/init\", {\npath: PATH,\ntemplate: TEMPLATE,\nvintner: VINTNER\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/init\", json={\n\"path\": PATH,\n\"template\": TEMPLATE,\n\"vintner\": VINTNER\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/init\", json=mapOf(\n\"path\" to PATH,\n\"template\" to TEMPLATE,\n\"vintner\" to VINTNER\n))\n
Option Mandatory Type Description path true string path of the directory template true string template name (default: directory name of --path) vintner true string vintner binary to execute (default: \"task cli --\") force false boolean force initialization, e.g., on non-empty directories no-force false boolean","tags":["Vintner"]},{"location":"interface/#vintner-template-inputs","title":"vintner template inputs","text":"read and transforms inputs
CLIcURLJavaScriptPythonKotlinvintner template inputs --path ${PATH} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/inputs\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/inputs\", {\npath: PATH,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/inputs\", json={\n\"path\": PATH,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/inputs\", json=mapOf(\n\"path\" to PATH,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description path true string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML]) output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-normalize","title":"vintner template normalize","text":"normalize service template
CLIcURLJavaScriptPythonKotlinvintner template normalize --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/normalize\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/normalize\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/normalize\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/normalize\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-package","title":"vintner template package","text":"packages a directory to a CSAR
CLIcURLJavaScriptPythonKotlinvintner template package --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/package\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/package\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/package\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/package\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-pull","title":"vintner template pull","text":"pull template dependencies
CLIcURLJavaScriptPythonKotlinvintner template pull --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/pull\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/pull\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/pull\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/pull\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory link false boolean create symbolic links instead of copying files (default: false) no-link false boolean","tags":["Vintner"]},{"location":"interface/#vintner-template-puml-topology","title":"vintner template puml topology","text":"plot topology as PlantUML
CLIcURLJavaScriptPythonKotlinvintner template puml topology --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/puml/topology\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/puml/topology\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/puml/topology\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/puml/topology\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path to service template output false string path of the output format false string output format (choices: [\"puml\",\"svg\"], default: \"puml\")","tags":["Vintner"]},{"location":"interface/#vintner-template-puml-types","title":"vintner template puml types","text":"plot types as PlantUML (each entity types is plotted separately)
CLIcURLJavaScriptPythonKotlinvintner template puml types --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/puml/types\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/puml/types\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/puml/types\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/puml/types\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path to service template output false string path of the output directory (default: the directory of the service template) types false string... entity types to consider, e.g., \"node_types\" (default: Every defined entity type) format false string output format (choices: [\"puml\",\"svg\"], default: \"puml\")","tags":["Vintner"]},{"location":"interface/#vintner-template-quality","title":"vintner template quality","text":"get quality of template
CLIcURLJavaScriptPythonKotlinvintner template quality --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/template/quality\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/quality\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/quality\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/quality\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string path to service template presets false string... names of variability presets(env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML], env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY})","tags":["Vintner"]},{"location":"interface/#vintner-template-query","title":"vintner template query","text":"resolves all queries in a given service template
CLIcURLJavaScriptPythonKotlinvintner template query --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/query\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/query\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/query\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/query\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-resolve","title":"vintner template resolve","text":"resolves variability
CLIcURLJavaScriptPythonKotlinvintner template resolve --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/resolve\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/resolve\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/resolve\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/resolve\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template presets false strings... names of variability presets (env: OPENTOSCA_VINTNER_VARIABILITY_PRESETS) (default: []) inputs false string path to the variability inputs (supported: [YAML, FeatureIDE ExtendedXML, env: OPENTOSCA_VINTNER_VARIABILITY_INPUT_) output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-sign","title":"vintner template sign","text":"signs a CSAR
CLIcURLJavaScriptPythonKotlinvintner template sign --template ${TEMPLATE} --output ${OUTPUT} --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\", \"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/template/sign\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/sign\", {\ntemplate: TEMPLATE,\noutput: OUTPUT,\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/sign\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT,\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/sign\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT,\n\"key\" to KEY\n))\n
Option Mandatory Type Description template true string path to service template output true string path of the output (default: template path + \".asc\" ) key true string path of the key","tags":["Vintner"]},{"location":"interface/#vintner-template-stats","title":"vintner template stats","text":"collects stats of a given service template (experimental)
CLIcURLJavaScriptPythonKotlinvintner template stats --template ${TEMPLATE} --experimental ${EXPERIMENTAL}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"experimental\": \"${EXPERIMENTAL}\"}' \\\n${SERVER_ADDRESS}/template/stats\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/stats\", {\ntemplate: TEMPLATE,\nexperimental: EXPERIMENTAL\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/stats\", json={\n\"template\": TEMPLATE,\n\"experimental\": EXPERIMENTAL\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/stats\", json=mapOf(\n\"template\" to TEMPLATE,\n\"experimental\" to EXPERIMENTAL\n))\n
Option Mandatory Type Description template true strings... path to service template experimental true enable experimental feature","tags":["Vintner"]},{"location":"interface/#vintner-template-test","title":"vintner template test","text":"runs tests defined in the CSAR
CLIcURLJavaScriptPythonKotlinvintner template test --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/template/test\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/test\", {\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/test\", json={\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/test\", json=mapOf(\n\"path\" to PATH\n))\n
Option Mandatory Type Description path true string path or link to the extracted CSAR","tags":["Vintner"]},{"location":"interface/#vintner-template-unimplement","title":"vintner template unimplement","text":"unimplement node types
CLIcURLJavaScriptPythonKotlinvintner template unimplement --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/unimplement\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unimplement\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unimplement\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unimplement\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory","tags":["Vintner"]},{"location":"interface/#vintner-template-unpackage","title":"vintner template unpackage","text":"unpackages a CSAR
CLIcURLJavaScriptPythonKotlinvintner template unpackage --template ${TEMPLATE} --output ${OUTPUT}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"output\": \"${OUTPUT}\"}' \\\n${SERVER_ADDRESS}/template/unpackage\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unpackage\", {\ntemplate: TEMPLATE,\noutput: OUTPUT\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unpackage\", json={\n\"template\": TEMPLATE,\n\"output\": OUTPUT\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unpackage\", json=mapOf(\n\"template\" to TEMPLATE,\n\"output\" to OUTPUT\n))\n
Option Mandatory Type Description template true string path to variable service template output true string path of the output","tags":["Vintner"]},{"location":"interface/#vintner-template-unpull","title":"vintner template unpull","text":"unpull template dependencies
CLIcURLJavaScriptPythonKotlinvintner template unpull --dir ${DIR}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"dir\": \"${DIR}\"}' \\\n${SERVER_ADDRESS}/template/unpull\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/unpull\", {\ndir: DIR\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/unpull\", json={\n\"dir\": DIR\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/unpull\", json=mapOf(\n\"dir\" to DIR\n))\n
Option Mandatory Type Description dir true string path to service template directory","tags":["Vintner"]},{"location":"interface/#vintner-template-verify","title":"vintner template verify","text":"verify a CSAR
CLIcURLJavaScriptPythonKotlinvintner template verify --template ${TEMPLATE} --signature ${SIGNATURE} --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"signature\": \"${SIGNATURE}\", \"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/template/verify\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/template/verify\", {\ntemplate: TEMPLATE,\nsignature: SIGNATURE,\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/template/verify\", json={\n\"template\": TEMPLATE,\n\"signature\": SIGNATURE,\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/template/verify\", json=mapOf(\n\"template\" to TEMPLATE,\n\"signature\" to SIGNATURE,\n\"key\" to KEY\n))\n
Option Mandatory Type Description template true string path to service template signature true string path of the signature (default: template path + \".asc\" ) key true string path of the key","tags":["Vintner"]},{"location":"interface/#vintner-templates-clean","title":"vintner templates clean","text":"removes all templates
CLIcURLJavaScriptPythonKotlinvintner templates clean
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/templates/clean\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/clean\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/clean\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/clean\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-templates-code","title":"vintner templates code","text":"opens the template directory in visual studio code
CLIvintner templates code --template ${TEMPLATE}\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-delete","title":"vintner templates delete","text":"deletes a template
CLIcURLJavaScriptPythonKotlinvintner templates delete --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/delete\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/delete\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/delete\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/delete\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-import","title":"vintner templates import","text":"imports a new template
CLIcURLJavaScriptPythonKotlinvintner templates import --template ${TEMPLATE} --path ${PATH}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\", \"path\": \"${PATH}\"}' \\\n${SERVER_ADDRESS}/templates/import\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/import\", {\ntemplate: TEMPLATE,\npath: PATH\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/import\", json={\n\"template\": TEMPLATE,\n\"path\": PATH\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/import\", json=mapOf(\n\"template\" to TEMPLATE,\n\"path\" to PATH\n))\n
Option Mandatory Type Description template true string template name path true string path or link to the CSAR git-repository false string git repository git-checkout false string git checkout signature false path to the signature (default: template + \".asc\") key false assets name to verify the signature","tags":["Vintner"]},{"location":"interface/#vintner-templates-inspect","title":"vintner templates inspect","text":"inspects the variable service template
CLIcURLJavaScriptPythonKotlinvintner templates inspect --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/inspect\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/inspect\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/inspect\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/inspect\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-list","title":"vintner templates list","text":"lists all templates
CLIcURLJavaScriptPythonKotlinvintner templates list
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/templates/list\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/list\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/list\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/list\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-templates-open","title":"vintner templates open","text":"opens template directory in a file browser
CLIvintner templates open --template ${TEMPLATE}\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-templates-path","title":"vintner templates path","text":"returns the path to the template directory
CLIcURLJavaScriptPythonKotlinvintner templates path --template ${TEMPLATE}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"template\": \"${TEMPLATE}\"}' \\\n${SERVER_ADDRESS}/templates/path\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/templates/path\", {\ntemplate: TEMPLATE\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/templates/path\", json={\n\"template\": TEMPLATE\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/templates/path\", json=mapOf(\n\"template\" to TEMPLATE\n))\n
Option Mandatory Type Description template true string template name","tags":["Vintner"]},{"location":"interface/#vintner-utils-key","title":"vintner utils key","text":"generates a key
CLIcURLJavaScriptPythonKotlinvintner utils key --key ${KEY}\n
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n--data '{\"key\": \"${KEY}\"}' \\\n${SERVER_ADDRESS}/utils/key\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/key\", {\nkey: KEY\n})\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/key\", json={\n\"key\": KEY\n})\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/key\", json=mapOf(\n\"key\" to KEY\n))\n
Option Mandatory Type Description key true string key name (must match /^[a-z-]+$/)","tags":["Vintner"]},{"location":"interface/#vintner-utils-nonce","title":"vintner utils nonce","text":"generates a nonce
CLIcURLJavaScriptPythonKotlinvintner utils nonce
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/nonce\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/nonce\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/nonce\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/nonce\")\n
","tags":["Vintner"]},{"location":"interface/#vintner-utils-normative","title":"vintner utils normative","text":"returns normative types
CLIcURLJavaScriptPythonKotlinvintner utils normative
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/normative\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/normative\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/normative\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/normative\")\n
Option Mandatory Type Description orchestrator false string orchestrator dialect profile false boolean include profile entry (default: true) no-profile false boolean base false boolean include base types (default: true) no-base false boolean extended false boolean include extended types (default: true) no-extended false boolean format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-utils-rules","title":"vintner utils rules","text":"returns technology rules
CLIcURLJavaScriptPythonKotlinvintner utils rules
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/rules\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/rules\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/rules\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/rules\")\n
Option Mandatory Type Description format false string output format (choices: [\"yaml\",\"json\",\"latex\"], default: \"yaml\")","tags":["Vintner"]},{"location":"interface/#vintner-utils-scenarios","title":"vintner utils scenarios","text":"returns deployment scenarios
CLIcURLJavaScriptPythonKotlinvintner utils scenarios
curl --header \"Content-Type: application/json\" \\\n--request POST \\\n${SERVER_ADDRESS}/utils/scenarios\n
const axios = require(\"axios\")\nawait axios.post(SERVER_ADDRESS + \"/utils/scenarios\")\n
import requests\nrequests.post(SERVER_ADDRESS + \"/utils/scenarios\")\n
import khttp.post\npost(SERVER_ADDRESS + \"/utils/scenarios\")\n
Option Mandatory Type Description component false string component artifact false string artifact no-artifact false boolean technology false string technology hosting false string... hosting no-hosting false boolean quality false number format false string output format (choices: [\"yaml\",\"json\"], default: \"yaml\")","tags":["Vintner"]},{"location":"orchestrators/","title":"Orchestrators","text":"This document holds information considering supported orchestrators. We currently support xOpera and Unfurl. Since both can only be installed on Linux, we implemented a WSL integration for both. To find out more about these orchestrators, checkout our TOSCA Orchestrator Selection Support System (TOSSS). Install, configure and enable your orchestrator as follows. For more information see Interface.
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#xopera","title":"xOpera","text":"We install xOpera using the following command. This will install xOpera v0.6.9 in a virtual environment. For a manual installation see the documentation.
vintner install xopera\n
Next, we configure Vintner to use xOpera.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
Next, we attest that Vintner can correctly use xOpera.
vintner orchestrators attest --orchestrator xopera\n
If xOpera is running in WSL and Vintner on Windows, then configure Vintner as follows.
vintner orchestrators init xopera-wsl\nvintner orchestrators enable --orchestrator xopera-wsl\n
Next, we attest that Vintner can correctly use xOpera in WSL.
vintner orchestrators attest --orchestrator xopera-wsl\n
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#unfurl","title":"Unfurl","text":"We install Unfurl using the following command. This will install Unfurl v1.0.0 in a virtual environment. For a manual installation see the documentation.
vintner install unfurl\n
Next, we configure Vintner to use Unfurl.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
Next, we attest that Vintner can correctly use Unfurl.
vintner orchestrators attest --orchestrator unfurl\n
If Unfurl is running in WSL and Vintner on Windows, then configure Vintner as follows.
vintner orchestrators init unfurl-wsl\nvintner orchestrators enable --orchestrator unfurl-wsl\n
To attest that Vintner can correctly use Unfurl, run the following command.
vintner orchestrators attest --orchestrator unfurl-wsl\n
","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#integrated-features","title":"Integrated Features","text":"The following table describes which feature of the orchestrators are integrated. The orchestrators provide more features, see TOSSS.
Feature xOpera Unfurl Validate an application topology Deploy an application Access deployment outputs Continue the deployment of an application Update the service template of an application Undeploy an application Access node instance attributes","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#deployment-technologies","title":"Deployment Technologies","text":"Under the scene, we are using the following deployment technologies.
Technology Version ansible (pip) 4.10.0 google-cloud-cli (apt) 432.0.0 kubernetes (pip) 24.2.0 openshift (pip) 0.13.2 openstacksdk (pip) 0.61 python-openstackclient (pip) 6.0.0 terraform (apt) 1.4.6","tags":["Vintner","xOpera","Unfurl"]},{"location":"orchestrators/#known-limitations","title":"Known Limitations","text":"This document holds a list of selected publications.
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#hosting-aware-pruning-of-components-in-deployment-models","title":"Hosting-Aware Pruning of Components in Deployment Models","text":"@inproceedings{Stoetzner2024_HostingAwarePruning,\nTitle = {{Hosting-Aware Pruning of Components in Deployment Models}},\nAuthor = {St{\\\"o}tzner, Miles and Speth, Sandro and Becker, Steffen},\nYear = 2024,\nMonth = may,\nBooktitle = {Proceedings of the 14\\textsuperscript{th} International Conference on Cloud Computing and Services Science (CLOSER 2024)},\nPublisher = {SciTePress},\nPages = {149--158},\nDoi = {10.5220/0012671900003711},\nurl = {https://www.scitepress.org/Link.aspx?doi=10.5220/0012671900003711},\nprojects = {SofDCar,OpenTOSCA}\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#pruning-modes-for-deployment-models-from-manual-modeling-to-automated-removal-of-elements-and-their-implications","title":"Pruning Modes for Deployment Models: From Manual Modeling to Automated Removal of Elements and Their Implications","text":"@inproceedings{Stoetzner2024_PruningModes,\nTitle = {{Pruning Modes for Deployment Models: From Manual Modeling to Automated Removal of Elements and Their Implications}},\nAuthor = {St{\\\"o}tzner, Miles and Speth, Sandro and Becker, Steffen},\nYear = 2024,\nMonth = may,\nBooktitle = {Proceedings of the 14\\textsuperscript{th} International Conference on Cloud Computing and Services Science (CLOSER 2024)},\nPublisher = {SciTePress},\nPages = {65--76},\nDoi = {10.5220/0012568300003711},\nurl = {https://www.scitepress.org/Link.aspx?doi=10.5220/0012568300003711},\nprojects = {SofDCar,OpenTOSCA}\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#a-systematic-technology-review-of-general-purpose-open-source-tosca-orchestrators","title":"A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators","text":"St\u00f6tzner, M., Becker, S., Harzenetter, L., Leymann, F., Weder, B., Breitenb\u00fccher, U., Kopp, O., Klein, K., & Soldani, J. (2023, December). A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators. Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023), 1\u201311. doi:10.1145/3603166.3632130
@inproceedings{Stoetzner2023_TOSSS,\nTitle = {{A Systematic Technology Review of General-Purpose Open-Source TOSCA Orchestrators}},\nAuthor = {St\\\"{o}tzner, Miles and Becker, Steffen and Harzenetter, Lukas and Leymann, Frank and Weder, Benjamin and Breitenb\\\"{u}cher, Uwe and Kopp, Oliver and Klein, Kevin and Soldani, Jacopo},\nYear = 2023,\nMonth = dec,\nBooktitle = {Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023)},\nPublisher = {ACM},\nAddress = {New York, NY, USA},\nPages = {1--11},\narticleno = {6},\nDoi = {10.1145/3603166.3632130},\nisbn = {9798400702341},\nurl = {https://doi.org/10.1145/3603166.3632130},\nprojects = {SofDCar,OpenTOSCA,EniQmA},\nnumpages = {11},\nkeywords = {TOSCA, orchestrator, systematic technology review, classification framework, general-purpose, open-source},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#enhancing-deployment-variability-management-by-pruning-elements-in-deployment-models","title":"Enhancing Deployment Variability Management by Pruning Elements in Deployment Models","text":"St\u00f6tzner, M., Klinaku, F., Pesl, R. D., & Becker, S. (2023, December). Enhancing Deployment Variability Management by Pruning Elements in Deployment Models. Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023), 1\u201311. doi:10.1145/3603166.3632143
@inproceedings{Stoetzner2023_Pruning,\nTitle = {{Enhancing Deployment Variability Management by Pruning Elements in Deployment Models}},\nAuthor = {St\\\"{o}tzner, Miles and Klinaku, Floriment and Pesl, Robin Dominic and Becker, Steffen},\nYear = 2023,\nMonth = dec,\nBooktitle = {Proceedings of the IEEE/ACM 16th International Conference on Utility and Cloud Computing (UCC 2023)},\nPublisher = {ACM},\nAddress = {New York, NY, USA},\nPages = {1--11},\narticleno = {18},\nDoi = {10.1145/3603166.3632143},\nisbn = {9798400702341},\nurl = {https://doi.org/10.1145/3603166.3632143},\nprojects = {SofDCar,OpenTOSCA},\nnumpages = {11},\nkeywords = {pruning, deployment models, variability management, TOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#using-variability4tosca-and-opentosca-vintner-for-holistically-managing-deployment-variability","title":"Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability","text":"St\u00f6tzner, M., Breitenb\u00fccher, U., Pesl, R. D., & Becker, S. (2024). Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability. Proceedings of the Demonstration Track at International Conference on Cooperative Information Systems 2023, CoopIS 2023, Groningen, The Netherlands, October 30 - November 3, 2023, CEUR-WS.org, online https://ceur-ws.org/Vol-3552/paper-8.pdf
@inproceedings{Stoetzner2023_VDMMv2Demo,\nTitle = {{Using Variability4TOSCA and OpenTOSCA Vintner for Holistically Managing Deployment Variability}},\nAuthor = {St{\\\"o}tzner, Miles and Breitenb{\\\"u}cher, Uwe and Pesl, Robin D. and Becker, Steffen},\nYear = 2023,\nMonth = oct,\nBooktitle = {Proceedings of the Demonstration Track at International Conference on Cooperative Information Systems 2023},\nPublisher = {{CEUR-WS.org}},\nPages = {36--40},\nSeries = {CEUR Workshop Proceedings},\nVolume = {3552},\nurl = {https://ceur-ws.org/Vol-3552/paper-8.pdf},\ntype = {Demonstration},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#managing-the-variability-of-component-implementations-and-their-deployment-configurations-across-heterogeneous-deployment-technologies","title":"Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies","text":"St\u00f6tzner, M., Breitenb\u00fccher, U., Pesl, R. D., & Becker, S. (2024). Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies. Cooperative Information Systems, 61\u201378. doi:10.1007/978-3-031-46846-9_4
@inproceedings{Stoetzner2023_VDMMv2,\nTitle = {{Managing the Variability of Component Implementations and Their Deployment Configurations Across Heterogeneous Deployment Technologies}},\nAuthor = {St{\\\"o}tzner, Miles and Breitenb{\\\"u}cher, Uwe and Pesl, Robin D. and Becker, Steffen},\nYear = 2023,\nMonth = oct,\nBooktitle = {Cooperative Information Systems},\nPublisher = {Springer Nature Switzerland},\nAddress = {Cham},\nPages = {61--78},\nDoi = {10.1007/978-3-031-46846-9_4},\nisbn = {978-3-031-46846-9},\nurl = {https://link.springer.com/chapter/10.1007/978-3-031-46846-9_4},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#developing-the-software-of-future-cars-a-car-devops-approach","title":"Developing the Software of Future Cars: A Car DevOps Approach","text":"Weller, M., St\u00f6tzner, M., Klinaku, F., & Becker, S. (2023). Developing the Software of Future Cars: A Car DevOps Approach. Softwaretechnik-Trends, 43(2).
@article{Weller2023_SofDCar,\nTitle = {{Developing the Software of Future Cars: A Car DevOps Approach}},\nAuthor = {Weller, Marcel and St{\\\"o}tzner, Miles and Klinaku, Floriment and Becker, Steffen},\nYear = 2023,\nMonth = may,\nJournal = {Softwaretechnik-Trends},\nPublisher = {Gesellschaft f{\\\"u}r Informatik},\nPages = {3--10},\nVolume = {43},\nNumber = {2},\nissn = {0720-8928},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"publications/#modeling-different-deployment-variants-of-a-composite-application-in-a-single-declarative-deployment-model","title":"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model","text":"St\u00f6tzner, M., Becker, S., Breitenb\u00fccher, U., K\u00e1lm\u00e1n, K., & Leymann, F. (2022). Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model. Algorithms, 15(10), 382. doi:10.3390/a15100382
@article{Stoetzner2022_VDMM,\nTitle = {{Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model}},\nAuthor = {St{\\\"o}tzner, Miles and Becker, Steffen and Breitenb{\\\"u}cher, Uwe and K{\\'a}lm{\\'a}n, K{\\'e}pes and Leymann, Frank},\nYear = 2022,\nMonth = oct,\nJournal = {Algorithms},\nPublisher = {MDPI},\nPages = {1--25},\narticleno = {382},\nVolume = {15},\nNumber = {10},\nDoi = {10.3390/a15100382},\nurl = {https://www.mdpi.com/1999-4893/15/10/382},\nprojects = {SofDCar,OpenTOSCA},\n}\n
","tags":["Misc","Publication","Zenodo"]},{"location":"resources/","title":"Resources","text":"This document holds a collection of interesting resources, such as the TOSCA specifications, introductions, popular orchestrators and TOSCA repositories.
","tags":["Misc"]},{"location":"resources/#specifications","title":"Specifications","text":"Warning
Undeploy all applications first.
This document holds instructions on uninstalling Vintner.
Depending on the installation method, uninstall Vintner as follows.
Script/ ManualNPMYarn (Classic)Dockervintner setup clean --force\nrm \"$(which vintner)\"\n
vintner setup clean --force\nnpm uninstall --global opentosca-vintner\n
vintner setup clean --force\nyarn global remove opentosca-vintner\n
docker stop vintner\ndocker remove vintner\n
Next, remove the directories used to persists container data on the docker host.
","tags":["Vintner","Docker"]},{"location":"usage/","title":"Usage","text":"This document holds instructions on using Vintner.
","tags":["Vintner"]},{"location":"usage/#use-the-cli","title":"Use the CLI","text":"First, we ensure that Vintner can be executed.
vintner --version\n
From there on use the help command. See Interface for a complete interface specification.
vintner --help\n
","tags":["Vintner"]},{"location":"usage/#enable-an-orchestrator","title":"Enable an Orchestrator","text":"Vintner requires an orchestrator for the deployment. See Orchestrators for a complete interface specification.
First, we initialize the config.
vintner orchestrators init ${ORCHESTRATOR_NAME}\n
Next, we enable the orchestrator.
vintner orchestrators enable ${ORCHESTRATOR_NAME}\n
","tags":["Vintner"]},{"location":"usage/#deploy-an-application","title":"Deploy an Application","text":"First, we import the Variability4TOSCA template.
vintner templates import --template ${TEMPLATE_NAME} --path ${TEMPLATE_PATH}\n
Next, we initialize an application instance.
vintner instances init --instance ${INSTANCE_NAME} --template ${TEMPLATE_NAME}\n
Next, we specify variability inputs.
Next, we resolve the variability.
vintner instances resolve --instance ${INSTANCE_NAME} --inputs ${VARIABILITY_INPUTS}\n
Next, we specify deployment inputs.
Next, we deploy the application.
vintner instances deploy --instance ${INSTANCE_NAME} --inputs ${DEPLOYMENT_INPUTS_PATH}\n
","tags":["Vintner"]},{"location":"usage/#undeploy-an-application","title":"Undeploy an Application","text":"Eventually, we undeploy the application.
vintner instances undeploy --instance ${INSTANCE_NAME}\n
","tags":["Vintner"]},{"location":"usage/#configuration","title":"Configuration","text":"The following environment variables can be used for configuration.
Environment Variable Default Description OPENTOSCA_VINTNER_HOME_DIR ${HOME_DIR}/.opentosca_vintner Configures the home directory of Vintner.","tags":["Vintner"]},{"location":"usage/#start-the-server","title":"Start the Server","text":"Vintner can be used as server. To start the server, run the following command.
vintner server start\n
","tags":["Vintner"]},{"location":"versions/","title":"Versions","text":"This document holds information about the versioning concept of Vintner.
Vintner uses full commit hashes as version numbers. The current version can be accessed using vintner --version
.
Vintner is a research prototype. There exists only a single GitHub release. Older releases are removed when a new GitHub release is published. Vintner versions used in publications are archived using Zenodo.
For each GitHub release, there exists a Docker Image. These images are not removed.
The versions used in package managers, such as npm, use semantic versioning.
Package Version Vintner Version 0.1.7 a3d1b58a49a02a274bc5c5124e44eca4a1b2b7a3 0.1.5 0ca9400c337530d629125c2080db3710824f77ad 0.1.4 5e5e3bca56ad702ec0d3c3561a1eac3363576a3c 0.1.3 b75c2fdb75334a7f6ff531ad8b4e47bd188b964a","tags":["Vintner"]},{"location":"about-us/","title":"About Us","text":"This project is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Misc"]},{"location":"about-us/#license","title":"License","text":"This project is licensed under Apache-2.0.
","tags":["Misc"]},{"location":"about-us/#haftungsausschluss","title":"Haftungsausschluss","text":"Dies ist ein Forschungsprototyp. Die Haftung f\u00fcr entgangenen Gewinn, Produktionsausfall, Betriebsunterbrechung, entgangene Nutzungen, Verlust von Daten und Informationen, Finanzierungsaufwendungen sowie sonstige Verm\u00f6gens- und Folgesch\u00e4den ist, au\u00dfer in F\u00e4llen von grober Fahrl\u00e4ssigkeit, Vorsatz und Personensch\u00e4den ausgeschlossen.
","tags":["Misc"]},{"location":"about-us/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Misc"]},{"location":"contributing/code-of-conduct/","title":"Contributor Covenant Code of Conduct","text":"","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#our-pledge","title":"Our Pledge","text":"We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#our-standards","title":"Our Standards","text":"Examples of behavior that contributes to a positive environment for our community include:
Examples of unacceptable behavior include:
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#scope","title":"Scope","text":"This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement","title":"Enforcement","text":"Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at miles.stoetzner@iste.uni-stuttgart.de. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement-guidelines","title":"Enforcement Guidelines","text":"Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#1-correction","title":"1. Correction","text":"Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#2-warning","title":"2. Warning","text":"Community Impact: A violation through a single incident or series of actions.
Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#3-temporary-ban","title":"3. Temporary Ban","text":"Community Impact: A serious violation of community standards, including sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#4-permanent-ban","title":"4. Permanent Ban","text":"Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the community.
","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#attribution","title":"Attribution","text":"This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
","tags":["Contributing"]},{"location":"contributing/development/","title":"Development","text":"This document holds instructions on developing Vintner.
","tags":["Contributing"]},{"location":"contributing/development/#github-flow","title":"GitHub Flow","text":"Our branching workflow follows GitHub Flow.
","tags":["Contributing"]},{"location":"contributing/development/#branch-naming-convention","title":"Branch Naming Convention","text":"Branches should be names as follows.
feature-short-title
for features.fix-short-title
for bug fixes.refactor-short-title
for refactoring.chore-short-title
for chores.docs-short-title
for documentations.project-short-title
for project, such as thesis, EnPro, StuPro ...Squash your commits into a single commit with a short but meaningful message. The commit message should have a link to the merge request. The branch is automatically deleted once merged.
","tags":["Contributing"]},{"location":"contributing/development/#tags","title":"Tags","text":"A tag must be created for each publication, thesis, etc. For example, the following commands create and push the tag for the publication \"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model\" published by St\u00f6tzner et al. in 2022.
git tag -s publication-stoetzner-2022-vdmm -m \"Modeling Different Deployment Variants of a Composite Application in a Single Declarative Deployment Model\"\ngit push origin publication-stoetzner-2022-vdmm\n
","tags":["Contributing"]},{"location":"contributing/development/#command-line-interface","title":"Command Line Interface","text":"Info
./task cli
uses src/cli/index.ts
while ./task vintner
uses build/cli/index.js
. Therefore, run ./task cli
to execute the current code without building it first.
We use commander.js to implement the CLI. The entry point is src/cli/index.ts
. Execute a CLI command during development as follows.
./task cli -- [command] [options]\n
","tags":["Contributing"]},{"location":"contributing/development/#server","title":"Server","text":"We use express to implement the server. The entry point is src/server/index.ts
. Run a development server on http://localhost:3000 with live-reload as follows.
./task server:serve\n
","tags":["Contributing"]},{"location":"contributing/development/#tests","title":"Tests","text":"We use mocha, chai, and nyc for testing. Respective tests are inside the tests
directory. Run the tests as follows.
./task test\n
On pushes to the main
branch or on pull requests, the tests
workflow is triggered. This workflow runs the tests.
We use ESLint for code linting. Lint typescript as follows.
./task lint:check\n
Fix lint problems as follows.
./task lint:fix\n
","tags":["Contributing"]},{"location":"contributing/development/#code-style","title":"Code Style","text":"We use Prettier for code formatting. Check the code style as follows.
./task style:check\n
Fix code style problems as follows.
./task style:fix\n
","tags":["Contributing"]},{"location":"contributing/development/#benchmark","title":"Benchmark","text":"Run the following command, to run to benchmark the variability resolving.
./task benchmark\n
","tags":["Contributing"]},{"location":"contributing/development/#dependencies","title":"Dependencies","text":"We use license-checker to handle licenses of (transitive) dependencies. Check that (transitive) dependencies are licensed as expected as follows. This check is also executed inside workflows.
./task licenses:check\n
","tags":["Contributing"]},{"location":"contributing/development/#patch-packages","title":"Patch Packages","text":"We use patch-package
to fix dependencies. For example, adding logic-solver.d.ts
to logic-solver
. Therefore, proceed as follows.
First, make changes to the package inside node_modules
. Then, create the patch.
yarn patch-package --exclude 'nothing' ${package-name}\n
","tags":["Contributing"]},{"location":"contributing/development/#night","title":"Night","text":"The Night workflow is scheduled for every tuesday at 420. This workflow ensures that the latest release is correctly signed and can be executed. Moreover, integration tests are executed, which use xOpera, Unfurl, and GCP.
","tags":["Contributing"]},{"location":"contributing/documentation/","title":"Documentation","text":"This document holds instructions on writing the documentation.
","tags":["Contributing"]},{"location":"contributing/documentation/#guidelines","title":"Guidelines","text":"We follow the following guidelines when writing documentation.
docs/templates/guide
docs/templates/specification
Warning
This only works on Linux.
We use Material for MkDocs as documentation system. The files are located in the docs
directory. Custom macros are implemented in docs/macros.py
using mkdocs-macros.
First, install all dependencies. This will install several apt packages on the system and mkdocs in a virtual environment.
./task docs:install\n
Next, reload your session.
Next, start a local development server on http://localhost:8000.
./task docs:serve\n
Next, open the docs in your browser.
./task docs:open\n
","tags":["Contributing"]},{"location":"contributing/documentation/#autogenerated-markdown","title":"Autogenerated Markdown","text":"Some Markdown files are autogenerated, e.g., Dependencies or Interface. Changes must be made in the respective template files. Files are generated during the Release workflow and overwrite committed files. To warn the developer, include the following custom marco at the top of the template.
{{ autogenerated_notice('./task docs:generate:dependencies') }}\n
This will render the following warning, if the docs are served using ./task docs:serve
but not when built.
Warning
Do not edit! This file is autogenerated using ./task docs:generate:dependencies
and will be overwritten during the Release workflow! (This warning is not shown once deployed)
Warning
This only works on Linux.
The docs contain recorded demos. We use the following tools.
Casts are not recorded during any workflow. The following command can be used to record the home
cast for the landing page.
./task docs:record:home\n
A cast can be embedded using the custom macro asciinema_player
inside a Markdown file.
{{ asciinema_player('getting-started') }}\n
This will embed the cast docs/docs/assets/casts/getting-started.cast
inside the page as follows.
Warning
This only works on Linux.
To export registered pages as PDF, run the following command. The PDFs are stored in dist-docs
.
./task docs:export\n
By default, https://vintner.opentosca.org is used. To export pages of http://localhost:8000, run the following command.
./task docs:export:local\n
","tags":["Contributing"]},{"location":"contributing/documentation/#interface","title":"Interface","text":"To generate the documentation for the CLI and REST API, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:interface\n
","tags":["Contributing"]},{"location":"contributing/documentation/#dependencies","title":"Dependencies","text":"To generate a list of licenses for all (transitive) dependencies, run the following command This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:dependencies\n
The list includes information, such as package name, version, license, etc., and is written to a CSV file. At the same time, the Dependencies page is generated.
","tags":["Contributing"]},{"location":"contributing/documentation/#puccini","title":"Puccini","text":"Warning
This only works on Linux.
We use puccini to validate a service template. Therefore, run the following command.
./task puccini:check:single path/to/service-template.yaml\n
To validate all registered service templates, run the following command.
./task puccini:check\n
","tags":["Contributing"]},{"location":"contributing/documentation/#plantuml","title":"PlantUML","text":"We use PlantUML for visualizing UML diagrams. Read PlantUML Guide for modeling instructions. We use mkdocs_build_plantuml to plot PlantUML to SVGs when building the documentation. Note, we use the public PlantUML server https://www.plantuml.com/plantuml for plotting SVGs.
","tags":["Contributing"]},{"location":"contributing/documentation/#queries4tosca","title":"Queries4TOSCA","text":"To generate the conformance tests for Queries4TOSCA, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#tosca-sofdcar-profile","title":"TOSCA SofDCar Profile","text":"To generate the TOSCA SofDCar Profile, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#variability4tosca","title":"Variability4TOSCA","text":"To generate the conformance tests for Variability4TOSCA, run the following command. This command is also executed during the Release workflow and overwrites committed files.
./task docs:generate:query\n
","tags":["Contributing"]},{"location":"contributing/documentation/#limitations","title":"Limitations","text":"This document holds a collection of arbitrary notes.
","tags":["Contributing"]},{"location":"contributing/notes/#filesystem","title":"Filesystem","text":"","tags":["Contributing"]},{"location":"contributing/notes/#home-directory","title":"Home Directory","text":"${vintner_home}/\n\u251c\u2500 templates/\n\u251c\u2500 instances/\n\u251c\u2500 assets/\n\u251c\u2500 plugins.yaml\n
","tags":["Contributing"]},{"location":"contributing/notes/#instance-directory","title":"Instance Directory","text":"${vintner_home}/\n\u251c\u2500 instances/\n\u2502 \u251c\u2500 ${instance-name}/\n\u2502 \u2502 \u251c\u2500 data/\n\u2502 \u2502 \u251c\u2500 service-inputs/\n\u2502 \u2502 \u2502 \u251c\u2500 ${timestamp}.yaml\n\u2502 \u2502 \u251c\u2500 templates/\n\u2502 \u2502 \u2502 \u251c\u2500 ${timestamp}/\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 service-template.${timestamp}.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 variability-inputs.${timestamp}.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 variable-service-template.yaml\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500 ...\n\u2502 \u2502 \u251c\u2500 info.yaml\n\u2502 \u2502 \u251c\u2500 ...\n\u2502 \u251c\u2500 ...\n\u251c\u2500 ...\n
","tags":["Contributing"]},{"location":"contributing/notes/#instance-info","title":"Instance Info","text":"Keyname Mandatory Type Description name true String Instance name state true String Instance state creation_timestamp true Number ISO milliseconds of creation date resolved_timestamp false Number ISO milliseconds of latest variablity inputs and variability-resolved service template template_timestamp true Number ISO milliseconds of latest variable service template service_inputs_timestamp false Number ISO milliseconds of latest service inputs","tags":["Contributing"]},{"location":"contributing/notes/#instance-state-machine","title":"Instance State Machine","text":"","tags":["Contributing"]},{"location":"contributing/notes/#template-config","title":"Template Config","text":"A template might have a config.yaml
at root of the following type.
export type Config = {\ndependencies: Dependencies\n}\nexport type Dependencies = TemplateDependency[]\nexport type TemplateDependency = {\nsource: string\ntarget?: string\n}\n
","tags":["Contributing"]},{"location":"contributing/notes/#workflows","title":"Workflows","text":"","tags":["Contributing"]},{"location":"contributing/notes/#initialize-a-new-instance","title":"Initialize a new Instance","text":"vintner instances init
vintner instances resolve
vintner instances deploy
vintner instances continue
vintner instances swap
vintner instances update
Note, requires to resolve variability first. In contrast to deploying an instance, deployment inputs can be changed and the update command instead of the deploy command is sent to the orchestrator.
","tags":["Contributing"]},{"location":"contributing/notes/#adapt-an-instance","title":"Adapt an Instance","text":"vintner instances adapt
In contrast to updating an instance template, adapting an instance regenerates the variability-resolve topology template and does not swap the variable topology template. In contrast to updating an instance, variability inputs change and variability is resolved.
","tags":["Contributing"]},{"location":"contributing/notes/#undeploy-an-instance","title":"Undeploy an Instance","text":"vintner instances undeploy
vintner instances delete
Note, this does not undeploy the instance.
","tags":["Contributing"]},{"location":"contributing/notes/#conventions","title":"Conventions","text":"get${data}
returns path to the data, e.g., Instance#getServiceInputs
.load${data}
returns data loaded from the filesystem, e.g. Instance#loadServiceInputs
.set${data}
writes data to filesystem, e.g. Instance#setService
.sudo apt-get update -y && sudo apt-get install sudo unzip tree nano wget jq net-tools curl git stress nmap -y\n
","tags":["Contributing"]},{"location":"contributing/notes/#put-some-stress-on-cpu-and-memory","title":"Put Some Stress on CPU and Memory","text":"stress --cpu 18 --vm 36 --vm-bytes 1024M\n
","tags":["Contributing"]},{"location":"contributing/notes/#reverse-ssh-tunnel","title":"Reverse SSH Tunnel","text":"ssh -N -R 2999:192.168.178.46:3001 pi\n
","tags":["Contributing"]},{"location":"contributing/notes/#executable-file-under-windows","title":"Executable File under Windows","text":"git update-index --chmod=+x <path to file>\n
","tags":["Contributing"]},{"location":"contributing/notes/#bwcloud-blocked-ports","title":"bwCloud Blocked Ports","text":"Some ports are blocked when using bwCloud: https://www.bw-cloud.org/de/bwcloud_scope/netzwerk
","tags":["Contributing"]},{"location":"contributing/notes/#naming-convention","title":"Naming Convention","text":"Types should be named according to the following pattern.
type = [domain]+.entity[.Name]+\nentity = \"nodes\" | \"relationships\" | \"capabilities\" | \"artifacts\" | \"datatypes\" | \"groups\n | \"policies\" | \"interfaces\"\nword = (\"a\" ... \"z\" | \"A\" ... \"Z\")[word]\n* = word\n
","tags":["Contributing"]},{"location":"contributing/notes/#environment","title":"Environment","text":"All environment variables are prefixed by OPENTOSCA_VINTNER_
. When the following environment variables are read, they are tried to be parsed as JSON. If they cannot be parsed, they are treated as string.
OPENTOSCA_VINTNER_VARIABILITY_PRESETS
OPENTOSCA_VINTNER_VARIABILITY_INPUT_${KEY}
OPENTOSCA_VINTNER_DEPLOYMENT_INPUT_${KEY}
These environment variables should be used with caution.
","tags":["Contributing"]},{"location":"contributing/notes/#lines-of-code","title":"Lines of Code","text":"Run the following command, to count the lines of code in the src
folder.
cloc src\n
The following output has been generated for the commit 3c6d29df6b7fb52b39d46ffe179e6800b60c4398
on September 5th, 2024.
376 text files.\n 339 unique files. \n 39 files ignored.\n\ngithub.com/AlDanial/cloc v 1.98 T=0.12 s (2936.0 files/s, 260917.4 lines/s)\n-------------------------------------------------------------------------------\nLanguage files blank comment code\n-------------------------------------------------------------------------------\nTypeScript 301 3529 2116 23146\nYAML 9 79 0 757\nBourne Shell 21 77 80 250\nEJS 6 11 0 66\nPython 1 4 0 10\nCSV 1 0 0 1\n-------------------------------------------------------------------------------\nSUM: 339 3700 2196 24230\n-------------------------------------------------------------------------------\n
","tags":["Contributing"]},{"location":"contributing/notes/#adding-a-new-publication","title":"Adding a New Publication","text":"The following links are used in publications.
technology_constraint: false
required_artifact_constraint: false
required_incoming_relation_constraint: false
We briefly discuss limitations of our prototypical implementation.
relationship
at requirement assignments is a string./^(.*_)?host(_.*)?$/
since we do not implement the TOSCA type system./^(.*_)?connection(_.*)?$/
since we do not implement the TOSCA type system.eval
Jinja filter, Unfurl eval
intrinsic function, and TOSCA get_property
intrinsic function, and assume that if the property is not found that it is either produced by an undefined property with a default value or by an attribute.This document holds information about building and publishing a new release.
","tags":["Contributing"]},{"location":"contributing/release/#build","title":"Build","text":"To locally build the project, run the following command. This will transpile Javascript inside the /build
directory. During the build, the string __VERSION__
inside a Javascript file is replace with the current commit hash. The current version can be checked using vintner --version
.
./task build\n
","tags":["Contributing"]},{"location":"contributing/release/#package","title":"Package","text":"Warning
This only works on Linux.
To locally package the project, run the following command. This will package the previously transpiled Javascript using pkg
and generate binaries inside the /dist
directory.
./task package\n
The issue considering the failed bytecode generation of MiniSat is known and can be ignored in our case.
","tags":["Contributing"]},{"location":"contributing/release/#github","title":"GitHub","text":"Vintner is available as GitHub release. On pushes to the main
branch, the Release workflow is triggered. This workflow runs several tests, builds binaries, signs binaries, creates a new GitHub release, and deploys the documentation. An already existing GitHub release and latest
tag is deleted. There is only one release at total.
However, there is also the Build workflow. This workflow basically has the same steps as the Release workflow but does create his own GitHub release and does not deploy the docs.
","tags":["Contributing"]},{"location":"contributing/release/#npm","title":"NPM","text":"Vintner is available as npm package opentosca-vintner
. New versions are published manually. To publish a new version, first update the version number in package.json
and then run
./task release:npm\n
","tags":["Contributing"]},{"location":"contributing/release/#docker","title":"Docker","text":"Vintner is available as Docker image on https://github.com/OpenTOSCA/opentosca-vintner/pkgs/container/opentosca-vintner. They are automatically build and pushed during the Release workflow.
Locally build the image as follows.
docker build -t opentosca/opentosca-vintner:local -f docker/Dockerfile .\n
","tags":["Contributing"]},{"location":"contributing/release/#choco","title":"Choco","text":"There is also a choco package opentosca-vintner
. New versions are published manually. See https://docs.chocolatey.org/en-us/create/create-packages-quick-start for more information.
First, log into the choco account.
choco apikey --api-key [API_KEY_HERE] --source https://push.chocolatey.org\n
Publish a new version as follows. This will use the latest release.
./task release:choco\n
","tags":["Contributing"]},{"location":"contributing/release/#zenodo","title":"Zenodo","text":"Vintner is available on Zenodo with unique DOI https://doi.org/10.5281/zenodo.10155277. New versions are published manually.
To publish a new version, run the Zenodo workflow on GitHub. This workflow will create a draft of a new version based on the latest GitHub release. The version must be manually published on Zenodo.
","tags":["Contributing"]},{"location":"contributing/setup/","title":"Setup","text":"This document holds instructions on the development setup.
","tags":["Contributing"]},{"location":"contributing/setup/#nodejs","title":"Node.js","text":"We use Node.js version 18.15.0
. To install node, use nvm or nvm-windows.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nsource ~/.bashrc\n\nnvm install 18.15.0\nnvm use 18.15.0\n
","tags":["Contributing"]},{"location":"contributing/setup/#yarn","title":"Yarn","text":"We use Yarn 2 (Modern). Install it as follows.
corepack enable\n
","tags":["Contributing"]},{"location":"contributing/setup/#tasks","title":"Tasks","text":"We use ./task
as build tool.
Execute a task as follows. On Windows, execute it using, e.g., Git Bash.
./task [task]\n
Get an overview of tasks as follows.
./task tasks:list\n
Get help for a specific task as follows.
./task tasks:help [task]\n
","tags":["Contributing"]},{"location":"contributing/setup/#writing-tasks","title":"Writing Tasks","text":"Tasks can be written in Bash, Typescript, and Python and are located in ./tasks/some/command/task{.sh,.ts,.py}
. The following environment variables are available.
./task
. TASK_ROOT_DIR The absolute path of the root directory of the project. TASK_TASK_DIR The absolute path of the directory in which the task is located. Some hints:
#!/usr/bin/bash
or set -e
in Bash tasks.TASK_ROOT_DIR
.${TASK_TASK_DIR}/summary
.${TASK_TASK_DIR}/help
.The repository is a monorepo consisting of the CLI, server, docs, tests, etc. Clone it as follows.
git clone https://github.com/opentosca/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
","tags":["Contributing"]},{"location":"contributing/setup/#large-files","title":"Large Files","text":"Larges files, such as binaries or archives used in examples, are added using git lfs. This includes the file extensions .bin
, .gz
, .tar
, .zip
, .xz
, and .jar
.
Commits are required to be signed. Therefore, register a signing key as follows.
Enable auto-signing inside the repository.
git config commit.gpgsign true\n
","tags":["Contributing"]},{"location":"contributing/setup/#jetbrains","title":"JetBrains","text":"Warning
WebStorm Version 2022.3.3 seems to have problems with breakpoints when src/resolver/graph.ts
is involved. However, WebStorm Version 2022.3.2 works fine.
We use WebStorm, which is free for students. Install Webstorm using JetBrains Toolbox.
","tags":["Contributing"]},{"location":"contributing/setup/#eslint","title":"ESLint","text":"Open the Project Settings using Ctrl + Alt + S
. ESLint should be configured as given in the figure below with the following pattern.
{**/*,*}.{ts}\n
Figure 1: IntelliJ ESLint Settings","tags":["Contributing"]},{"location":"contributing/setup/#prettier","title":"Prettier","text":"
Open the Project Settings using Ctrl + Alt + S
. Prettier should be configured as given in the figure below with the following pattern.
{**/*,*}.{ts,json,yaml,yml}\n
Figure 2: IntelliJ Prettier Settings","tags":["Contributing"]},{"location":"contributing/setup/#excluded-directories","title":"Excluded Directories","text":"
The following directories should be excluded from search by the IDE.
.nyc_output
docs/.venv
build
build-tasks
coverage
yarn
dist
dist-docs
node_modules
Warning
This specification is experimental.
This document specifies how to achieve EDMM compliance when modeling and gives additional insights. This document does not specify how to achieve EDMM compatibility on a technical level. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["EDMM","Specification"]},{"location":"edmm/#general","title":"General","text":"A built-in type must not be compliant with EDMM restrictions since such a type is internally used for our implementation of the EDMM-DTSM mapping.
create
, configure
, create
, stop
, and delete
operation of the Management
interface using management
as interface name.management
operation is an inline bash
script, which is executed in the root of the application directory.node.service.application
.shop.component
derived from node.application
.t
might have node type implementations which are node types that (i) are derived from t
and (ii) implement the tosca.interfaces.node.lifecycle.Standard
interface.Management
interface.The prototype currently does not support custom template attributes, i.e., writing back outputs from management operations.
","tags":["EDMM","Specification"]},{"location":"edmm/#application-directory","title":"Application Directory","text":"software.application
node template hosted on a remote.machine
node template has its own dedicated application directory..vintner
directory is a reserved directory in the application directory..
replaced with _
.This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["EDMM","Specification"]},{"location":"edmm/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["EDMM","Specification"]},{"location":"edmm/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["EDMM","Specification"]},{"location":"normative/","title":"TOSCA Vintner Profile","text":"","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-profile-10-release-candidate","title":"TOSCA Vintner Profile 1.0 Release Candidate","text":"This document specifies the TOSCA Vintner profile. This profile includes normative TOSCA types for the domain of cloud computing. Standardizing such normative TOSCA types improves interoperability. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-core-profile","title":"TOSCA Vintner Core Profile","text":"The core normative TOSCA type definitions contain high-level type definitions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#metadata","title":"Metadata","text":"We define the following metadata.
Metadata Descriptionvintner_ignore
Flag for ignoring an entity (type) during generation, e.g., to omit a property from the environment. vintner_name
Overrides the original name, e.g., override a property name with its correct environment name. vintner_generated
Flag for marking an entity (type) that has been generated. vintner_orchestrator
Orchestrator name for which the entity (type) has been generated. vintner_abstract
Flag for marking an entity type as abstract. vintner_normative
Flag for marking an entity type as normative (considering this specification). vintner_link
URL which points, e.g., to the documentation page of the entity type.","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact-types","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-vintner-profile-core1.
Figure C1: TOSCA Vintner Core Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact","title":"artifact","text":"artifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#sourcearchive","title":"source.archive","text":"application packaged as archive
source.archive:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\nentry_schema:\ntype: string\nrequired: false\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#systempackage","title":"system.package","text":"system.package:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#containerimage","title":"container.image","text":"expects image reference in \"file\"
container.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machineimage","title":"machine.image","text":"expects image reference in \"file\"
machine.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbmsimage","title":"dbms.image","text":"expects image reference in \"file\"
dbms.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cacheimage","title":"cache.image","text":"expects image reference in \"file\"
cache.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface-types","title":"Interface Types","text":"We specify the following normative interface types. An overview is given in Figure tosca-vintner-profile-core2.
Figure C2: TOSCA Vintner Core Interface Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface","title":"interface","text":"interface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#management","title":"management","text":"management:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: management lifecycle create operation.\nconfigure:\ndescription: management lifecycle configure operation.\nstart:\ndescription: management lifecycle start operation.\nstop:\ndescription: management lifecycle stop operation.\ndelete:\ndescription: management lifecycle delete operation.\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node-types","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-vintner-profile-core3.
Figure C3: TOSCA Vintner Core Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node","title":"node","text":"node:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cloudprovider","title":"cloud.provider","text":"cloud.provider:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cloudservice","title":"cloud.service","text":"cloud.service:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareapplication","title":"software.application","text":"software.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#serviceapplication","title":"service.application","text":"service.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\napplication_port:\ntype: string\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_endpoint:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareruntime","title":"software.runtime","text":"software.runtime:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#containerruntime","title":"container.runtime","text":"container.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machine","title":"machine","text":"machine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\nattributes:\napplication_address:\ntype: string\nmanagement_address:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#localmachine","title":"local.machine","text":"local.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#remotemachine","title":"remote.machine","text":"remote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\nports:\ntype: list\nentry_schema:\ntype: string\nflavor:\ntype: string\ndefault: m1.medium\nnetwork:\ntype: string\nssh_user:\ntype: string\nssh_key_name:\ntype: string\nssh_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#virtualmachine","title":"virtual.machine","text":"virtual.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#physicalmachine","title":"physical.machine","text":"physical.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#database","title":"database","text":"database:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#relationaldatabase","title":"relational.database","text":"relational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbms","title":"dbms","text":"dbms:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#relationaldbms","title":"relational.dbms","text":"relational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cache","title":"cache","text":"cache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ncache_port:\ntype: string\nattributes:\napplication_endpoint:\ntype: string\napplication_address:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#storage","title":"storage","text":"storage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#blockstorage","title":"block.storage","text":"block.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#objectstorage","title":"object.storage","text":"object.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\nstorage_dialect:\ntype: string\nstorage_user:\ntype: string\nstorage_token:\ntype: string\nattributes:\nstorage_endpoint:\ntype: string\nstorage_token:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#filestorage","title":"file.storage","text":"file.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ingress","title":"ingress","text":"ingress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\napplication_port:\ntype: string\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\nrequirements:\n- application:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tosca-vintner-extended-profile","title":"TOSCA Vintner Extended Profile","text":"The extended normative TOSCA type definitions contain additional provider-specific type definitions which are derived from the core type definitions.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact-types_1","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-vintner-profile-extended1.
Figure E1: Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerimage","title":"docker.image","text":"expects image reference in \"file\"
docker.image:\nderived_from: container.image\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ziparchive","title":"zip.archive","text":"zip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tararchive","title":"tar.archive","text":"tar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#aptpackage","title":"apt.package","text":"apt.package:\nderived_from: system.package\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node-types_1","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-vintner-profile-extended2.
Figure E2: Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsruntime","title":"nodejs.runtime","text":"nodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\nartifacts:\napt_package:\ntype: apt.package\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsserviceapplication","title":"nodejs.service.application","text":"nodejs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: npm ci\nstart: npm start\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#reactjsserviceapplication","title":"reactjs.service.application","text":"reactjs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonruntime","title":"python.runtime","text":"python.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nartifacts:\napt_package:\ntype: apt.package\nfile: python-is-python3\nproperties:\ndependencies:\ntype: string\ndefault: python3 python3-pip python3-venv\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonserviceapplication","title":"python.service.application","text":"python.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: python3\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: pip install -r requirements.txt\nstart: python main.py\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#goserviceapplication","title":"go.service.application","text":"go.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaruntime","title":"java.runtime","text":"java.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: openjdk-18-jre-headless\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaserviceapplication","title":"java.service.application","text":"java.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dotnetruntime","title":"dotnet.runtime","text":"dotnet.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: dotnet-sdk-8.0\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#csharpserviceapplication","title":"csharp.service.application","text":"csharp.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#binaryserviceapplication","title":"binary.service.application","text":"binary.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpprovider","title":"gcp.provider","text":"gcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ngcp_service_account_file:\ntype: string\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpservice","title":"gcp.service","text":"gcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudrun","title":"gcp.cloudrun","text":"gcp.cloudrun:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudsql","title":"gcp.cloudsql","text":"gcp.cloudsql:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpappengine","title":"gcp.appengine","text":"gcp.appengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appengine.googleapis.com\nrequirements:\n- build:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n- reporting:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpappenginereporting","title":"gcp.appenginereporting","text":"gcp.appenginereporting:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudbuild","title":"gcp.cloudbuild","text":"gcp.cloudbuild:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpkubernetesengine","title":"gcp.kubernetesengine","text":"gcp.kubernetesengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudstorage","title":"gcp.cloudstorage","text":"gcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpmemorystore","title":"gcp.memorystore","text":"gcp.memorystore:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerengine","title":"docker.engine","text":"Installs Docker Engine listening on the unix socket as well as on tcp://0.0.0.0:2375
docker.engine:\nderived_from: container.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: docker\n_hosting:\ntype: string\ndefault: docker\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#kubernetescluster","title":"kubernetes.cluster","text":"kubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\nk8s_ca_cert_file:\ntype: string\nk8s_client_cert_file:\ntype: string\nk8s_client_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#openstackprovider","title":"openstack.provider","text":"openstack.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\nos_auth_type:\ntype: string\nos_auth_url:\ntype: string\nos_identity_api_version:\ntype: string\nos_interface:\ntype: string\nos_application_credential_id:\ntype: string\nos_application_credential_secret:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldbms","title":"mysql.dbms","text":"mysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\napplication_name:\ntype: string\ndbms_password:\ntype: string\ndbms_ssl_mode:\ntype: string\ndefault: None\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\nmanagement_address:\ntype: string\nmanagement_port:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldatabase","title":"mysql.database","text":"mysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndatabase_user:\ntype: string\ndatabase_password:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#minioserver","title":"minio.server","text":"minio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#redisserver","title":"redis.server","text":"redis.server:\nderived_from: cache\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_protocol:\ntype: string\ndefault: redis\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-a-tosca-vintner-profile","title":"Appendix A \"TOSCA Vintner Profile\"","text":"This appendix contains the TOSCA Vintner profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-vintner-profile-core.yaml\n- ./tosca-vintner-profile-extended.yaml\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-b-tosca-vintner-core-profile","title":"Appendix B \"TOSCA Vintner Core Profile\"","text":"This appendix contains the TOSCA Vintner Core profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner (Core)\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile (Core)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nartifact_types:\nartifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\nsource.archive:\nderived_from: artifact\ndescription: application packaged as archive\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\nentry_schema:\ntype: string\nrequired: false\nsystem.package:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\ncontainer.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\nmachine.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ndbms.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ncache.image:\nderived_from: artifact\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\ninterface_types:\ninterface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\nmanagement:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: management lifecycle create operation.\nconfigure:\ndescription: management lifecycle configure operation.\nstart:\ndescription: management lifecycle start operation.\nstop:\ndescription: management lifecycle stop operation.\ndelete:\ndescription: management lifecycle delete operation.\nnode_types:\nnode:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncloud.provider:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncloud.service:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsoftware.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\nservice.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\napplication_port:\ntype: string\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_endpoint:\ntype: string\nsoftware.runtime:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncontainer.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nmachine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\nattributes:\napplication_address:\ntype: string\nmanagement_address:\ntype: string\nlocal.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nremote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\nports:\ntype: list\nentry_schema:\ntype: string\nflavor:\ntype: string\ndefault: m1.medium\nnetwork:\ntype: string\nssh_user:\ntype: string\nssh_key_name:\ntype: string\nssh_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvirtual.machine:\nderived_from: remote.machine\nphysical.machine:\nderived_from: remote.machine\ndatabase:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nrelational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ndbms:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrelational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ncache_port:\ntype: string\nattributes:\napplication_endpoint:\ntype: string\napplication_address:\ntype: string\nstorage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nblock.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nobject.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\nstorage_dialect:\ntype: string\nstorage_user:\ntype: string\nstorage_token:\ntype: string\nattributes:\nstorage_endpoint:\ntype: string\nstorage_token:\ntype: string\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nfile.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\ningress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\napplication_port:\ntype: string\napplication_protocol:\ntype: string\nattributes:\napplication_address:\ntype: string\nrequirements:\n- application:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#appendix-c-tosca-vintner-extended-profile","title":"Appendix C \"TOSCA Vintner Extended Profile\"","text":"This appendix contains the TOSCA Vintner Extended profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for OpenTOSCA Vintner (Extended)\nmetadata:\nvintner_normative: 'true'\ntemplate_name: TOSCA Vintner Profile (Extended)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-vintner-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- tosca-vintner-profile-core.yaml\nartifact_types:\ndocker.image:\nderived_from: container.image\ndescription: expects image reference in \"file\"\nmetadata:\nvintner_normative: 'true'\nzip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\ntar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\napt.package:\nderived_from: system.package\nmetadata:\nvintner_normative: 'true'\nproperties:\nscript:\ntype: string\nrequired: false\ndescription: URL of an installation script\nrepository:\ntype: string\nrequired: false\ndescription: name of the repository (required if source is set)\nkey:\ntype: string\nrequired: false\ndescription: URL of the apt key which signs the apt repository (required if source is set)\nsource:\ntype: string\nrequired: false\ndescription: source of the repository\ndependencies:\ntype: string\nrequired: false\ndescription: Comma separated list of apt packages that are additionally installed\nenv:\ntype: string\nrequired: false\ndescription: Space separated env variables\nnode_types:\nnodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\nartifacts:\napt_package:\ntype: apt.package\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nnodejs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: npm ci\nstart: npm start\nreactjs.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\npython.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nartifacts:\napt_package:\ntype: apt.package\nfile: python-is-python3\nproperties:\ndependencies:\ntype: string\ndefault: python3 python3-pip python3-venv\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\npython.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: python3\ninterfaces:\nmanagement:\ntype: management\noperations:\nconfigure: pip install -r requirements.txt\nstart: python main.py\ngo.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\njava.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: openjdk-18-jre-headless\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\njava.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\ndotnet.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: java\nartifacts:\napt_package:\ntype: apt.package\nfile: dotnet-sdk-8.0\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncsharp.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\nbinary.service.application:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\ngcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ngcp_service_account_file:\ntype: string\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\ngcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ngcp.cloudrun:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\ngcp.cloudsql:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\ngcp.appengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appengine.googleapis.com\nrequirements:\n- build:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\n- reporting:\ncapability: tosca.capabilities.Root\nrelationship: tosca.relationships.DependsOn\ngcp.appenginereporting:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\ngcp.cloudbuild:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\ngcp.kubernetesengine:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\ngcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\ngcp.memorystore:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\ndocker.engine:\nderived_from: container.runtime\ndescription: Installs Docker Engine listening on the unix socket as well as on tcp://0.0.0.0:2375\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: docker\n_hosting:\ntype: string\ndefault: docker\nattributes:\nmanagement_address:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nkubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\nk8s_ca_cert_file:\ntype: string\nk8s_client_cert_file:\ntype: string\nk8s_client_key_file:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nopenstack.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\nos_auth_type:\ntype: string\nos_auth_url:\ntype: string\nos_identity_api_version:\ntype: string\nos_interface:\ntype: string\nos_application_credential_id:\ntype: string\nos_application_credential_secret:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nmysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\napplication_name:\ntype: string\ndbms_password:\ntype: string\ndbms_ssl_mode:\ntype: string\ndefault: None\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\nmanagement_address:\ntype: string\nmanagement_port:\ntype: string\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nmysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndatabase_user:\ntype: string\ndatabase_password:\ntype: string\nattributes:\napplication_address:\ntype: string\napplication_port:\ntype: string\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nminio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\nredis.server:\nderived_from: cache\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_protocol:\ntype: string\ndefault: redis\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"queries4tosca/getting-started/","title":"Getting Started","text":"There is no standardized way to query TOSCA repositories or instance data. Therefore, we introduce Queries4TOSCA which defined a query language for TOSCA. This language provides a graph-based query language which includes path expressions, filters, and pattern matching. This section will give a quick introduction to Queries4TOSCA.
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/getting-started/#preparation","title":"Preparation","text":"To run the example queries, we need to install OpenTOSCA Vintner and have a resolved instance of the \"Getting Started\" template. First, clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Then import the template, create an instance, and resolve the variability.
vintner templates import --template getting-started --path examples/xopera-getting-started\nvintner instances init --instance getting-started --template getting-started\nvintner instances resolve --instance getting-started --presets first\n
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/getting-started/#example-queries","title":"Example Queries","text":"Queries start with a FROM
statement, followed by either templates
or instances
and the name of the template or the name of the instance, respectively. Inside a SELECT
statement, we can enter a path to the data that we want to return.
To get the entire contents of the template, run the following command.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT .\"\n
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ntextfile:\nderived_from: tosca.nodes.SoftwareComponent\nproperties:\ncontent:\ntype: string\ninterfaces:\nStandard:\ninputs:\ncontent:\nvalue:\nget_property:\n- SELF\n- content\ntype: string\noperations:\ncreate: create.yaml\ndelete: delete.yaml\ntopology_template:\nnode_templates:\nlocalhost:\ntype: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\nfirst:\ntype: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
We can return specific elements by specifying their path. Note, that topology_template
can be omitted at the start. The following command returns the contents of the localhost
node.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.localhost\"\n
type: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\n
We can use an asterisk as a wildcard operator to get all child elements. The following command returns a list of all nodes.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*\"\n
- type: tosca.nodes.Compute\nattributes:\nprivate_address: localhost\npublic_address: localhost\n- type: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
We can also specify a predicate in square brackets after any part of the path expression to filter elements. The following command will return only nodes of type textfile
.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*[type='textfile']\"\n
type: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
In cases where we are only interested in some elements of a node, we can use a return structure to restrict the output to certain variables. To do this, put curly braces with key-value pairs behind your path expression. The following command will return only the content
property of the first
node.
vintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.first{'Type': type, 'Text': properties.content}\"\n
Type: textfile\nText: First Textfile has been selected!\n
This also works on arrays. The following command returns an array that consists of the name and type of each node. Note the lack of quotation marks - we are using a value from the template for both key and value of the return object.
QueryResultvintner query --query \"\\\n FROM templates.getting-started \\\n SELECT node_templates.*{name: type}\"\n
- localhost: tosca.nodes.Compute\n- first: textfile\n
MATCH
statements are used to match patterns in the topology of a template. We can \"draw\" the pattern by surrounding nodes with parentheses and connect them to other nodes via arrows. The following statement will return all nodes that have a requirement fulfilled by localhost
.
vintner query --query \"\\\n FROM templates.getting-started \\\n MATCH ([name='localhost'])<--(node) \\\n SELECT node\"\n
first:\ntype: textfile\nproperties:\ncontent: First Textfile has been selected!\nrequirements:\n- host:\nnode: localhost\n
This is just a simple example. In a more complex scenario, it would be possible, e.g., to dynamically access the public address of a virtual machine which hosts a database to which a specific component connects.
","tags":["Queries4TOSCA","Guide"]},{"location":"queries4tosca/specification/","title":"Specification","text":"","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#queries4tosca-specification-10-release-candidate","title":"Queries4TOSCA Specification 1.0 Release Candidate","text":"This document specifies a Query Language for TOSCA (Queries4TOSCA) inspired by XPath and Cypher. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#queries4tosca","title":"Queries4TOSCA","text":"The following statements can be used inside a query.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#from","title":"FROM","text":"A FROM
statement is used to denote which templates or instances the query should be executed on. It starts with the literal FROM
, followed by a space and the keyword templates
or instances
. Afterward, either a file path needs to be provided, or an asterisk can be used to select all service templates or instances, respectively.
From = \"FROM\" (\"instances\" | \"templates\") (\"/\" | \".\") (\"*\" | filePath)\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#select","title":"SELECT","text":"SELECT
statements are used to select elements from a template. They are denoted by the keyword SELECT
, followed by one or more path expressions separated by a comma. Path expressions are described in detail later. They can start with the special keywords Group
or Policy
, the name of an element, or a dot to select everything. Afterward, a series of mapping steps, filters, or array accesses can be used. Lastly, there is an optional return structure.
Select = \"SELECT\" Path (\",\" Path)*\nPath = (Group | Policy | Step | \".\") (ArrayAccess | Map | Filter)* ReturnClause?\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#match","title":"MATCH","text":"MATCH
statements are used to search for a pattern inside the nodes of a service template. A pattern consists of at least one node, along with any number of additional nodes and relationships. The syntax for denoting nodes and relationships is described in detail later.
Match = \"MATCH\" Node (Relationship Node)*\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#comments","title":"Comments","text":"Single-line comments begin with two forward slashes and extend to the end of the current line. Multi-line comments begin with a forward slash and an asterisk and end with another asterisk and slash and can be inserted anywhere. Here are some examples.
// single-line comment\n/* multi-line\ncomment */\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#paths4tosca","title":"Paths4TOSCA","text":"Paths4TOSCA is a path expression syntax that can navigate the various parts of a service template. Paths are separated by dots. All parts of a topology template (node_templates
, inputs
, etc...) can be accessed directly. The following expressions can be used.
Here are some examples.
node_templates.localhost // Selecting a node directly by name\nnode_templates.localhost.# // Selecting attributes of a node\nnode_templates.* // Selecting all nodes\nGROUP(my-group) // Selecting all nodes in group 'my-group'\nPOLICY(my-policy) // Selecting all nodes targeted by policy 'my-policy'\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#predicates","title":"Predicates","text":"Elements can be filtered by putting a condition in square brackets. Strings need to be surrounded by single or double quotes, and may use regular expressions to find multiple possible matches. If a filter only consists of a single variable with no comparison operator, it will return true if the current element has a matching child element. Putting an exclamation mark before a condition negates it. The following operators can be used.
Symbol Description ! Negation = Equality != Inequality > Greater than < Less than >= Greater than or equal <= Less than or equal =~ Matches regular expressionHere are some examples.
node_templates.*[type='textfile'] // equality\nnode_templates.*[name!='localhost'] // inequality\nnode_templates.*[name=~'^local'] // regular expression\nnode_templates.*[properties] // existence of field properties\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#array-access","title":"Array Access","text":"Accessing an element of an array can be accomplished by putting an integer inside square brackets after the path of the array. If the value inside the brackets is an integer, it is interpreted as an array access, otherwise, it is interpreted as a filter. Attempting to access non-existent array indices will return an empty result.
node_templates.*[0] // Selecting the first node template\nnode_templates.localhost.requirements[1] // Selecting the second requirement of a node\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#boolean-operators","title":"Boolean Operators","text":"Boolean operators can be used in predicates to link two or more conditions. AND
returns true if both predicates evaluate to true, OR
returns true if at least one of the predicates evaluates to true.
node_templates.*[type='textfile' AND name='first']\nnode_templates.*[name='first' OR name='second']\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#return-structures","title":"Return Structures","text":"By default, the output that is returned will always consist of the value at the current context specified by the path expression. However, it is possible to define the shape of the returned data. This can be done by putting curly braces with comma-separated key-value pairs at the end of a path expression. Both key and value can either be a literal or a variable. When a variable is used as a key, it needs to evaluate to a string. Instead of a key-value pair, it is also possible to only specify the name of a value, in which case it will automatically be used as the name for the key.
The expression in the first line returns a list of objects comprised of the keys Node Name
and Node Type
mapped to the names and types of individual nodes. The second expression also returns a list of objects, but their keys are named directly after the values, namely name and type. The expression in the last line returns a list of objects consisting of only a single key-value pair, with the name of each individual node as the key, and the corresponding type as the value.
node_templates.*{'Node Name': name, 'Node Type': type} // Using custom key names\nnode_templates.*{name, type} // Short form\nnode_templates.*{name: type} // List of node names mapped to type\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#patterns","title":"Patterns","text":"The following sections describes how to define patterns, which can be matched using a MATCH
statement.
Nodes are denoted by a pair of parentheses. Inside those parentheses, a variable name can be given to the node, otherwise they are anonymous and cannot be referenced in the SELECT
clause.
() // anonymous node template\n(n) // node template with variable n\n
Nodes can optionally contain a filter in square brackets that allows the same predicate syntax described above. Selecting a node template can be seen as the equivalent of a SELECT
clause that implicitly starts at the path node_templates.*
.
([type='textfile']) // anonymous node template with filter\n(n [type='textfile']) // node template with variable n and filter\n
Relationships can be specified between nodes. They are connected to nodes via dashes or arrows to denote undirected or directed relationships, respectively. An incoming relationship means that the requirement of another node is fulfilled by a capability of the current node, while an outgoing relationship means that a requirement of the current node is fulfilled by the capability of the other node. An undirected relationship applies to both of these scenarios.
(a)-->(b) // a has requirement fulfilled by capability of b\n(a)<--(b) // a has capability that fulfills requirement of b\n(a)--(b) // a and b have any relationship\n
Like node templates, relationships can be given a variable name, and their types can be specified using the same filter syntax. In order to do this, they need to be surrounded by curly braces inserted in the middle of the arrow.
(a)-{r}->(b) // relationship with variable r\n(a)-{r [name='host']}->(b) // relationship with symbolic name host and variable r\n
It is also possible to search for node templates connected over multiple relationships by specifying a cardinality. This can be accomplished by putting an asterisk at the end of a relationship, followed optionally by a number or a range.
(a)-{*2}->(b) // exactly two hops between a and b\n(a)-{*2..5}->(b) // between two and five hops\n(a)-{*2..}->(b) // at least two hops\n(a)-{*..5}->(b) // at most five hops\n(a)-{*}->(b) // any amount of hops\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#appendix-a-grammar","title":"Appendix A \"Grammar\"","text":"This appendix contains the Ohm grammar of Queries4TOSCA.
Query {\n Main = (Expression | MatchExpression) end\n Expression = FromExpression Select\n MatchExpression = FromExpression Match Select\n\n FromExpression = \"FROM\" (\"instances\" | \"templates\") (\"/\" | \".\") (asterisk | filePath)\n\n Select = \"SELECT\" Path (\",\" Path)*\n Path = (Group | Policy | Step | \".\") (ArrayAccess | Map | Filter)* ReturnClause?\n Map = \".\" Step\n Filter = PredicateExpression\n Step = shortcut? (asterisk | ident)\n ArrayAccess = \"[\" integer \"]\"\n ReturnClause = \"{\" KeyValuePair (\",\" KeyValuePair)* \"}\"\n KeyValuePair = Variable \":\" Variable --complex\n | Variable --simple\n Group = \"GROUP\" \"(\" ident \")\"\n Policy = \"POLICY\" \"(\" ident \")\"\n\n PredicateExpression = \"[\" Predicate \"]\"\n Predicate = Predicate logic Predicate -- multi\n | Condition -- single\n Condition = negation Value comparison literal -- comparison\n | negation Value -- existence\n\n Match = \"MATCH\" Node (Relationship Node)*\n Node = \"(\" ident? PredicateExpression? \")\"\n Relationship = arrowLeft arrowRight --simple\n | arrowLeft \"{\" ident? PredicateExpression? Cardinality? \"}\" arrowRight --cond\n Cardinality = asterisk integer \"..\" integer --range\n | asterisk \"..\" integer --max\n | asterisk integer \"..\" --min\n | asterisk integer --exact\n | asterisk --unlimited\n Variable = literal | path | ident\n Value = shortcut? (path | literal)\n\n negation = \"!\" | \"\"\n arrowLeft = \"<-\" | \"-\"\n arrowRight = \"->\" | \"-\"\n asterisk = \"*\"\n comparison = \"=~\" | \"=\" | \"!=\" | \">=\" | \"<=\" | \">\" | \"<\"\n ident = letter (alnum | \"_\" | \"-\")*\n logic = \"AND\" | \"OR\"\n path = letter (alnum | \"_\" | \"-\" | \".\")*\n filePath = (~space any)*\n literal = string | float | integer | bool\n bool = \"true\" | \"false\" | \"TRUE\" | \"FALSE\"\n shortcut = \"@\" | \"#\" | \"$\" | \"%\"\n string\n = \"'\" (~\"'\" any)* \"'\"\n | \"\\\"\" (~\"\\\"\" any)* \"\\\"\"\n integer = digit+\n float = digit? \".\" digit+\n singleComment = \"//\" (~\"\\n\" any)*\n multiComment = \"/*\" (~\"*/\" any)* \"*/\"\n space := singleComment | multiComment | ...\n}\n
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/specification/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/","title":"Introduction","text":"","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#queries4tosca-conformance-test-suite-10-release-candidate","title":"Queries4TOSCA Conformance Test Suite 1.0 Release Candidate","text":"This document specifies the conformance test suite for the Queries4TOSCA specification which can be used to evaluate Query4TOSCA implementations. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#conformance-tests","title":"Conformance Tests","text":"Each test is described on a separate page. The description includes typically a service template, a query, expected results and so on along with an explanation about the expected processing.
ID Test 1 all 2 array-access 3 boolean-and 4 boolean-or 5 filter-equals 6 filter-existence 7 filter-negation 8 filter-nested 9 filter-regex 10 group 11 match-length-any 12 match-length-range 13 match-next 14 match-previous 15 match-rel-filter 16 match-single 17 node-template 18 policy 19 resolve-chain 20 resolve-loop 21 resolve-self 22 resolve-simple 23 result-structure-complex 24 result-structure-simple 25 shortcut-property","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/introduction/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Queries4TOSCA","Specification"]},{"location":"queries4tosca/tests/test-all/","title":"all","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-all/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT .\n
"},{"location":"queries4tosca/tests/test-all/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-array-access/","title":"array-access","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-array-access/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp.requirements[1]\n
"},{"location":"queries4tosca/tests/test-array-access/#query-result","title":"Query Result","text":"The following query result is expected.
host: tomcat\n
"},{"location":"queries4tosca/tests/test-boolean-and/","title":"boolean-and","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-boolean-and/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[name=\"dbms\" AND type=\"DBMS\"]\n
"},{"location":"queries4tosca/tests/test-boolean-and/#query-result","title":"Query Result","text":"The following query result is expected.
type: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-boolean-or/","title":"boolean-or","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-boolean-or/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[type=\"Database\" OR type=\"DBMS\"]\n
"},{"location":"queries4tosca/tests/test-boolean-or/#query-result","title":"Query Result","text":"The following query result is expected.
- type: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\n- type: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-filter-equals/","title":"filter-equals","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-equals/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[type=\"VirtualMachine\"].name\n
"},{"location":"queries4tosca/tests/test-filter-equals/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-filter-existence/","title":"filter-existence","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-existence/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[properties.num_cpus].name\n
"},{"location":"queries4tosca/tests/test-filter-existence/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-filter-negation/","title":"filter-negation","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-negation/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[!type=\"VirtualMachine\"].name\n
"},{"location":"queries4tosca/tests/test-filter-negation/#query-result","title":"Query Result","text":"The following query result is expected.
- webapp\n- tomcat\n- mysql_database\n- dbms\n- openstack\n
"},{"location":"queries4tosca/tests/test-filter-nested/","title":"filter-nested","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-nested/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[properties.port=3306]\n
"},{"location":"queries4tosca/tests/test-filter-nested/#query-result","title":"Query Result","text":"The following query result is expected.
type: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-filter-regex/","title":"filter-regex","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-filter-regex/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*[name=~\"vm_\"]\n
"},{"location":"queries4tosca/tests/test-filter-regex/#query-result","title":"Query Result","text":"The following query result is expected.
- type: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n- type: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-group/","title":"group","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-group/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT GROUP(database_group)\n
"},{"location":"queries4tosca/tests/test-group/#query-result","title":"Query Result","text":"The following query result is expected.
mysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-match-length-any/","title":"match-length-any","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-length-any/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"WebApplication\"])-{*}->(node[type=\"OpenStack\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-length-any/#query-result","title":"Query Result","text":"The following query result is expected.
openstack:\ntype: OpenStack\n
"},{"location":"queries4tosca/tests/test-match-length-range/","title":"match-length-range","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-length-range/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"Tomcat\"])-{*1..2}->(node) SELECT node.*.name\n
"},{"location":"queries4tosca/tests/test-match-length-range/#query-result","title":"Query Result","text":"The following query result is expected.
- vm_1\n- openstack\n
"},{"location":"queries4tosca/tests/test-match-next/","title":"match-next","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-next/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ([type=\"Tomcat\"])-->(node) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-next/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-match-previous/","title":"match-previous","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-previous/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH (node)<--([type=\"Tomcat\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-previous/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/","title":"match-rel-filter","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH ()-{[type=\"ConnectsTo\"]}->(node2) SELECT node2\n
"},{"location":"queries4tosca/tests/test-match-rel-filter/#query-result","title":"Query Result","text":"The following query result is expected.
dbms:\ntype: DBMS\nrequirements:\n- host: vm_2\n
"},{"location":"queries4tosca/tests/test-match-single/","title":"match-single","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-match-single/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml MATCH (node[type=\"WebApplication\"]) SELECT node\n
"},{"location":"queries4tosca/tests/test-match-single/#query-result","title":"Query Result","text":"The following query result is expected.
webapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-node-template/","title":"node-template","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-node-template/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp\n
"},{"location":"queries4tosca/tests/test-node-template/#query-result","title":"Query Result","text":"The following query result is expected.
type: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\n
"},{"location":"queries4tosca/tests/test-policy/","title":"policy","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-policy/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT POLICY(placement_policy)\n
"},{"location":"queries4tosca/tests/test-policy/#query-result","title":"Query Result","text":"The following query result is expected.
vm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\n
"},{"location":"queries4tosca/tests/test-resolve-chain/","title":"resolve-chain","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-chain/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.webapp.properties.db_password)\ndb_password: executeQuery(SELECT node_templates.mysql_database.properties.password)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-chain/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: password\ndb_password: password\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-loop/","title":"resolve-loop","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-loop/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.webapp.properties.db_password)\ndb_password: executeQuery(SELECT node_templates.webapp.properties.db_username)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-loop/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown.
Circular dependencies detected. Unable to resolve queries in your template.\n
"},{"location":"queries4tosca/tests/test-resolve-self/","title":"resolve-self","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-self/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT SELF.properties.db_password)\ndb_password: mypassword\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-self/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: mypassword\ndb_password: mypassword\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-simple/","title":"resolve-simple","text":"This test is of type template
.
The following service template is used.
tests/query/resolve-simple/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: executeQuery(SELECT node_templates.mysql_database.properties.username)\ndb_password: executeQuery(SELECT node_templates.mysql_database.properties.password)\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-resolve-simple/#query-result","title":"Query Result","text":"The following query result is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username: user\ndb_password: password\nport:\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: user\npassword: password\nrequirements:\n- my_db_connection: dbms\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nrequirements:\n- host: openstack\nopenstack:\ntype: Compute\ncapabilities:\nhost:\nproperties:\nnum_cpus: 1\nmem_size: 2 GB\nos:\nproperties:\ntype: linux\ndistribution: ubuntu\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/","title":"result-structure-complex","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.*{\"Node Name\": name, \"Node Type\": type}\n
"},{"location":"queries4tosca/tests/test-result-structure-complex/#query-result","title":"Query Result","text":"The following query result is expected.
- Node Name: webapp\nNode Type: WebApplication\n- Node Name: tomcat\nNode Type: Tomcat\n- Node Name: mysql_database\nNode Type: Database\n- Node Name: dbms\nNode Type: DBMS\n- Node Name: vm_1\nNode Type: VirtualMachine\n- Node Name: vm_2\nNode Type: VirtualMachine\n- Node Name: openstack\nNode Type: OpenStack\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/","title":"result-structure-simple","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp{name, type}\n
"},{"location":"queries4tosca/tests/test-result-structure-simple/#query-result","title":"Query Result","text":"The following query result is expected.
name: webapp\ntype: WebApplication\n
"},{"location":"queries4tosca/tests/test-shortcut-property/","title":"shortcut-property","text":"This test is of type default
.
The following service template is used.
tests/query/template.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nwebapp:\ntype: WebApplication\nproperties:\ndb_username:\nget_property:\n- mysql_database\n- username\ndb_password:\nget_property:\n- mysql_database\n- password\nport: 3306\nrequirements:\n- database_endpoint: mysql_database\n- host: tomcat\ntomcat:\ntype: Tomcat\nrequirements:\n- host: vm_1\nmysql_database:\ntype: Database\nproperties:\nusername: dbuser\npassword: dbpwd\nrequirements:\n- my_db_connection:\nnode: dbms\nrelationship: my_db_connection\ndbms:\ntype: DBMS\nrequirements:\n- host: vm_2\nvm_1:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nvm_2:\ntype: VirtualMachine\nproperties:\nnum_cpus: 2\nmem_size: 4 GB\nrequirements:\n- host: openstack\nopenstack:\ntype: OpenStack\ngroups:\ndatabase_group:\ntype: tosca.groups.Root\nmembers:\n- mysql_database\n- dbms\npolicies:\n- placement_policy:\ntype: tosca.policies.placement\ntargets:\n- vm_1\n- vm_2\nrelationship_templates:\nmy_db_connection:\ntype: ConnectsTo\ninterfaces:\nConfigure:\npre_configure_source: scripts/wp_db_configure.sh\n
"},{"location":"queries4tosca/tests/test-shortcut-property/#query","title":"Query","text":"The following query is executed.
FROM templates/tests/query/template.yaml SELECT node_templates.webapp.#port\n
"},{"location":"queries4tosca/tests/test-shortcut-property/#query-result","title":"Query Result","text":"The following query result is expected.
3306\n
"},{"location":"scsar/","title":"Secure CSAR","text":"","tags":["Specification"]},{"location":"scsar/#secure-cloud-service-archive-10-release-candidate","title":"Secure Cloud Service Archive 1.0 Release Candidate","text":"This document specifies the concept of a Secure Cloud Service Archive (sCSAR). The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Specification"]},{"location":"scsar/#secure-cloud-service-archive","title":"Secure Cloud Service Archive","text":"Sign the CSAR using RSA
with SHA256
and place the signature under the name of the CSAR appended with .asc
. For example, if the CSAR is named example.csar
, then the signature file is named example.csar.asc
. An RSA key length of 4096 is adviced. The CSAR and signature might be distributed in a ZIP file with the extension .scsar
having the following structure.
<CSAR Name>.csar
The CSAR. <CSAR Name>.csar.asc
The signature of the CSAR (encoded as HEX
) certificate.pem
The certificate (encoded as PEM
) of the signature key used for verifying the signature. certificate-chain.pem
The certificate chain (encoded as PEM
).","tags":["Specification"]},{"location":"scsar/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Specification"]},{"location":"scsar/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Specification"]},{"location":"scsar/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Specification"]},{"location":"sofdcar/profile/","title":"Profile","text":"","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-software-defined-car-sofdcar-profile-10-release-candidate","title":"TOSCA Software-Defined Car (SofDCar) Profile 1.0 Release Candidate","text":"This document specifies the TOSCA Software-Defined Car (SofDCar) profile. This profile includes normative TOSCA types for the domain of software-defined cars. Standardizing such normative TOSCA types improves interoperability. For example, an ECU supplier can model and distribute the deployment and management of their ECUs using these types. Various OEMs can then import provided models and integrate them into their cars. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-sofdcar-core-profile","title":"TOSCA SofDCar Core Profile","text":"The core normative TOSCA type definitions contain high-level type definitions which are mainly derived from the normative TOSCA type definitions of the TOSCA Simple Profile in YAML 1.3. These types mainly concern the following topics.
Considering the modeling communication, the TOSCA modeling approach is application centric meaning that, e.g., a CAN communication is modeled by relationships between the communicating software components. Thus, no (physical) CAN bus is modeled between the ECUs. However, this might not provide all required information. This issue is also discussed in the networking section of the TOSCA specification. In this section, the authors of TOSCA propose to have a TOSCA model for the application and a second separate one for the networking. Therefore, we provide type definitions to model such an automotive TOSCA networking model which includes, e.g., a physical CAN bus.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#artifact-types","title":"Artifact Types","text":"We specify the following normative artifact types. An overview is given in Figure tosca-sofdcar-profile-core1.
Figure C1: TOSCA SofDCar Core Artifact Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsroot","title":"sofdcar.artifacts.Root","text":"The artifact all other artifacts are derived from.
sofdcar.artifacts.Root:\nderived_from: tosca.artifacts.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsdeployment","title":"sofdcar.artifacts.Deployment","text":"The artifact all other deployment artifacts are derived from.
sofdcar.artifacts.Deployment:\nderived_from: tosca.artifacts.Deployment\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarartifactsimplementation","title":"sofdcar.artifacts.Implementation","text":"The artifact all other implementation artifacts are derived from.
sofdcar.artifacts.Implementation:\nderived_from: tosca.artifacts.Implementation\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#capability-types","title":"Capability Types","text":"We specify the following normative capability types. An overview is given in Figure tosca-sofdcar-profile-core2.
Figure C2: TOSCA SofDCar Core Capability Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesroot","title":"sofdcar.capabilities.Root","text":"The capability all other capabilities are derived from.
sofdcar.capabilities.Root:\nderived_from: tosca.capabilities.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitieshostecusoftware","title":"sofdcar.capabilities.Host.ECU.Software","text":"The capability to host an ECU software.
sofdcar.capabilities.Host.ECU.Software:\nderived_from: tosca.capabilities.Container\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesoperatingsystemrealtime","title":"sofdcar.capabilities.OperatingSystem.RealTime","text":"The capability to provide a real-time operating system.
sofdcar.capabilities.OperatingSystem.RealTime:\nderived_from: tosca.capabilities.OperatingSystem\nproperties:\ntime_guarantee:\ntype: integer\nrequired: false\nguarantee_type:\ntype: string\nconstraints:\n- valid_values:\n- hard\n- firm\n- soft\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpoint","title":"sofdcar.capabilities.Endpoint","text":"The capability to provide an endpoint to which a client can connect to.
sofdcar.capabilities.Endpoint:\nderived_from: sofdcar.capabilities.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#data-types","title":"Data Types","text":"We specify the following normative data types. An overview is given in Figure tosca-sofdcar-profile-core3.
Figure C3: TOSCA SofDCar Core Data Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcardataroot","title":"sofdcar.data.Root","text":"The data all other data are derived from.
sofdcar.data.Root:\nderived_from: tosca.datatypes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#group-types","title":"Group Types","text":"We specify the following normative group types. An overview is given in Figure tosca-sofdcar-profile-core4.
Figure C4: TOSCA SofDCar Core Group Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupsroot","title":"sofdcar.groups.Root","text":"The group all other groups are derived from.
sofdcar.groups.Root:\nderived_from: tosca.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupslocation","title":"sofdcar.groups.Location","text":"The geographical location of nodes.
sofdcar.groups.Location:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupsdomain","title":"sofdcar.groups.Domain","text":"The domain in a domain-oriented architecture.
sofdcar.groups.Domain:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcargroupszone","title":"sofdcar.groups.Zone","text":"The zone in a zone-oriented architecture.
sofdcar.groups.Zone:\nderived_from: sofdcar.groups.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#interface-types","title":"Interface Types","text":"We specify the following normative interface types. An overview is given in Figure tosca-sofdcar-profile-core5.
Figure C5: TOSCA SofDCar Core Interface Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesroot","title":"sofdcar.interfaces.Root","text":"The interface all other interfaces are derived from.
sofdcar.interfaces.Root:\nderived_from: tosca.interfaces.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesnodes","title":"sofdcar.interfaces.Nodes","text":"The standard management interface of nodes.
sofdcar.interfaces.Nodes:\nderived_from: tosca.interfaces.node.lifecycle.Standard\noperations:\nbuild:\ndescription: Builds deployment artifacts.\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarinterfacesrelationship","title":"sofdcar.interfaces.Relationship","text":"The standard management interface for relationships.
sofdcar.interfaces.Relationship:\nderived_from: tosca.interfaces.relationship.Configure\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#node-types","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-sofdcar-profile-core6.
Figure C6: TOSCA SofDCar Core Node Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesroot","title":"sofdcar.nodes.Root","text":"The node all other nodes are derived from.
sofdcar.nodes.Root:\nderived_from: tosca.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesvehicle","title":"sofdcar.nodes.Vehicle","text":"The node all other vehicles are derived from.
sofdcar.nodes.Vehicle:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescloud","title":"sofdcar.nodes.Cloud","text":"The node all other clouds are derived from.
sofdcar.nodes.Cloud:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecuhardware","title":"sofdcar.nodes.ECU.Hardware","text":"The hardware of an ECU.
sofdcar.nodes.ECU.Hardware:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.ECU.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecusoftware","title":"sofdcar.nodes.ECU.Software","text":"The software running on an ECU.
sofdcar.nodes.ECU.Software:\nderived_from: sofdcar.nodes.Root\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesecuruntime","title":"sofdcar.nodes.ECU.Runtime","text":"The runtime for an ECU software.
sofdcar.nodes.ECU.Runtime:\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.ECU.Software\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeshpcsoftware","title":"sofdcar.nodes.HPC.Software","text":"The software running on an HPC.
sofdcar.nodes.HPC.Software:\nderived_from: tosca.nodes.SoftwareComponent\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeshpchardware","title":"sofdcar.nodes.HPC.Hardware","text":"The hardware of an HPC.
sofdcar.nodes.HPC.Hardware:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- tosca.nodes.SoftwareComponent\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesactuator","title":"sofdcar.nodes.Actuator","text":"The node all other actuators are derived from.
sofdcar.nodes.Actuator:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesaccelerator","title":"sofdcar.nodes.Accelerator","text":"The node all other accelerators are derived from.
sofdcar.nodes.Accelerator:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesbrake","title":"sofdcar.nodes.Brake","text":"The node all other brakes are derived from.
sofdcar.nodes.Brake:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessteering","title":"sofdcar.nodes.Steering","text":"The node all other steerings are derived from.
sofdcar.nodes.Steering:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslight","title":"sofdcar.nodes.Light","text":"The node all other lights are derived from.
sofdcar.nodes.Light:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescooling","title":"sofdcar.nodes.Cooling","text":"The node all other coolings are derived from.
sofdcar.nodes.Cooling:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesairbag","title":"sofdcar.nodes.Airbag","text":"The node all other airbags are derived from.
sofdcar.nodes.Airbag:\nderived_from: sofdcar.nodes.Actuator\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessensor","title":"sofdcar.nodes.Sensor","text":"The node all other sensors are derived from.
sofdcar.nodes.Sensor:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesradar","title":"sofdcar.nodes.RADAR","text":"The node all other RADAR are derived from.
sofdcar.nodes.RADAR:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescamera","title":"sofdcar.nodes.Camera","text":"The node all other cameras are derived from.
sofdcar.nodes.Camera:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslidar","title":"sofdcar.nodes.LIDAR","text":"The node all other LIDAR are derived from.
sofdcar.nodes.LIDAR:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesultrasonic","title":"sofdcar.nodes.Ultrasonic","text":"The node all other ultrasonics are derived from.
sofdcar.nodes.Ultrasonic:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesmicrophone","title":"sofdcar.nodes.Microphone","text":"The node all other microphones are derived from.
sofdcar.nodes.Microphone:\nderived_from: sofdcar.nodes.Sensor\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeschannel","title":"sofdcar.nodes.Channel","text":"The node all other communication channels are derived from.
sofdcar.nodes.Channel:\nderived_from: sofdcar.nodes.Root\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesbattery","title":"sofdcar.nodes.Battery","text":"The node all other batteries are derived from.
sofdcar.nodes.Battery:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesfeature","title":"sofdcar.nodes.Feature","text":"The node all other features are derived from.
sofdcar.nodes.Feature:\nderived_from: sofdcar.nodes.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#policy-types","title":"Policy Types","text":"We specify the following normative policy types. An overview is given in Figure tosca-sofdcar-profile-core7.
Figure C7: TOSCA SofDCar Core Policy Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesroot","title":"sofdcar.policies.Root","text":"The policy all other policies are derived from.
sofdcar.policies.Root:\nderived_from: tosca.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciessecurity","title":"sofdcar.policies.Security","text":"The policy all other security-related policies are derived from.
sofdcar.policies.Security:\nderived_from: sofdcar.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciessafety","title":"sofdcar.policies.Safety","text":"The policy all other safety-related policies are derived from.
sofdcar.policies.Safety:\nderived_from: sofdcar.policies.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#relationship-types","title":"Relationship Types","text":"We specify the following normative relationship types. An overview is given in Figure tosca-sofdcar-profile-core8.
Figure C8: TOSCA SofDCar Core Relationship Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsroot","title":"sofdcar.relationships.Root","text":"The relationship all other relationships are derived from.
sofdcar.relationships.Root:\nderived_from: tosca.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#tosca-sofdcar-extended-profile","title":"TOSCA SofDCar Extended Profile","text":"The extended normative TOSCA type definitions contain additional high-level type definitions which are derived from the core type definitions. These types mainly concern specific communications, such as CAN or FlexRay, but also ECUs and HPCs, such as Arduino or Raspberry Pi.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#capability-types_1","title":"Capability Types","text":"We specify the following normative capability types. An overview is given in Figure tosca-sofdcar-profile-extended1.
Figure E1: Capability Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointcan","title":"sofdcar.capabilities.Endpoint.CAN","text":"The capability to provide a CAN endpoint.
sofdcar.capabilities.Endpoint.CAN:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointcan-fd","title":"sofdcar.capabilities.Endpoint.CAN-FD","text":"The capability to provide a CAN-FD endpoint.
sofdcar.capabilities.Endpoint.CAN-FD:\nderived_from: sofdcar.capabilities.Endpoint.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointlin","title":"sofdcar.capabilities.Endpoint.LIN","text":"The capability to provide a LIN endpoint.
sofdcar.capabilities.Endpoint.LIN:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointmost","title":"sofdcar.capabilities.Endpoint.MOST","text":"The capability to provide a MOST endpoint.
sofdcar.capabilities.Endpoint.MOST:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointgpio","title":"sofdcar.capabilities.Endpoint.GPIO","text":"The capability to provide a GPIO endpoint.
sofdcar.capabilities.Endpoint.GPIO:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointflexray","title":"sofdcar.capabilities.Endpoint.FlexRay","text":"The capability to provide a FlexRay endpoint.
sofdcar.capabilities.Endpoint.FlexRay:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointethernet","title":"sofdcar.capabilities.Endpoint.Ethernet","text":"The capability to provide an Ethernet endpoint.
sofdcar.capabilities.Endpoint.Ethernet:\nderived_from: sofdcar.capabilities.Endpoint\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointobd","title":"sofdcar.capabilities.Endpoint.OBD","text":"The capability to provide an OBD endpoint.
sofdcar.capabilities.Endpoint.OBD:\nderived_from: sofdcar.capabilities.Endpoint.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarcapabilitiesendpointsomeip","title":"sofdcar.capabilities.Endpoint.SOME/IP","text":"The capability to provide a SOME/IP endpoint.
sofdcar.capabilities.Endpoint.SOME/IP:\nderived_from: sofdcar.capabilities.Endpoint.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#data-types_1","title":"Data Types","text":"We specify the following normative data types. An overview is given in Figure tosca-sofdcar-profile-extended2.
Figure E2: Data Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcardatagpiopin","title":"sofdcar.data.GPIO.Pin","text":"The GPIO pin used, e.g., when connecting using GPIO.
sofdcar.data.GPIO.Pin:\nderived_from: sofdcar.data.Root\nproperties:\npin:\ntype: integer\ndirection:\ntype: string\nconstraints:\n- valid_values:\n- in\n- out\n- in/out\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#node-types_1","title":"Node Types","text":"We specify the following normative node types. An overview is given in Figure tosca-sofdcar-profile-extended3.
Figure E3: Node Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescan","title":"sofdcar.nodes.CAN","text":"The CAN channel all other CAN channels are derived from.
sofdcar.nodes.CAN:\nderived_from: sofdcar.nodes.Channel\nproperties:\nbitrate:\ntype: integer\nrequired: false\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodescan-fd","title":"sofdcar.nodes.CAN-FD","text":"The CAN-FD channel all other CAN-FD channels are derived from.
sofdcar.nodes.CAN-FD:\nderived_from: sofdcar.nodes.CAN\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN-FD\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodeslin","title":"sofdcar.nodes.LIN","text":"The LIN channel all other LIN channels are derived from.
sofdcar.nodes.LIN:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.LIN\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesmost","title":"sofdcar.nodes.MOST","text":"The MOST channel all other MOST channels are derived from.
sofdcar.nodes.MOST:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.MOST\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesgpio","title":"sofdcar.nodes.GPIO","text":"The GIP channel all other GIP channels are derived from.
sofdcar.nodes.GPIO:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.GPIO\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesflexray","title":"sofdcar.nodes.FlexRay","text":"The FlexRay channel all other FlexRay channels are derived from.
sofdcar.nodes.FlexRay:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.FlexRay\noccurrences:\n- 0\n- UNBOUNDED\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesethernet","title":"sofdcar.nodes.Ethernet","text":"The ethernet channel all other ethernet channels are derived from.
sofdcar.nodes.Ethernet:\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.Ethernet\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodessomeip","title":"sofdcar.nodes.SOME/IP","text":"The SOME/IP channel all other SOME/IP channels are derived from.
sofdcar.nodes.SOME/IP:\nderived_from: sofdcar.nodes.Ethernet\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.SOME/IP\noccurrences:\n- 2\n- 2\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodespythonapplication","title":"sofdcar.nodes.Python.Application","text":"Non-normative python application running on an HPC. This application requires a python runtime.
sofdcar.nodes.Python.Application:\nderived_from: sofdcar.nodes.HPC.Software\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodespythonruntime","title":"sofdcar.nodes.Python.Runtime","text":"Non-normative python runtime running on an HPC. This runtime is able to host python applications and requires a host.
sofdcar.nodes.Python.Runtime:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- sofdcar.nodes.Python.Application\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesraspberrypihardware","title":"sofdcar.nodes.RaspberryPi.Hardware","text":"The hardware of a Raspberry Pi serving as an HPC hardware. This Raspberry Pi is able to host HPC software. Furthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.
sofdcar.nodes.RaspberryPi.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types:\n- sofdcar.nodes.HPC.Software\n- sofdcar.nodes.Python.Application\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinosoftware","title":"sofdcar.nodes.Arduino.Software","text":"The software running on an Arduino.
sofdcar.nodes.Arduino.Software:\nderived_from: sofdcar.nodes.ECU.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinosoftwarec","title":"sofdcar.nodes.Arduino.Software.C++","text":"C++ software running on an Arduino.
sofdcar.nodes.Arduino.Software.C++:\nderived_from: sofdcar.nodes.Arduino.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarnodesarduinohardware","title":"sofdcar.nodes.Arduino.Hardware","text":"The hardware of an Arduino serving as ECU hardware. The Arduino is able to host Arduino software.
sofdcar.nodes.Arduino.Hardware:\nderived_from: sofdcar.nodes.ECU.Hardware\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types:\n- sofdcar.nodes.Arduino.Software\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#policy-types_1","title":"Policy Types","text":"We specify the following normative policy types. An overview is given in Figure tosca-sofdcar-profile-extended4.
Figure E4: Policy Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasil","title":"sofdcar.policies.ASIL","text":"The policy that all other ASIL policies are derived from.
sofdcar.policies.ASIL:\nderived_from: sofdcar.policies.Safety\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasila","title":"sofdcar.policies.ASIL.A","text":"The policy that represents the ASIL level A.
sofdcar.policies.ASIL.A:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasilb","title":"sofdcar.policies.ASIL.B","text":"The policy that represents the ASIL level B.
sofdcar.policies.ASIL.B:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasilc","title":"sofdcar.policies.ASIL.C","text":"The policy that represents the ASIL level C.
sofdcar.policies.ASIL.C:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarpoliciesasild","title":"sofdcar.policies.ASIL.D","text":"The policy that represents the ASIL level D.
sofdcar.policies.ASIL.D:\nderived_from: sofdcar.policies.ASIL\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#relationship-types_1","title":"Relationship Types","text":"We specify the following normative relationship types. An overview is given in Figure tosca-sofdcar-profile-extended5.
Figure E5: Relationship Types","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipscan","title":"sofdcar.relationships.CAN","text":"The relationship for CAN connections.
sofdcar.relationships.CAN:\nderived_from: sofdcar.relationships.Root\nproperties:\ninterface:\ntype: string\ndescription: The interface name at the source at which the CAN bus is available.\ndefault: can0\ntarget_interface:\ntype: string\ndescription: The interface name at the target at which the CAN bus is available.\nrequired: false\nbitrate:\ntype: integer\ndescription: The bitrate of the CAN bus.\nrequired: false\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipscan-fd","title":"sofdcar.relationships.CAN-FD","text":"The relationship for CAN-FD connections.
sofdcar.relationships.CAN-FD:\nderived_from: sofdcar.relationships.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipslin","title":"sofdcar.relationships.LIN","text":"The relationship for LIN connections.
sofdcar.relationships.LIN:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsmost","title":"sofdcar.relationships.MOST","text":"The relationships for MOST connections.
sofdcar.relationships.MOST:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsgpio","title":"sofdcar.relationships.GPIO","text":"The relationship for GPIO connections.
sofdcar.relationships.GPIO:\nderived_from: sofdcar.relationships.Root\nproperties:\npins:\ntype: list\nentry_schema:\ntype: sofdcar.data.GPIO.Pin\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsflexray","title":"sofdcar.relationships.FlexRay","text":"The relationship for FlexRay connections.
sofdcar.relationships.FlexRay:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsethernet","title":"sofdcar.relationships.Ethernet","text":"The relationship for Ethernet connections.
sofdcar.relationships.Ethernet:\nderived_from: sofdcar.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipsobd","title":"sofdcar.relationships.OBD","text":"The relationship for OBD connections.
sofdcar.relationships.OBD:\nderived_from: sofdcar.relationships.CAN\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#sofdcarrelationshipssomeip","title":"sofdcar.relationships.SOME/IP","text":"The relationship for SOME/IP connections.
sofdcar.relationships.SOME/IP:\nderived_from: sofdcar.relationships.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-a-tosca-sofdcar-profile","title":"Appendix A \"TOSCA SofDCar Profile\"","text":"This appendix contains the TOSCA SofDCar profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars.\nmetadata:\ntemplate_name: TOSCA SofDCar Profile\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-sofdcar-profile-core.yaml\n- ./tosca-sofdcar-profile-extended.yaml\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-b-tosca-sofdcar-core-profile","title":"Appendix B \"TOSCA SofDCar Core Profile\"","text":"This appendix contains the TOSCA SofDCar Core profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars (Core).\nmetadata:\ntemplate_name: TOSCA SofDCar Profile (Core)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile-core\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nabbreviations: |\n- ASIL: Automotive Safety Integrity Level\n- CAN: Controller Area Network\n- CAN-FD: Controller Area Network Flexible Data-Rate\n- ECU: Electronic Control Unit\n- GPIO: General-Purpose Input/ Output\n- HPC: High Performance Computer\n- LIDAR: Light Detection and Ranging\n- LIN: Local Interconnect Network\n- MOST: Media-Oriented Systems Transport\n- OBD: On-Board Diagnostics\n- RADAR: Radio Detection and Ranging\n- SOME/IP: Scalable Service-Oriented Middleware over IP\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nartifact_types:\nsofdcar.artifacts.Root:\ndescription: The artifact all other artifacts are derived from.\nderived_from: tosca.artifacts.Root\nsofdcar.artifacts.Deployment:\ndescription: The artifact all other deployment artifacts are derived from.\nderived_from: tosca.artifacts.Deployment\nsofdcar.artifacts.Implementation:\ndescription: The artifact all other implementation artifacts are derived from.\nderived_from: tosca.artifacts.Implementation\ncapability_types:\nsofdcar.capabilities.Root:\ndescription: The capability all other capabilities are derived from.\nderived_from: tosca.capabilities.Root\nsofdcar.capabilities.Host.ECU.Software:\ndescription: The capability to host an ECU software.\nderived_from: tosca.capabilities.Container\nsofdcar.capabilities.OperatingSystem.RealTime:\ndescription: The capability to provide a real-time operating system.\nderived_from: tosca.capabilities.OperatingSystem\nproperties:\ntime_guarantee:\ntype: integer\nrequired: false\nguarantee_type:\ntype: string\nconstraints:\n- valid_values:\n- hard\n- firm\n- soft\nsofdcar.capabilities.Endpoint:\ndescription: The capability to provide an endpoint to which a client can connect to.\nderived_from: sofdcar.capabilities.Root\ndata_types:\nsofdcar.data.Root:\ndescription: The data all other data are derived from.\nderived_from: tosca.datatypes.Root\ngroup_types:\nsofdcar.groups.Root:\ndescription: The group all other groups are derived from.\nderived_from: tosca.groups.Root\nsofdcar.groups.Location:\ndescription: The geographical location of nodes.\nderived_from: sofdcar.groups.Root\nsofdcar.groups.Domain:\ndescription: The domain in a domain-oriented architecture.\nderived_from: sofdcar.groups.Root\nsofdcar.groups.Zone:\ndescription: The zone in a zone-oriented architecture.\nderived_from: sofdcar.groups.Root\ninterface_types:\nsofdcar.interfaces.Root:\ndescription: The interface all other interfaces are derived from.\nderived_from: tosca.interfaces.Root\nsofdcar.interfaces.Nodes:\ndescription: The standard management interface of nodes.\nderived_from: tosca.interfaces.node.lifecycle.Standard\noperations:\nbuild:\ndescription: Builds deployment artifacts.\nsofdcar.interfaces.Relationship:\ndescription: The standard management interface for relationships.\nderived_from: tosca.interfaces.relationship.Configure\nnode_types:\nsofdcar.nodes.Root:\ndescription: The node all other nodes are derived from.\nderived_from: tosca.nodes.Root\nsofdcar.nodes.Vehicle:\ndescription: The node all other vehicles are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Cloud:\ndescription: The node all other clouds are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.ECU.Hardware:\ndescription: The hardware of an ECU.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.ECU.Software]\nsofdcar.nodes.ECU.Software:\ndescription: The software running on an ECU.\nderived_from: sofdcar.nodes.Root\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.ECU.Runtime:\ndescription: The runtime for an ECU software.\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.ECU.Software]\nrequirements:\n- host:\ncapability: sofdcar.capabilities.Host.ECU.Software\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.HPC.Software:\ndescription: The software running on an HPC.\nderived_from: tosca.nodes.SoftwareComponent\nsofdcar.nodes.HPC.Hardware:\ndescription: The hardware of an HPC.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [tosca.nodes.SoftwareComponent]\nsofdcar.nodes.Actuator:\ndescription: The node all other actuators are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Accelerator:\ndescription: The node all other accelerators are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Brake:\ndescription: The node all other brakes are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Steering:\ndescription: The node all other steerings are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Light:\ndescription: The node all other lights are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Cooling:\ndescription: The node all other coolings are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Airbag:\ndescription: The node all other airbags are derived from.\nderived_from: sofdcar.nodes.Actuator\nsofdcar.nodes.Sensor:\ndescription: The node all other sensors are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.RADAR:\ndescription: The node all other RADAR are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Camera:\ndescription: The node all other cameras are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.LIDAR:\ndescription: The node all other LIDAR are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Ultrasonic:\ndescription: The node all other ultrasonics are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Microphone:\ndescription: The node all other microphones are derived from.\nderived_from: sofdcar.nodes.Sensor\nsofdcar.nodes.Channel:\ndescription: The node all other communication channels are derived from.\nderived_from: sofdcar.nodes.Root\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.Battery:\ndescription: The node all other batteries are derived from.\nderived_from: sofdcar.nodes.Root\nsofdcar.nodes.Feature:\ndescription: The node all other features are derived from.\nderived_from: sofdcar.nodes.Root\npolicy_types:\nsofdcar.policies.Root:\ndescription: The policy all other policies are derived from.\nderived_from: tosca.policies.Root\nsofdcar.policies.Security:\ndescription: The policy all other security-related policies are derived from.\nderived_from: sofdcar.policies.Root\nsofdcar.policies.Safety:\ndescription: The policy all other safety-related policies are derived from.\nderived_from: sofdcar.policies.Root\nrelationship_types:\nsofdcar.relationships.Root:\ndescription: The relationship all other relationships are derived from.\nderived_from: tosca.relationships.Root\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#appendix-c-tosca-sofdcar-extended-profile","title":"Appendix C \"TOSCA SofDCar Extended Profile\"","text":"This appendix contains the TOSCA SofDCar Extended profile. The profile is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: TOSCA Profile for Software-Defined Cars (Extended).\nmetadata:\ntemplate_name: TOSCA SofDCar Profile (Extended)\ntemplate_author: Miles St\u00f6tzner\ntemplate_contact: miles.stoetzner@iste.uni-stuttgart.de\ntemplate_link: https://vintner.opentosca.org\ntemplate_version: 1.0.0-draft\ntemplate_id: tosca-sofdcar-profile-extended\ntemplate_license: https://www.apache.org/licenses/LICENSE-2.0\nabbreviations: |\n- ASIL: Automotive Safety Integrity Level\n- CAN: Controller Area Network\n- CAN-FD: Controller Area Network Flexible Data-Rate\n- ECU: Electronic Control Unit\n- GPIO: General-Purpose Input/ Output\n- HPC: High Performance Computer\n- LIDAR: Light Detection and Ranging\n- LIN: Local Interconnect Network\n- MOST: Media-Oriented Systems Transport\n- OBD: On-Board Diagnostics\n- RADAR: Radio Detection and Ranging\n- SOME/IP: Scalable Service-Oriented Middleware over IP\nacknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).\nimports:\n- ./tosca-sofdcar-profile-core.yaml\ncapability_types:\nsofdcar.capabilities.Endpoint.CAN:\ndescription: The capability to provide a CAN endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.CAN-FD:\ndescription: The capability to provide a CAN-FD endpoint.\nderived_from: sofdcar.capabilities.Endpoint.CAN\nsofdcar.capabilities.Endpoint.LIN:\ndescription: The capability to provide a LIN endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.MOST:\ndescription: The capability to provide a MOST endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.GPIO:\ndescription: The capability to provide a GPIO endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.FlexRay:\ndescription: The capability to provide a FlexRay endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.Ethernet:\ndescription: The capability to provide an Ethernet endpoint.\nderived_from: sofdcar.capabilities.Endpoint\nsofdcar.capabilities.Endpoint.OBD:\ndescription: The capability to provide an OBD endpoint.\nderived_from: sofdcar.capabilities.Endpoint.CAN\nsofdcar.capabilities.Endpoint.SOME/IP:\ndescription: The capability to provide a SOME/IP endpoint.\nderived_from: sofdcar.capabilities.Endpoint.Ethernet\ndata_types:\nsofdcar.data.GPIO.Pin:\ndescription: The GPIO pin used, e.g., when connecting using GPIO.\nderived_from: sofdcar.data.Root\nproperties:\npin:\ntype: integer\ndirection:\ntype: string\nconstraints:\n- valid_values:\n- in\n- out\n- in/out\nnode_types:\nsofdcar.nodes.CAN:\ndescription: The CAN channel all other CAN channels are derived from.\nderived_from: sofdcar.nodes.Channel\nproperties:\nbitrate:\ntype: integer\nrequired: false\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.CAN-FD:\ndescription: The CAN-FD channel all other CAN-FD channels are derived from.\nderived_from: sofdcar.nodes.CAN\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.CAN-FD\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.LIN:\ndescription: The LIN channel all other LIN channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.LIN\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.MOST:\ndescription: The MOST channel all other MOST channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.MOST\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.GPIO:\ndescription: The GIP channel all other GIP channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.GPIO\noccurrences: [2, 2]\nsofdcar.nodes.FlexRay:\ndescription: The FlexRay channel all other FlexRay channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.FlexRay\noccurrences: [0, UNBOUNDED]\nsofdcar.nodes.Ethernet:\ndescription: The ethernet channel all other ethernet channels are derived from.\nderived_from: sofdcar.nodes.Channel\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.Ethernet\noccurrences: [2, 2]\nsofdcar.nodes.SOME/IP:\ndescription: The SOME/IP channel all other SOME/IP channels are derived from.\nderived_from: sofdcar.nodes.Ethernet\ncapabilities:\nendpoint:\ntype: sofdcar.capabilities.Endpoint.SOME/IP\noccurrences: [2, 2]\nsofdcar.nodes.Python.Application:\ndescription: >\nNon-normative python application running on an HPC.\nThis application requires a python runtime.\nderived_from: sofdcar.nodes.HPC.Software\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.Python.Runtime:\ndescription: >\nNon-normative python runtime running on an HPC.\nThis runtime is able to host python applications and requires a host.\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [sofdcar.nodes.Python.Application]\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nsofdcar.nodes.RaspberryPi.Hardware:\ndescription: >\nThe hardware of a Raspberry Pi serving as an HPC hardware.\nThis Raspberry Pi is able to host HPC software.\nFurthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.\nderived_from: sofdcar.nodes.HPC.Hardware\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvalid_source_types: [sofdcar.nodes.HPC.Software, sofdcar.nodes.Python.Application]\nsofdcar.nodes.Arduino.Software:\ndescription: The software running on an Arduino.\nderived_from: sofdcar.nodes.ECU.Software\nsofdcar.nodes.Arduino.Software.C++:\ndescription: C++ software running on an Arduino.\nderived_from: sofdcar.nodes.Arduino.Software\nsofdcar.nodes.Arduino.Hardware:\ndescription: >\nThe hardware of an Arduino serving as ECU hardware.\nThe Arduino is able to host Arduino software.\nderived_from: sofdcar.nodes.ECU.Hardware\ncapabilities:\nhost:\ntype: sofdcar.capabilities.Host.ECU.Software\nvalid_source_types: [sofdcar.nodes.Arduino.Software]\npolicy_types:\nsofdcar.policies.ASIL:\ndescription: The policy that all other ASIL policies are derived from.\nderived_from: sofdcar.policies.Safety\nsofdcar.policies.ASIL.A:\ndescription: The policy that represents the ASIL level A.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.B:\ndescription: The policy that represents the ASIL level B.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.C:\ndescription: The policy that represents the ASIL level C.\nderived_from: sofdcar.policies.ASIL\nsofdcar.policies.ASIL.D:\ndescription: The policy that represents the ASIL level D.\nderived_from: sofdcar.policies.ASIL\nrelationship_types:\nsofdcar.relationships.CAN:\ndescription: The relationship for CAN connections.\nderived_from: sofdcar.relationships.Root\nproperties:\ninterface:\ntype: string\ndescription: The interface name at the source at which the CAN bus is available.\ndefault: can0\ntarget_interface:\ntype: string\ndescription: The interface name at the target at which the CAN bus is available.\nrequired: false\nbitrate:\ntype: integer\ndescription: The bitrate of the CAN bus.\nrequired: false\nsofdcar.relationships.CAN-FD:\ndescription: The relationship for CAN-FD connections.\nderived_from: sofdcar.relationships.CAN\nsofdcar.relationships.LIN:\ndescription: The relationship for LIN connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.MOST:\ndescription: The relationships for MOST connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.GPIO:\ndescription: The relationship for GPIO connections.\nderived_from: sofdcar.relationships.Root\nproperties:\npins:\ntype: list\nentry_schema:\ntype: sofdcar.data.GPIO.Pin\nsofdcar.relationships.FlexRay:\ndescription: The relationship for FlexRay connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.Ethernet:\ndescription: The relationship for Ethernet connections.\nderived_from: sofdcar.relationships.Root\nsofdcar.relationships.OBD:\ndescription: The relationship for OBD connections.\nderived_from: sofdcar.relationships.CAN\nsofdcar.relationships.SOME/IP:\ndescription: The relationship for SOME/IP connections.\nderived_from: sofdcar.relationships.Ethernet\n
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/profile/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["SofDCar","Normative","Profile","Specification"]},{"location":"sofdcar/guides/location/","title":"Distributed Locations","text":"This document holds an example of two geographically distributed ECUs using the TOSCA SofDCar profile.
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#scenario","title":"Scenario","text":"In this example, there are two ECUs. These two ECUs communicate via CAN which is bridged over the cloud, as shown in Figure 1. Thereby, we model the CAN communication application-centric via a direct relationship between the two software components as well as network-centric via explicitly modeling the CAN busses and their connections to the underlying hardware.
Figure 1: Distributed Locations","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#appendix-a-service-template","title":"Appendix A \"Service Template\"","text":"
This appendix contains the service template of this guide. The service template is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: Example of an architecture distributed across several geographical locations.\nimports:\n- types.yaml\ntopology_template:\nnode_templates:\n###################################################\n#\n# Cloud\n#\n###################################################\ncloud_service:\ntype: example.nodes.Cloud.Service\nrequirements:\n- host: cloud_provider\ncloud_provider:\ntype: example.nodes.Cloud.Provider\n###################################################\n#\n# Location A\n#\n###################################################\na_ecu_software:\ntype: example.nodes.ECU.Software\nrequirements:\n- host: a_ecu_runtime\n- can: a_can_bus\n- connect: b_ecu_software\na_ecu_runtime:\ntype: example.nodes.ECU.Runtime\nrequirements:\n- host: a_ecu_hardware\na_ecu_hardware:\ntype: example.nodes.ECU.Hardware\nrequirements:\n- can: a_can_bus\na_can_bus:\ntype: sofdcar.nodes.CAN\na_can_bridge:\ntype: example.nodes.CAN.Bridge\nrequirements:\n- can: a_can_bus\n- cloud: cloud_service\n###################################################\n#\n# Location B\n#\n###################################################\nb_ecu_software:\ntype: example.nodes.ECU.Software\nrequirements:\n- host: b_ecu_runtime\n- can: b_can_bus\nb_ecu_runtime:\ntype: example.nodes.ECU.Runtime\nrequirements:\n- host: b_ecu_hardware\nb_ecu_hardware:\ntype: example.nodes.ECU.Hardware\nrequirements:\n- can: b_can_bus\nb_can_bus:\ntype: sofdcar.nodes.CAN\nb_can_bridge:\ntype: example.nodes.CAN.Bridge\nrequirements:\n- can: b_can_bus\n- cloud: cloud_service\ngroups:\ncloud:\ntype: sofdcar.groups.Location\nmembers:\n- cloud_service\n- cloud_provider\nlocation_a:\ntype: sofdcar.groups.Location\nmembers:\n- a_ecu_software\n- a_ecu_runtime\n- a_ecu_hardware\n- a_can_bus\n- a_can_bridge\nlocation_b:\ntype: sofdcar.groups.Location\nmembers:\n- b_ecu_software\n- b_ecu_runtime\n- b_ecu_hardware\n- b_can_bus\n- b_can_bridge\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/location/#appendix-b-type-definitions","title":"Appendix B \"Type Definitions\"","text":"This appendix contains the type definitions of this guide. The type definitions are also available as download
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- ../../tosca-sofdcar-profile.yaml\n- ../../tosca-sofdcar-profile-extended.yaml\nnode_types:\nexample.nodes.Cloud.Service:\nderived_from: tosca.nodes.SoftwareComponent\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nexample.nodes.Cloud.Provider:\nderived_from: sofdcar.nodes.Cloud\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nexample.nodes.ECU.Software:\nderived_from: sofdcar.nodes.ECU.Software\ncapabilities:\nconnect:\ntype: sofdcar.capabilities.Endpoint.CAN\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\noccurrences: [0, 1]\n- connect:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\noccurrences: [0, 1]\nexample.nodes.ECU.Runtime:\nderived_from: sofdcar.nodes.ECU.Runtime\nexample.nodes.ECU.Hardware:\nderived_from: sofdcar.nodes.ECU.Hardware\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\nexample.nodes.CAN.Bridge:\nderived_from: sofdcar.nodes.Root\nrequirements:\n- cloud:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/","title":"Zonal Architecture","text":"This document holds an example of a zonal architecture using the TOSCA SofDCar profile. This zonal architecture consists of several zones inside the vehicle in which also cloud services are integrated.
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#scenario","title":"Scenario","text":"In this example, there are two zones which both contain a zone control unit, an actuator, and a sensor, as shown in Figure 1. Communication inside those zones is based on CAN. Furthermore, there is a third zone which contains a vehicle control unit. This vehicle control unit connects the other two zones based on Ethernet. Moreover, this vehicle control unit also connects to some service running in the cloud.
Figure 1: Zonal Architecture","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#appendix-a-service-template","title":"Appendix A \"Service Template\"","text":"
This appendix contains the service template of this guide. The service template is also available as download.
tosca_definitions_version: tosca_simple_yaml_1_3\ndescription: Example of a zonal architecture connected to the cloud.\nimports:\n- types.yaml\ntopology_template:\nnode_templates:\n###################################################\n#\n# Cloud\n#\n###################################################\ncloud_service:\ntype: example.nodes.Cloud.Service\nrequirements:\n- host: cloud_provider\ncloud_provider:\ntype: example.nodes.Cloud.Provider\n###################################################\n#\n# Vehicle Control Unit\n#\n###################################################\nvehicle_control_unit_software:\ntype: example.nodes.VCU.Software\nrequirements:\n- host: vehicle_control_unit_hardware\n- cloud: cloud_service\nvehicle_control_unit_hardware:\ntype: example.nodes.VCU.Hardware\nrequirements:\n- ethernet: zone_a_ethernet\n- ethernet: zone_b_ethernet\n###################################################\n#\n# Zone A\n#\n###################################################\nzone_a_control_unit_software:\ntype: example.nodes.ZCU.Software\nrequirements:\n- host: zone_a_control_unit_hardware\n- vcu: vehicle_control_unit_software\nzone_a_control_unit_hardware:\ntype: example.nodes.ZCU.Hardware\nrequirements:\n- ethernet: zone_a_ethernet\n- can: zone_a_can_bus\nzone_a_ethernet:\ntype: sofdcar.nodes.Ethernet\nzone_a_can_bus:\ntype: sofdcar.nodes.CAN\nzone_a_actuator:\ntype: example.nodes.Actuator\nrequirements:\n- can: zone_a_can_bus\n- zcu: zone_a_control_unit_software\nzone_a_sensor:\ntype: example.nodes.Sensor\nrequirements:\n- can: zone_a_can_bus\n- zcu: zone_a_control_unit_software\n###################################################\n#\n# Zone B\n#\n###################################################\nzone_b_control_unit_software:\ntype: example.nodes.ZCU.Software\nrequirements:\n- host: zone_b_control_unit_hardware\n- vcu: vehicle_control_unit_software\nzone_b_control_unit_hardware:\ntype: example.nodes.ZCU.Hardware\nrequirements:\n- ethernet: zone_b_ethernet\n- can: zone_b_can_bus\nzone_b_ethernet:\ntype: sofdcar.nodes.Ethernet\nzone_b_can_bus:\ntype: sofdcar.nodes.CAN\nzone_b_actuator:\ntype: example.nodes.Actuator\nrequirements:\n- can: zone_b_can_bus\n- zcu: zone_b_control_unit_software\nzone_b_sensor:\ntype: example.nodes.Sensor\nrequirements:\n- can: zone_b_can_bus\n- zcu: zone_b_control_unit_software\ngroups:\ncloud:\ntype: tosca.groups.Root\nmembers:\n- cloud_service\n- cloud_provider\nzone_a:\ntype: sofdcar.groups.Zone\nmembers:\n- zone_a_control_unit_software\n- zone_a_control_unit_hardware\n- zone_a_ethernet\n- zone_a_can_bus\n- zone_a_actuator\n- zone_a_sensor\nzone_b:\ntype: sofdcar.groups.Zone\nmembers:\n- zone_b_control_unit_software\n- zone_b_control_unit_hardware\n- zone_b_ethernet\n- zone_b_can_bus\n- zone_b_actuator\n- zone_b_sensor\nzone_c:\ntype: sofdcar.groups.Zone\nmembers:\n- vehicle_control_unit_software\n- vehicle_control_unit_hardware\n
","tags":["SofDCar","Guide"]},{"location":"sofdcar/guides/zone/#appendix-b-type-definitions","title":"Appendix B \"Type Definitions\"","text":"This appendix contains the type definitions of this guide. The type definitions are also available as download
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- ../../tosca-sofdcar-profile.yaml\n- ../../tosca-sofdcar-profile-extended.yaml\nnode_types:\nexample.nodes.Cloud.Service:\nderived_from: tosca.nodes.SoftwareComponent\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nexample.nodes.Cloud.Provider:\nderived_from: sofdcar.nodes.Cloud\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nexample.nodes.VCU.Software:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nrequirements:\n- cloud:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.VCU.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\nrequirements:\n- ethernet:\ncapability: sofdcar.capabilities.Endpoint.Ethernet\nrelationship: sofdcar.relationships.Ethernet\noccurrences: [0, UNBOUNDED]\nexample.nodes.ZCU.Software:\nderived_from: sofdcar.nodes.HPC.Software\ncapabilities:\nendpoint:\ntype: tosca.capabilities.Endpoint\nrequirements:\n- vcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.ZCU.Hardware:\nderived_from: sofdcar.nodes.HPC.Hardware\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- ethernet:\ncapability: sofdcar.capabilities.Endpoint.Ethernet\nrelationship: sofdcar.relationships.Ethernet\nexample.nodes.Actuator:\nderived_from: sofdcar.nodes.Actuator\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- zcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\nexample.nodes.Sensor:\nderived_from: sofdcar.nodes.Sensor\nrequirements:\n- can:\ncapability: sofdcar.capabilities.Endpoint.CAN\nrelationship: sofdcar.relationships.CAN\n- zcu:\ncapability: tosca.capabilities.Endpoint\nrelationship: tosca.relationships.ConnectsTo\n
","tags":["SofDCar","Guide"]},{"location":"variability4tosca/benchmark/","title":"Benchmark","text":"To benchmark our implementation of a Variability4TOSCA processor, we run several tests. Thereby, a service template is generated and then resolved based on a seed. A seed of value n results in 2n node templates and 2n relationship templates, thus, 4n templates. For example, a seed of 10.000 generates 20.0000 node templates and 20.0000 relationship templates. When variability is resolved, n node templates and n relationship templates are removed. An concrete example is given below.
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#tests-in-memory","title":"Tests In-Memory","text":"The first test suite runs the tests in-memory. Thus, generated and resolved service templates are not read or stored to the filesystem.
Test Seed Templates Median Median per Template 1 10 40 37.918 ms 0.948 ms 2 250 1,000 38.578 ms 0.039 ms 3 500 2,000 71.489 ms 0.036 ms 4 1,000 4,000 136.850 ms 0.034 ms 5 2,500 10,000 334.963 ms 0.033 ms 6 5,000 20,000 669.432 ms 0.033 ms 7 10,000 40,000 1.365 s 0.034 ms","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#tests-with-filesystem","title":"Tests with Filesystem","text":"The second test suite runs the tests with filesystem interaction. Thus, generated and resolved service templates are also read and stored to the filesystem.
Test Seed Templates Median Median per Template 1 10 40 5.992 ms 0.150 ms 2 250 1,000 48.485 ms 0.048 ms 3 500 2,000 94.863 ms 0.047 ms 4 1,000 4,000 182.193 ms 0.046 ms 5 2,500 10,000 463.675 ms 0.046 ms 6 5,000 20,000 955.071 ms 0.048 ms 7 10,000 40,000 1.997 s 0.050 ms","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#file-measurements","title":"File Measurements","text":"The written variable service templates have the following measurements.
Test Seed File Size File Lines 1 10 10 kb 322 2 250 254 kb 7,762 3 500 509 kb 15,512 4 1,000 1.019 mb 31,012 5 2,500 2.578 mb 77,512 6 5,000 5.175 mb 155,012 7 10,000 10.370 mb 310,012","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#computing-resources","title":"Computing Resources","text":"The following computing resources have been used for the benchmark.
Resource Value Date 2024-01-27 OpenTOSCA Vintner e800c672edebf2d7338029680b58016244461736 Operating System Windows 11 Processor Intel Core i7-12700KF Memory 2x Crucial RAM 32GB DDR4 3200MHz CL22 Motherboard ASRock H670 PG Riptide Intel H670 Graphic Card GeForce RTX TM 2060 WINDFORCE OC 6G Disk Samsung 990 Pro NVMe M.2 SSD PCIe 4.0 1TB","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#running-the-benchmark","title":"Running the Benchmark","text":"To run the benchmark on your own, run the following command. For more information see Interface. Feel free to open a merge request, if your benchmarking results are better.
vintner setup benchmark --markdown --io\n
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/benchmark/#service-template-under-test","title":"Service Template Under Test","text":"The following is an example of the expected service template that is under test when the seed is 2.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode: { type: string }\nexpressions:\ncondition_0_present: { equal: [ { variability_input: mode }, present ] }\ncondition_0_removed: { equal: [ { variability_input: mode }, absent ] }\ncondition_1_present: { equal: [ { variability_input: mode }, present ] }\ncondition_1_removed: { equal: [ { variability_input: mode }, absent ] }\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nconditions: { logic_expression: condition_0_present }\nrequirements:\n- relation_present:\nnode: component_1_present\nconditions: { logic_expression: condition_0_present }\nrelationship: relationship_0_present\n- relation_removed:\nnode: component_1_removed\nconditions: { logic_expression: condition_0_removed }\nrelationship: relationship_0_removed\ncomponent_0_removed:\ntype: component_type_0_removed\nconditions: { logic_expression: condition_0_removed }\ncomponent_1_present:\ntype: component_type_1_present\nconditions: { logic_expression: condition_1_present }\nrequirements:\n- relation_present:\nnode: component_0_present\nconditions: { logic_expression: condition_1_present }\nrelationship: relationship_1_present\n- relation_removed:\nnode: component_0_removed\nconditions: { logic_expression: condition_1_removed }\nrelationship: relationship_1_removed\ncomponent_1_removed:\ntype: component_type_1_removed\nconditions: { logic_expression: condition_1_removed }\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_0_removed:\ntype: relationship_type_0_removed\nrelationship_1_present:\ntype: relationship_type_1_present\nrelationship_1_removed:\ntype: relationship_type_1_removed\n
","tags":["Variability4TOSCA"]},{"location":"variability4tosca/dynamic/","title":"Dynamic Deployment Artifacts","text":"","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#variability4tosca-dynamic-deployment-artifacts-10-release-candidate","title":"Variability4TOSCA Dynamic Deployment Artifacts 1.0 Release Candidate","text":"Warning
This specification is experimental.
This document specifies dynamic deployment artifacts which are supposed to be build on-demand based on information in the topology. The intention is to build variants of deployment artifacts which are specific for the application. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#dynamic-build-artifacts","title":"Dynamic Build Artifacts","text":"To build dynamic deployment artifacts a build
management operation is defined for the tosca.interfaces.node.lifecycle.Variability
interface. This management operation can be used in several stages. Artifacts can be build during modeling when packaging the application as CSAR, right before the deployment process or during deployment. The implementation of the build
management operation can start, e.g., a build pipeline and set a reference, such as a Docker Tag as attribute of the respective node template. This reference can then be used by the create
management operation of tosca.interfaces.node.lifecycle.Standard
.
tosca.interfaces.node.lifecycle.Variability\n+ build:\n+ description: Builds a Deployment Artifact\n
A rough idea has been also mentioned in TOSCA Simple Profile in YAML Version 1.3.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/dynamic/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification","Experimental"]},{"location":"variability4tosca/feature-ide/","title":"Feature IDE","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#variability4tosca-feature-ide-integration-10-release-candidate","title":"Variability4TOSCA Feature IDE Integration 1.0 Release Candidate","text":"This document specifies the integration of FeatureIDE into the Variability4TOSCA specification. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#featureide-integration","title":"FeatureIDE Integration","text":"In order to generate only valid service templates, feature models can be used to model dependencies between variability inputs. A feature model of Feature IDE is supposed to be packaged as feature-model.xml
at the root of the CSAR. We describe the mapping between the Extended XML Configuration to variability inputs.
Each feature is mapped to a Boolean variability input. The value is true
if either automatic
or manual
is selected
. Otherwise, the value is false
. Thereby, the feature name is transformed to lowercase and all whitespaces are replaced with an underscore.
<feature automatic=\"selected\" manual=\"selected\" name=\"Feature A\"/>\n
feature_a: true\n
Feature names can be overridden by the value of the attribute __name
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature C\">\n<attribute name=\"__name\" value=\"feature_overridden\"/>\n</feature>\n
feature_overridden: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#attributes","title":"Attributes","text":"Each attribute is mapped to a variability input. The values are parsed by a JSON parser. If parsing throws an error, then the value is treated as a string.
The attribute name is namespaced by their feature, transformed to lowercase and all whitespaces are replaced with an underscore.
FeatureIDE Extended XMLYAML<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature A\">\n<attribute name=\"attr_bool_true\" value=\"true\"/>\n</feature>\n
feature_a_attr_bool_true: true\n
Attribute names can be overridden by the value of the attribute __name_${attribute name}
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature D\">\n<attribute name=\"attr Long\" value=\"1\"/>\n<attribute name=\"__name_attr_long\" value=\"attr_overridden\"/>\n</feature>\n
feature_d_attr_overridden: true\n
The full attribute name (including the feature namespacing) can be overridden by the value of the attribute __full_name_${attribute name}
.
<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature E\">\n<attribute name=\"attr_another_string\" value=\"something else\"/>\n<attribute name=\"__full_name_attr_another_string\" value=\"fully_overridden\"/>\n</feature>\n
fully_overridden: something else\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#example","title":"Example","text":"The following example of a complete FeatureIDE Extended XML Configuration contains examples of the above introduced concepts.
FeatureIDE Extended XMLYAML<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<extendedConfiguration>\n<feature automatic=\"selected\" manual=\"undefined\" name=\"Application\"/>\n<feature automatic=\"selected\" manual=\"selected\" name=\"Feature A\">\n<attribute name=\"attr_bool_true\" value=\"true\"/>\n<attribute name=\"attr_bool_false\" value=\"false\"/>\n<attribute name=\"attr LoNg\" value=\"3\"/>\n<attribute name=\"attr_double\" value=\"2.5\"/>\n<attribute name=\"attr_string\" value=\"hello world\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"undefined\" name=\"Feature B\"/>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature C\">\n<attribute name=\"__name\" value=\"feature_overridden\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature D\">\n<attribute name=\"attr Long\" value=\"1\"/>\n<attribute name=\"__name_attr_long\" value=\"attr_overridden\"/>\n</feature>\n<feature automatic=\"undefined\" manual=\"selected\" name=\"Feature E\">\n<attribute name=\"__name\" value=\"feature_another_overridden\"/>\n<attribute name=\"attr_double\" value=\"1337\"/>\n<attribute name=\"attr_string\" value=\"something\"/>\n<attribute name=\"__name_attr_string\" value=\"attr_also_overridden\"/>\n<attribute name=\"attr_another_string\" value=\"something else\"/>\n<attribute name=\"__full_name_attr_another_string\" value=\"fully_overridden\"/>\n</feature>\n</extendedConfiguration>\n
application: true\nfeature_a: true\nfeature_a_attr_bool_true: true\nfeature_a_attr_bool_false: false\nfeature_a_attr_long: 3\nfeature_a_attr_double: 2.5\nfeature_a_attr_string: 'hello world'\nfeature_b: false\nfeature_overridden: true\nfeature_d: true\nfeature_d_attr_overridden: 1\nfeature_another_overridden: true\nfeature_another_overridden_attr_double: 1337\nfeature_another_overridden_attr_also_overridden: something\nfully_overridden: something else\n
To run the transformation using our reference implementation, run the following command.
vintner template inputs --path path/to/my-inputs.xml --output result.yaml\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/","title":"Testing","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#variability4tosca-testing-10-release-candidate","title":"Variability4TOSCA Testing 1.0 Release Candidate","text":"This document specifies variability tests for the Variability4TOSCA specification to continuously test that the variability is resolved as expected, e.g., during continuous integration pipelines or before importing the CSAR. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#variability-tests","title":"Variability Tests","text":"A CSAR might contain variability tests. Therefore, add the directory /tests
in the root of the CSAR. Each test is defined inside its own directory of /tests
and might contain the following files.
expected.yaml
The expected service template after resolving variability. inputs.yaml
The variability inputs used for resolving variability. test.yaml
The test configuration. Here is an exemplary structure of a CSAR that has one variability test.
<CSAR Name>/\n\u251c\u2500 tests/\n\u2502 \u251c\u2500 <Test Name>/\n\u2502 \u2502 \u251c\u2500 expected.yaml\n\u2502 \u2502 \u251c\u2500 inputs.yaml\n\u2502 \u2502 \u251c\u2500 test.yaml\n\u251c\u2500 service-template.yaml\n
The following configurations can be configured in the test configuration file.
Keyname Mandatory Type Description name false String Display name of the test case (default is the directory name). description false String Description of the test case. presets false String | List(String) Variability presets to use when resolving variability. error false String The expected error that is thrown. template false String Path (relative totest.yaml
) to the variable service template. expected false String Path (relative to test.yaml
) to the expected service template after resolving variability. inputs false String Path (relative to test.yaml
) to the variability inputs. replace false List(Tuple(Find: String, Replace: String)) An optional list of strings to search and replace for in the generated service template. merge false Object An optional object that is merged into the expected service template. There are the following special cases considering test directory names.
.
are ignored.---only
to a test directory to run only this specific test.---disabled
to a test directory to disable a specific test.The following service template contains two conditional nodes. A variability inputs decides which node should be present.
/my-testing-csar/service-template.yamltosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: tosca.nodes.Root\nconditions: {equal: [{variability_input: mode}, one]}\nnode_two:\ntype: tosca.nodes.Root\nconditions: {equal: [{variability_input: mode}, two]}\n
We specify the following test in which we expect that only the first node is present after resolving variability.
/my-testing-csar/my-test/test.yamlname: My Test\ndescriptions: | This tests is a simple example.\nWe expect the following: \n- First node is preserved\n- Second node is removed\n
The following inputs are used.
/my-testing-csar/my-test/inputs.yamlmode: one\n
We expect the following service template.
/my-testing-csar/my-test/expected.yamltosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: tosca.nodes.Root\n
To execute the test using our reference implementation, run the following command.
vintner template test --path path/to/my-testing-csar/\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/guides/artifacts/","title":"Conditional Deployment Artifacts and Conditional Properties","text":"This document holds a detailed step-by-step guide to deploy the enterprise plan of a web shop application to showcase conditional deployment artifacts and conditional properties, as presented in Figure 1. The motivating scenario is a simple shopping application that consists of a shop component and a database. Thereby, we take the role of a SaaS provider which offers different pricing plans to his customers. Furthermore, there are two different deployment artifacts: the community deployment artifact and the enterprise deployment artifact. The community deployment artifact implements the core functionality of the shop component whereas the enterprise deployment artifact additionally implements analytical reporting functionalities.
There is a free community plan that deploys the community deployment artifact along with SQLite on a small virtual machine. In contrast, the business plan is a paid plan that deploys the enterprise deployment artifact which contains analytical reporting functionalities along with MySQL on Google Cloud Platform (GCP). However, to have full access to all analytical reporting functionalities, the enterprise plan is required. An important aspect of the deployment of the shop component is that the correct SQL dialect must be configured.
Figure 1: The different deployment variants.","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#requirements","title":"Requirements","text":"
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure Unfurl as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the template and initialize an instance.
vintner templates import --template artifacts --path examples/unfurl-artifacts\n
Next, we initialize an application instance.
vintner instances init --instance artifacts --template artifacts\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. For example, the MySQL database has a condition assigned that checks if the enterprise deployment artifact is present. An overview is given in Figure 2.
vintner templates inspect --template artifacts\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the enterprise plan. Furthermore, we want to configure the display language of the shop component to be German. We specify this when resolving variability.
vintner instances resolve --instance artifacts --presets enterprise\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the elements required for the enterprise plan. Notably, the enterprise deployment artifacts is present and configured to use the MySQL dialect. An overview is given in Figure 3.
vintner instances inspect --instance artifacts\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#deploy-the-application","title":"Deploy the Application","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to GCP. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take around 15-20 minutes.
vintner instances deploy --instance artifacts --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance artifacts\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#complexity-analysis","title":"Complexity Analysis","text":"The templates for our complexity analysis can be found here.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Artifacts\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#publication","title":"Publication","text":"This guide is part of our research paper published at the main track of the CoopIS 2023. Also, this guide is further extended by our demonstration paper which was published at the demo track at the CoopIS 2023. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/aware/","title":"Hosting-Aware Pruning","text":"This document holds the step-by-step guide to deploy the on-premise deployment variant of a webshop application to showcase the hosting-aware pruning. The webshop application can be deployed in the following deployment variants.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we install Unfurl.
vintner install unfurl\n
Next, we configure Unfurl as the orchestrator that should be used for the deployment.
vintner orchestrators init unfurl\nvintner orchestrators enable --orchestrator unfurl\n
Next, we attest that Vintner can use unfurl.
vintner orchestrators attest --orchestrator unfurl\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#import-the-template","title":"Import the Template","text":"Figure 1: The Variability4TOSCA model. Next, we import the Variability4TOSCA template.
vintner templates import --template aware --path examples/unfurl-aware\n
Then, we initialize an application instance.
vintner instances init --instance aware --template aware\n
We can optionally inspect the Variability4TOSCA model. This model contains all possible elements having conditions assigned. However, due to the hosting-aware pruning, only a handful of condition must be modeled. This is shown in Figure 1.
vintner templates inspect --template aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#resolve-variability","title":"Resolve Variability","text":"Figure 2: The derived TOSCA model. We want to deploy the on-premise variant of the webshop application on Kubernetes using OpenStack. We specify this when resolving variability as follows.
vintner instances resolve --instance aware --presets local\n
You can optionally inspect the generated TOSCA-compliant model. This template contains only the elements required for the on-premise variant, e.g., Kubernetes. This is shown in Figure 2.
vintner instances inspect --instance aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#deploy-the-application","title":"Deploy the Application","text":"Finally, we can deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to OpenStack. These inputs are specified in topology_template.inputs
of the TOSCA-compliant model. The following inputs must be defined.
os_compute_network: <OS_COMPUTE_NETWORK>\nos_compute_key_name: <OS_COMPUTE_KEY_NAME>\nos_compute_ssh_user: <OS_COMPUTE_SSH_USER>\nos_compute_ssh_key_file: <OS_COMPUTE_SSH_KEY_FILE>\nos_region_name: <OS_REGION_NAME>\nos_auth_type: <OS_AUTH_TYPE>\nos_auth_url: <OS_AUTH_URL>\nos_identity_api_version: <OS_IDENTITY_API_VERSION>\nos_interface: <OS_INTERFACE>\nos_application_credential_id: <OS_APPLICATION_CREDENTIAL_ID>\nos_application_credential_secret: <OS_APPLICATION_CREDENTIAL_SECRET>\n# Also required. Just fill them with dummy values.\ndatabase_password: <DATABASE_PASSWORD>\ngcp_region: <GCP_REGION>\ngcp_service_account_file: <GCP_SERVICE_ACCOUNT_FILE>\ngcp_project: <GCP_PROJECT>\ngcp_auto_scaling: <GCP_AUTO_SCALING>\n
Next, we start the deployment. The deployment will take around 5-10 minutes.
vintner instances deploy --instance aware --inputs ${INPUTS_PATH}\n
Do not abort the deployment manually. Not even in case of errors. Once the deployment command exits, the deployment can be retried as follows.
vintner instances continue --instance aware\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#test-the-application","title":"Test the Application","text":"Next, we can test that the application is correctly working. Therefore, find out the hostname of the provisioned virtual machine.
curl --fail-with-body http://${HOSTNAME_OF_VM}\n
If no hostname has been assigned, then use the IPv4 address.
curl --fail-with-body http://[${IPv4_ADDRESS_OF_VM}]\n
This should return the following.
{\n\"MESSAGE\": \"Successfully executed query\",\n\"QUERY\": \"SELECT 1 + 1;\",\n\"DB_DIALECT\": \"mysql\",\n\"DB_NAME\": \"shop\",\n\"DB_ADDRESS\": \"mysql\",\n\"DB_USERNAME\": \"root\",\n\"DB_PASSWORD\": \"5e88\"\n}\n
We can observe the following.
MESSAGE
, the query has been successfulDB_ADDRESS
, the MySQL instance running in Kubernetes has been usedThus, we conclude that the application has been deployed as desired.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance aware\n
We can also optionally remove the instance or cleanup the filesystem. Note, cleaning up the filesystem removes any vintner data including, e.g., all imported templates and created instances.
vintner instances delete --instance aware\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Aware\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#publication","title":"Publication","text":"This guide is part of our paper published at the CLOSER 2024. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/modes/","title":"Pruning Modes","text":"This document holds a detailed step-by-step guide to deploy the medium-sized static deployment variant of a webshop application to showcase the Consistent-Loose Pruning Mode. The webshop application can be deployed in the following deployment variants.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, install xOpera.
vintner setup install --xopera\n
Next, we configure xOpera as the orchestrator that should be used for the deployment.
vintner orchestrators init xopera --no-venv\nvintner orchestrators enable --orchestrator xopera\nvintner orchestrators attest --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#import-the-template","title":"Import the Template","text":"Figure 1: The Variability4TOSCA model of our webshop. First, we import the Variability4TOSCA template.
vintner templates import --template pruning-mode --path examples/xopera-pruning-consistent-loose\n
Then, we initialize an application instance.
vintner instances init --instance pruning-mode --template pruning-mode\n
We can optionally inspect the Variability4TOSCA model. This model contains all possible elements having conditions assigned. However, due to pruning, only a handful of condition must be modeled, e.g., the condition checking if a medium or large virtual machine is required. This is shown in Figure 1.
vintner templates inspect --template pruning-mode\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#resolve-variability","title":"Resolve Variability","text":"Figure 2: The medium-sized static deployment variant of the webshop. We want to deploy the medium-sized static variant of the webshop application using GCP. We specify this when resolving variability as follows.
vintner instances resolve --instance pruning-mode --presets static\n
You can optionally inspect the generated TOSCA-compliant model. This template contains only the elements required for the elastic variant, e.g., the MySQL database. This is shown in Figure 2.
vintner instances inspect --instance pruning-mode\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#deploy-the-application","title":"Deploy the Application","text":"Finally, we can deploy the elastic variant. Therefore, we need to provide deployment inputs, e.g., credentials to OpenStack. These inputs are specified in topology_template.inputs
of the TOSCA-compliant model. The following inputs must be defined.
os_compute_network: <OS_COMPUTE_NETWORK>\nos_compute_security_groups: <OS_COMPUTE_SECURITY_GROUPS>\nos_compute_key_name: <OS_COMPUTE_KEY_NAME>\nos_compute_ssh_user: <OS_COMPUTE_SSH_USER>\nos_compute_ssh_key_file: <OS_COMPUTE_SSH_KEY_FILE>\nos_region_name: <OS_REGION_NAME>\nos_auth_type: <OS_AUTH_TYPE>\nos_auth_url: <OS_AUTH_URL>\nos_identity_api_version: <OS_IDENTITY_API_VERSION>\nos_interface: <OS_INTERFACE>\nos_application_credential_id: <OS_APPLICATION_CREDENTIAL_ID>\nos_application_credential_secret: <OS_APPLICATION_CREDENTIAL_SECRET>\n# Also required. Just fill them with dummy values.\ndatabase_password: <DATABASE_PASSWORD>\ngcp_region: <GCP_REGION>\ngcp_service_account_file: <GCP_SERVICE_ACCOUNT_FILE>\ngcp_project: <GCP_PROJECT>\ngcp_auto_scaling: <GCP_AUTO_SCALING>\n
Next, start the deployment. The deployment will take around 5 minutes.
vintner instances deploy --instance pruning-mode --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#test-the-application","title":"Test the Application","text":"Next, we can test that the application is correctly working. Therefore, find out the hostname of the provisioned virtual machine.
curl --fail-with-body http://${HOSTNAME_OF_VM}:3000\n
If no hostname has been assigned, then use the IPv4 address.
curl --fail-with-body http://[${IPv4_ADDRESS_OF_VM}]:3000\n
This should return the following.
{\n\"MESSAGE\": \"Successfully executed query\",\n\"QUERY\": \"SELECT 1 + 1;\",\n\"DB_DIALECT\": \"sqlite\",\n\"DB_NAME\": \"shop\",\n\"DB_ADDRESS\": \"/var/lib/sqlite-databases/shop.db\",\n\"DB_USERNAME\": \"root\",\n\"DB_PASSWORD\": \"5e88\"\n}\n
We can observe the following.
MESSAGE
, the query has been successfulDB_DIALECT
, the SQLite has been used as dialectDB_ADDRESS
, a local SQLite database has been usedThus, we conclude that the application has been deployed as desired.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance pruning-mode\n
We can also optionally remove the instance or cleanup the filesystem. Note, cleaning up the filesystem removes any vintner data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning-mode\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"xOpera Pruning Mode\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#publication","title":"Publication","text":"This guide is part of our paper published at the CLOSER 2024. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/pipes-and-filters/","title":"Pipes and Filters Application","text":"Warning
This document presents experimental features and is still in an early stage.
In the following, we provide a detailed step-by-step guide to deploy the Raspberry Pi variant of the pipes-and-filters application to showcase conditional deployment artifacts and properties. The application can be either installed on a Raspberry Pi or on a virtual machine. Based on the underlying host, either an arm64 or x64 binary must be used. The application is also differently configured due to the different availability of RAM.
Figure 1: Deployment Variant using Raspberry Pi
Figure 2: Deployment Variant using Virtual Machine","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#environment","title":"Environment","text":"
We expect that the xOpera CLI is installed on a Linux machine and that a Raspberry Pi 3 Model B+ is available.
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#preparation","title":"Preparation","text":"First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we need to configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#deployment","title":"Deployment","text":"Deploy the Raspberry Pi variant of the pipes-and-filters application. Therefore, import the template, create an instance, resolve the variability and finally deploy the application.
# Add variable service template\nvintner templates import --template pipes-and-filters --path examples/xopera-pipes-and-filters\n\n# Add instance\nvintner instances init --instance pipes-and-filters --template pipes-and-filters\n\n# Resolve variability\nvintner instances resolve --instance pipes-and-filters --presets raspberry\n\n# (optional) Inspect service template\nvintner instances inspect --instance pipes-and-filters\n\n# Deploy instance\nvintner instances deploy --instance pipes-and-filters --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pipes-and-filters/#undeployment","title":"Undeployment","text":"Cleanup the deployment. Therefore, undeploy the instance and cleanup the filesystem.
# Undeploy instance\nvintner instances undeploy --instance pipes-and-filters\n\n# Cleanup\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","xOpera","Experimental"]},{"location":"variability4tosca/guides/pruning/","title":"Pruning Elements","text":"Figure 1: The different deployment variants. This document holds a detailed step-by-step guide to deploy the elastic deployment variant of a web shop application to showcase the reduced modeling effort when pruning elements. The application can be deployed in the following deployment variants, see Figure 1.
We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template pruning --path examples/xopera-pruning\n
Next, we initialize an application instance.
vintner instances init --instance pruning --template pruning\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. However, due to pruning, only a handful of condition must be modeled, e.g., the condition checking if a medium or large virtual machine is required. An overview is given in Figure 2.
vintner templates inspect --template pruning\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the elastic variant. We specify this when resolving variability.
vintner instances resolve --instance pruning --presets elastic\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the elements required for the elastic variant, e.g., the MySQL database. An overview is given in Figure 3.
vintner instances inspect --instance pruning\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#deploy-the-application","title":"Deploy the Application","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs, e.g., credentials to GCP. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take around 15-20 minutes.
vintner instances deploy --instance pruning --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#undeploy-the-application","title":"Undeploy the Application","text":"Afterward, we undeploy the application.
vintner instances undeploy --instance pruning\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#complexity-analysis","title":"Complexity Analysis","text":"The templates for our complexity analysis can be found here.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Artifacts\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#publication","title":"Publication","text":"This guide is part of our paper published at the UCC 2023. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/motivation/","title":"Motivation","text":"Figure 1: The different deployment variants.This document holds a detailed step-by-step guide to deploy the development variant of the motivating scenario. The motivating scenario is a simple composite application that consists of a web component and a database, as presented in Figure 1.
This application can be deployed in different variants. During development the application should be deployed on a single virtual machine. However, for the productive operation, an elastic deployment is required and, therefore, the application is deployed on Google Cloud Platform (GCP).
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#requirements","title":"Requirements","text":"We need to fulfill the following requirements to follow this step-by-step guide.
First, we install OpenTOSCA Vintner. For more information see Installation.
curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash -\n
Next, we configure xOpera as the orchestrator that should be used for the deployment. For more information see Orchestrators.
vintner orchestrators init xopera\nvintner orchestrators enable --orchestrator xopera\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#import-the-template","title":"Import the Template","text":"Figure 2: The Variability4TOSCA template. First, we clone the repository.
git clone https://github.com/OpenTOSCA/opentosca-vintner.git\ncd opentosca-vintner\ngit lfs install\ngit lfs pull\n./task install\n./task tasks:build\n./task examples:pull:link\n
Next, we import the Variability4TOSCA template.
vintner templates import --template motivation --path examples/motivation\n
Next, we initialize an application instance.
vintner instances init --instance motivation --template motivation\n
We can optionally inspect the Variability4TOSCA template. This template contains all possible elements having conditions assigned. For example, the virtual machine hosted on OpenStack has a condition assigned that checks if the development variant has been chosen. An overview is given in Figure 2.
vintner templates inspect --template motivation\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#resolve-variability","title":"Resolve Variability","text":"Figure 3: The deployment variant. We intend to deploy the development variant. Therefore, we need to resolve the variability by providing respective variability inputs. In our case, we use already predefined variability inputs by using a variability preset.
vintner instances resolve --instance motivation --presets dev\n
We can optionally inspect the generated TOSCA-compliant template. This template contains only the nodes required for the development variant. An overview is given in Figure 3.
vintner instances inspect --instance motivation\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#deployment","title":"Deployment","text":"Finally, we deploy the application. Therefore, we need to provide deployment inputs which contain, e.g., credentials to OpenStack. Possible deployment inputs are specified in topology_template.inputs
of the TOSCA-compliant template. The deployment will take some minutes.
vintner instances deploy --instance motivation --inputs ${INPUTS_PATH}\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#undeployment","title":"Undeployment","text":"Afterward, we can undeploy the application.
vintner instances undeploy --instance motivation\n
Optionally, we can remove the instance and cleanup the filesystem. Cleaning up the filesystem removes any data including, e.g., all imported templates and created instances.
vintner instances delete --instance pruning\nvintner setup clean --force\n
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#logs","title":"Logs","text":"This deployment is also executed in our integration pipeline, which is executed once a week. The logs of the corresponding GitHub action can be accessed here. Relevant jobs start with \"Unfurl Motivation\" and \"xOpera Motivation\". Note, a GitHub account is required to access these logs. The raw logs are available without requiring an GitHub account.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#zenodo","title":"Zenodo","text":"The assets of this guide can be also found on Zenodo.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#publication","title":"Publication","text":"This guide is part of our paper published at the Algorithms 2022. Also check our other publications.
","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/rules/","title":"Technology Rules","text":"","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technology-rules-specification-10-release-candidate","title":"Deployment Technology Rules Specification 1.0 Release Candidate","text":"Quick Tip #1
Elements in graphs can be clicked to open their type definition!
Quick Tip #2
You can query technology rules for your deployment scenario using vintner utils scenarios
!
This document specifies the deployment technology rules. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technologies","title":"Deployment Technologies","text":"Technology rules are defined in the context of the following deployment technologies.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#ansible","title":"Ansible","text":"Ansible is an automation tool primarily used for configuration management, application deployment, and task automation. It allows system administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#terraform","title":"Terraform","text":"Terraform is an infrastructure as code (IaC) tool that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL), Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#kubernetes","title":"Kubernetes","text":"Kubernetes is a system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#docker-compose","title":"Docker Compose","text":"Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It allows the management of services, networks, and volumes, in a declarative manner. Compose is particularly suited for single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem. Find out more.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#derivation-rules","title":"Derivation Rules","text":"We use the following derivation rules to assess deployment qualities.
software.application
vs service.application
.The following scenarios deploy a node template of node type docker.engine with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type docker.engine is deployed. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(docker.engine)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type docker.engine is deployed. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(docker.engine)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-gcpservice","title":"Component \"gcp.service\"","text":"The following scenarios deploy a node template of node type gcp.service with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_1","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type gcp.service is deployed. The scenario does not require a specific hosting.
component(gcp.service)
Ansible (Quality: 1)
Ansible provides a declarative module
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-ingress","title":"Component \"ingress\"","text":"The following scenarios deploy a node template of node type ingress with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_2","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(ingress)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_1","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(ingress)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type ingress is deployed. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(ingress)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-mysqldatabase","title":"Component \"mysql.database\"","text":"The following scenarios deploy a node template of node type mysql.database with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_3","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type local.machine.
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_2","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type remote.machine.
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_1","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type gcp.cloudsql.
component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost
Ansible (Quality: 0.5)
Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type kubernetes.cluster.
component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Kubernetes (Quality: 0)
Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.
Terraform (Quality: 0)
Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type local.machine.
component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type mysql.database is deployed. The node template is hosted on the node template \"host 1\" of node type mysql.dbms, which is hosted on the node template \"host 2\" of node type remote.machine.
component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-mysqldbms","title":"Component \"mysql.dbms\"","text":"The following scenarios deploy a node template of node type mysql.dbms with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_4","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_3","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_2","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type gcp.cloudsql.
component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_1","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_1","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type local.machine.
component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_1","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type mysql.dbms is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type dbms.image. The node template is hosted on the node template \"host 1\" of node type remote.machine.
component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-objectstorage","title":"Component \"object.storage\"","text":"The following scenarios deploy a node template of node type object.storage with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_5","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type gcp.cloudstorage.
component(object.storage)host 1(gcp.cloudstorage)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_4","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type local.machine.
component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_3","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type docker.engine, which is hosted on the node template \"host 3\" of node type remote.machine.
component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Docker Compose (Quality: 0)
One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.
Terraform (Quality: 0.5)
Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_2","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type object.storage is deployed. The node template is hosted on the node template \"host 1\" of node type minio.server, which is hosted on the node template \"host 2\" of node type kubernetes.cluster.
component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Kubernetes (Quality: 0)
Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.
Terraform (Quality: 0)
Ansible is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-redisserver","title":"Component \"redis.server\"","text":"The following scenarios deploy a node template of node type redis.server with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_6","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_5","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_4","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type gcp.memorystore.
component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_3","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type redis.server is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type cache.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-serviceapplication","title":"Component \"service.application\"","text":"The following scenarios deploy a node template of node type service.application with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_7","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_6","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type docker.engine, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
Docker Compose is more specialized.
Docker Compose (Quality: 1)
Docker is the underlying technology.
Terraform (Quality: 0.5)
Docker Compose is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_5","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type gcp.cloudrun.
component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host
Ansible (Quality: 0)
Custom module with imperative parts, while Terraform provides a declarative module.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_4","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type docker.image. The node template is hosted on the node template \"host 1\" of node type kubernetes.cluster.
component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host
Ansible (Quality: 0.5)
Kubernetes is more specialized.
Kubernetes (Quality: 1)
Kubernetes is the underlying technology.
Terraform (Quality: 0.5)
Kubernetes is more specialized.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_2","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_2","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-7","title":"Scenario #7","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-8","title":"Scenario #8","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible. Special integration for systemd.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-9","title":"Scenario #9","text":"In this scenario, the node template \"component\" of node type service.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on the node template \"host 1\" of node type gcp.appengine.
component(service.application)artifact(zip.archive)host 1(gcp.appengine)host
Ansible (Quality: 0)
Custom module with imperative parts, while Terraform provides a declarative module.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-softwareapplication","title":"Component \"software.application\"","text":"The following scenarios deploy a node template of node type software.application with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_8","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type apt.package. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(apt.package)...host 2(local.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-2_7","title":"Scenario #2","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type apt.package. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost
Ansible (Quality: 1)
Primary use case due to the specialization of Ansible.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-3_6","title":"Scenario #3","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-4_5","title":"Scenario #4","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type tar.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\".
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-5_3","title":"Scenario #5","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type local.machine.
component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-6_3","title":"Scenario #6","text":"In this scenario, the node template \"component\" of node type software.application is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type zip.archive. The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template \"host 2\" of node type remote.machine.
component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost
Ansible (Quality: 0.5)
While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.
Terraform (Quality: 0)
Ansible is more specialized. Also using provisioners is a \"last resort\".
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-virtualmachine","title":"Component \"virtual.machine\"","text":"The following scenarios deploy a node template of node type virtual.machine with various hosting stacks, artifacts, deployment technologies, and qualities.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#scenario-1_9","title":"Scenario #1","text":"In this scenario, the node template \"component\" of node type virtual.machine is deployed. This node template is implemented by its deployment artifact \"artifact\" of artifact type machine.image. The node template is hosted on the node template \"host 1\" of node type openstack.provider.
component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host
Ansible (Quality: 0.5)
Terraform is more specialized.
Terraform (Quality: 1)
Terraform provides a declarative module.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#appendix-a-rules","title":"Appendix A \"Rules\"","text":"This appendix contains the deployment technology rules.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-1","title":"Rule #1","text":"Attribute Value Identifier docker.engine::ansible@local.machine Component docker.engine Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks Graph component(docker.engine)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-2","title":"Rule #2","text":"Attribute Value Identifier docker.engine::terraform@local.machine Component docker.engine Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local-exec\" provider Graph component(docker.engine)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-3","title":"Rule #3","text":"Attribute Value Identifier docker.engine::ansible@remote.machine Component docker.engine Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks Graph component(docker.engine)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-4","title":"Rule #4","text":"Attribute Value Identifier docker.engine::terraform@remote.machine Component docker.engine Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"remote-exec\" provider Graph component(docker.engine)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-5","title":"Rule #5","text":"Attribute Value Identifier gcp.service::ansible Component gcp.service Technology ansible Quality 1 Reason Ansible provides a declarative module Details \"google.cloud.gcp_serviceusage_service\" task Graph component(gcp.service)","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-6","title":"Rule #6","text":"Attribute Value Identifier gcp.service::terraform Component gcp.service Technology terraform Quality 1 Reason Terraform provides a declarative module. Details \"google_project_service\" resource Graph component(gcp.service)","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-7","title":"Rule #7","text":"Attribute Value Identifier ingress::ansible@kubernetes.cluster Component ingress Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" task Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-8","title":"Rule #8","text":"Attribute Value Identifier ingress::kubernetes@kubernetes.cluster Component ingress Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-9","title":"Rule #9","text":"Attribute Value Identifier ingress::terraform@kubernetes.cluster Component ingress Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_service_v1\" resource Graph component(ingress)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-10","title":"Rule #10","text":"Attribute Value Identifier ingress::ansible@local.machine Component ingress Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks Graph component(ingress)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-11","title":"Rule #11","text":"Attribute Value Identifier ingress::terraform@local.machine Component ingress Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner Graph component(ingress)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-12","title":"Rule #12","text":"Attribute Value Identifier ingress::ansible@remote.machine Component ingress Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks Graph component(ingress)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-13","title":"Rule #13","text":"Attribute Value Identifier ingress::terraform@remote.machine Component ingress Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner Graph component(ingress)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-14","title":"Rule #14","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->docker.engine->local.machine Component mysql.database Technology ansible Hosting mysql.dbms -> docker.engine -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-15","title":"Rule #15","text":"Attribute Value Identifier mysql.database::compose@mysql.dbms->docker.engine->local.machine Component mysql.database Technology compose Hosting mysql.dbms -> docker.engine -> local.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-16","title":"Rule #16","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->docker.engine->local.machine Component mysql.database Technology terraform Hosting mysql.dbms -> docker.engine -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-17","title":"Rule #17","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology ansible Hosting mysql.dbms -> docker.engine -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-18","title":"Rule #18","text":"Attribute Value Identifier mysql.database::compose@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology compose Hosting mysql.dbms -> docker.engine -> remote.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-19","title":"Rule #19","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->docker.engine->remote.machine Component mysql.database Technology terraform Hosting mysql.dbms -> docker.engine -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-20","title":"Rule #20","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->gcp.cloudsql Component mysql.database Technology ansible Hosting mysql.dbms -> gcp.cloudsql Quality 0.5 Reason Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-21","title":"Rule #21","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->gcp.cloudsql Component mysql.database Technology terraform Hosting mysql.dbms -> gcp.cloudsql Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-22","title":"Rule #22","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->kubernetes.cluster Component mysql.database Technology ansible Hosting mysql.dbms -> kubernetes.cluster Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-23","title":"Rule #23","text":"Attribute Value Identifier mysql.database::kubernetes@mysql.dbms->kubernetes.cluster Component mysql.database Technology kubernetes Hosting mysql.dbms -> kubernetes.cluster Quality 0 Reason Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-24","title":"Rule #24","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->kubernetes.cluster Component mysql.database Technology terraform Hosting mysql.dbms -> kubernetes.cluster Quality 0 Reason Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-25","title":"Rule #25","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->local.machine Component mysql.database Technology ansible Hosting mysql.dbms -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-26","title":"Rule #26","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->local.machine Component mysql.database Technology terraform Hosting mysql.dbms -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-27","title":"Rule #27","text":"Attribute Value Identifier mysql.database::ansible@mysql.dbms->remote.machine Component mysql.database Technology ansible Hosting mysql.dbms -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-28","title":"Rule #28","text":"Attribute Value Identifier mysql.database::terraform@mysql.dbms->remote.machine Component mysql.database Technology terraform Hosting mysql.dbms -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-29","title":"Rule #29","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized Details \"community.docker.docker_container\" task Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-30","title":"Rule #30","text":"Attribute Value Identifier mysql.dbms#dbms.image::compose@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker-compose manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-31","title":"Rule #31","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@docker.engine->local.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-32","title":"Rule #32","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized Details \"community.docker.docker_container\" task Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-33","title":"Rule #33","text":"Attribute Value Identifier mysql.dbms#dbms.image::compose@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker-compose manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-34","title":"Rule #34","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@docker.engine->remote.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-35","title":"Rule #35","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@gcp.cloudsql Component mysql.dbms Artifact dbms.image Technology ansible Hosting gcp.cloudsql Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"google.cloud.gcp_sql_instance\" and \"google.cloud.gcp_sql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-36","title":"Rule #36","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@gcp.cloudsql Component mysql.dbms Artifact dbms.image Technology terraform Hosting gcp.cloudsql Quality 1 Reason Terraform provides a declarative module. Details \"google_sql_database_instance\" and \"google_sql_user\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-37","title":"Rule #37","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-38","title":"Rule #38","text":"Attribute Value Identifier mysql.dbms#dbms.image::kubernetes@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-39","title":"Rule #39","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@kubernetes.cluster Component mysql.dbms Artifact dbms.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources Graph component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-40","title":"Rule #40","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@local.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-41","title":"Rule #41","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@local.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner Graph component(mysql.dbms)artifact(dbms.image)host 1(local.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-42","title":"Rule #42","text":"Attribute Value Identifier mysql.dbms#dbms.image::ansible@remote.machine Component mysql.dbms Artifact dbms.image Technology ansible Hosting remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks Graph component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-43","title":"Rule #43","text":"Attribute Value Identifier mysql.dbms#dbms.image::terraform@remote.machine Component mysql.dbms Artifact dbms.image Technology terraform Hosting remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner Graph component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-44","title":"Rule #44","text":"Attribute Value Identifier object.storage::ansible@gcp.cloudstorage Component object.storage Technology ansible Hosting gcp.cloudstorage Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(gcp.cloudstorage)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-45","title":"Rule #45","text":"Attribute Value Identifier object.storage::terraform@gcp.cloudstorage Component object.storage Technology terraform Hosting gcp.cloudstorage Quality 1 Reason Terraform provides a declarative module. Details Graph component(object.storage)host 1(gcp.cloudstorage)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-46","title":"Rule #46","text":"Attribute Value Identifier object.storage::ansible@minio.server->docker.engine->local.machine Component object.storage Technology ansible Hosting minio.server -> docker.engine -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-47","title":"Rule #47","text":"Attribute Value Identifier object.storage::compose@minio.server->docker.engine->local.machine Component object.storage Technology compose Hosting minio.server -> docker.engine -> local.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-48","title":"Rule #48","text":"Attribute Value Identifier object.storage::terraform@minio.server->docker.engine->local.machine Component object.storage Technology terraform Hosting minio.server -> docker.engine -> local.machine Quality 1 Reason Terraform provides a declarative module. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(local.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-49","title":"Rule #49","text":"Attribute Value Identifier object.storage::ansible@minio.server->docker.engine->remote.machine Component object.storage Technology ansible Hosting minio.server -> docker.engine -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-50","title":"Rule #50","text":"Attribute Value Identifier object.storage::compose@minio.server->docker.engine->remote.machine Component object.storage Technology compose Hosting minio.server -> docker.engine -> remote.machine Quality 0 Reason One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-51","title":"Rule #51","text":"Attribute Value Identifier object.storage::terraform@minio.server->docker.engine->remote.machine Component object.storage Technology terraform Hosting minio.server -> docker.engine -> remote.machine Quality 0.5 Reason Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. Details Graph component(object.storage)host 1(minio.server)host 2(docker.engine)host 3(remote.machine)hosthosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-52","title":"Rule #52","text":"Attribute Value Identifier object.storage::ansible@minio.server->kubernetes.cluster Component object.storage Technology ansible Hosting minio.server -> kubernetes.cluster Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-53","title":"Rule #53","text":"Attribute Value Identifier object.storage::kubernetes@minio.server->kubernetes.cluster Component object.storage Technology kubernetes Hosting minio.server -> kubernetes.cluster Quality 0 Reason Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-54","title":"Rule #54","text":"Attribute Value Identifier object.storage::terraform@minio.server->kubernetes.cluster Component object.storage Technology terraform Hosting minio.server -> kubernetes.cluster Quality 0 Reason Ansible is more specialized. Details Graph component(object.storage)host 1(minio.server)host 2(kubernetes.cluster)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-55","title":"Rule #55","text":"Attribute Value Identifier redis.server#cache.image::ansible@docker.engine->local.machine Component redis.server Artifact cache.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-56","title":"Rule #56","text":"Attribute Value Identifier redis.server#cache.image::compose@docker.engine->local.machine Component redis.server Artifact cache.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-57","title":"Rule #57","text":"Attribute Value Identifier redis.server#cache.image::terraform@docker.engine->local.machine Component redis.server Artifact cache.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-58","title":"Rule #58","text":"Attribute Value Identifier redis.server#cache.image::ansible@docker.engine->remote.machine Component redis.server Artifact cache.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-59","title":"Rule #59","text":"Attribute Value Identifier redis.server#cache.image::compose@docker.engine->remote.machine Component redis.server Artifact cache.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-60","title":"Rule #60","text":"Attribute Value Identifier redis.server#cache.image::terraform@docker.engine->remote.machine Component redis.server Artifact cache.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(redis.server)artifact(cache.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-61","title":"Rule #61","text":"Attribute Value Identifier redis.server#cache.image::ansible@gcp.memorystore Component redis.server Artifact cache.image Technology ansible Hosting gcp.memorystore Quality 1 Reason Primary use case due to the specialization of Ansible. Details Graph component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-62","title":"Rule #62","text":"Attribute Value Identifier redis.server#cache.image::terraform@gcp.memorystore Component redis.server Artifact cache.image Technology terraform Hosting gcp.memorystore Quality 1 Reason Terraform provides a declarative module. Details Graph component(redis.server)artifact(cache.image)host 1(gcp.memorystore)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-63","title":"Rule #63","text":"Attribute Value Identifier redis.server#cache.image::ansible@kubernetes.cluster Component redis.server Artifact cache.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-64","title":"Rule #64","text":"Attribute Value Identifier redis.server#cache.image::kubernetes@kubernetes.cluster Component redis.server Artifact cache.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-65","title":"Rule #65","text":"Attribute Value Identifier redis.server#cache.image::terraform@kubernetes.cluster Component redis.server Artifact cache.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details Graph component(redis.server)artifact(cache.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-66","title":"Rule #66","text":"Attribute Value Identifier service.application#docker.image::ansible@docker.engine->local.machine Component service.application Artifact docker.image Technology ansible Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-67","title":"Rule #67","text":"Attribute Value Identifier service.application#docker.image::compose@docker.engine->local.machine Component service.application Artifact docker.image Technology compose Hosting docker.engine -> local.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-68","title":"Rule #68","text":"Attribute Value Identifier service.application#docker.image::terraform@docker.engine->local.machine Component service.application Artifact docker.image Technology terraform Hosting docker.engine -> local.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-69","title":"Rule #69","text":"Attribute Value Identifier service.application#docker.image::ansible@docker.engine->remote.machine Component service.application Artifact docker.image Technology ansible Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"community.docker.docker_container\" task Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-70","title":"Rule #70","text":"Attribute Value Identifier service.application#docker.image::compose@docker.engine->remote.machine Component service.application Artifact docker.image Technology compose Hosting docker.engine -> remote.machine Quality 1 Reason Docker is the underlying technology. Details docker compose manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-71","title":"Rule #71","text":"Attribute Value Identifier service.application#docker.image::terraform@docker.engine->remote.machine Component service.application Artifact docker.image Technology terraform Hosting docker.engine -> remote.machine Quality 0.5 Reason Docker Compose is more specialized. Details \"docker_container\" and \"docker_image\" resources Graph component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-72","title":"Rule #72","text":"Attribute Value Identifier service.application#docker.image::ansible@gcp.cloudrun Component service.application Artifact docker.image Technology ansible Hosting gcp.cloudrun Quality 0 Reason Custom module with imperative parts, while Terraform provides a declarative module. Details \"ansible.builtin.shell\", \"ansible.builtin.tempfile\", and \"ansible.builtin.copy\" tasks Graph component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-73","title":"Rule #73","text":"Attribute Value Identifier service.application#docker.image::terraform@gcp.cloudrun Component service.application Artifact docker.image Technology terraform Hosting gcp.cloudrun Quality 1 Reason Terraform provides a declarative module. Details \"google_cloud_run_v2_service\" and \"google_cloud_run_service_iam_binding\" resources Graph component(service.application)artifact(docker.image)host 1(gcp.cloudrun)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-74","title":"Rule #74","text":"Attribute Value Identifier service.application#docker.image::ansible@kubernetes.cluster Component service.application Artifact docker.image Technology ansible Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes.core.k8s\" tasks Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-75","title":"Rule #75","text":"Attribute Value Identifier service.application#docker.image::kubernetes@kubernetes.cluster Component service.application Artifact docker.image Technology kubernetes Hosting kubernetes.cluster Quality 1 Reason Kubernetes is the underlying technology. Details Kubernetes manifest generated and applied Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-76","title":"Rule #76","text":"Attribute Value Identifier service.application#docker.image::terraform@kubernetes.cluster Component service.application Artifact docker.image Technology terraform Hosting kubernetes.cluster Quality 0.5 Reason Kubernetes is more specialized. Details \"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources Graph component(service.application)artifact(docker.image)host 1(kubernetes.cluster)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-77","title":"Rule #77","text":"Attribute Value Identifier service.application#tar.archive::ansible@*->local.machine Component service.application Artifact tar.archive Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-78","title":"Rule #78","text":"Attribute Value Identifier service.application#tar.archive::terraform@*->local.machine Component service.application Artifact tar.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(service.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-79","title":"Rule #79","text":"Attribute Value Identifier service.application#tar.archive::ansible@*->remote.machine Component service.application Artifact tar.archive Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-80","title":"Rule #80","text":"Attribute Value Identifier service.application#tar.archive::terraform@*->remote.machine Component service.application Artifact tar.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(service.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-81","title":"Rule #81","text":"Attribute Value Identifier service.application#zip.archive::ansible@*->local.machine Component service.application Artifact zip.archive Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-82","title":"Rule #82","text":"Attribute Value Identifier service.application#zip.archive::terraform@*->local.machine Component service.application Artifact zip.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(service.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-83","title":"Rule #83","text":"Attribute Value Identifier service.application#zip.archive::ansible@*->remote.machine Component service.application Artifact zip.archive Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Special integration for systemd. Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements Graph component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-84","title":"Rule #84","text":"Attribute Value Identifier service.application#zip.archive::terraform@*->remote.machine Component service.application Artifact zip.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(service.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-85","title":"Rule #85","text":"Attribute Value Identifier service.application#zip.archive::ansible@gcp.appengine Component service.application Artifact zip.archive Technology ansible Hosting gcp.appengine Quality 0 Reason Custom module with imperative parts, while Terraform provides a declarative module. Details \"ansible.builtin.shell\", \"ansible.builtin.tempfile\", \"ansible.builtin.unarchive\", and \"ansible.builtin.copy\" tasks Graph component(service.application)artifact(zip.archive)host 1(gcp.appengine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-86","title":"Rule #86","text":"Attribute Value Identifier service.application#zip.archive::terraform@gcp.appengine Component service.application Artifact zip.archive Technology terraform Hosting gcp.appengine Quality 1 Reason Terraform provides a declarative module. Details \"google_app_engine_standard_app_version\", \"google_project_iam_member\", \"google_service_account\", \"google_storage_bucket\", and \"google_storage_bucket_object\" resources Graph component(service.application)artifact(zip.archive)host 1(gcp.appengine)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-87","title":"Rule #87","text":"Attribute Value Identifier software.application#apt.package::ansible@*->local.machine Component software.application Artifact apt.package Technology ansible Hosting * -> local.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements Graph component(software.application)artifact(apt.package)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-88","title":"Rule #88","text":"Attribute Value Identifier software.application#apt.package::terraform@*->local.machine Component software.application Artifact apt.package Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts Graph component(software.application)artifact(apt.package)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-89","title":"Rule #89","text":"Attribute Value Identifier software.application#apt.package::ansible@*->remote.machine Component software.application Artifact apt.package Technology ansible Hosting * -> remote.machine Quality 1 Reason Primary use case due to the specialization of Ansible. Details \"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements Graph component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-90","title":"Rule #90","text":"Attribute Value Identifier software.application#apt.package::terraform@*->remote.machine Component software.application Artifact apt.package Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(apt.package)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-91","title":"Rule #91","text":"Attribute Value Identifier software.application#tar.archive::ansible@*->local.machine Component software.application Artifact tar.archive Technology ansible Hosting * -> local.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-92","title":"Rule #92","text":"Attribute Value Identifier software.application#tar.archive::terraform@*->local.machine Component software.application Artifact tar.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts Graph component(software.application)artifact(tar.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-93","title":"Rule #93","text":"Attribute Value Identifier software.application#tar.archive::ansible@*->remote.machine Component software.application Artifact tar.archive Technology ansible Hosting * -> remote.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\". Details \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-94","title":"Rule #94","text":"Attribute Value Identifier software.application#tar.archive::terraform@*->remote.machine Component software.application Artifact tar.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(tar.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-95","title":"Rule #95","text":"Attribute Value Identifier software.application#zip.archive::ansible@*->local.machine Component software.application Artifact zip.archive Technology ansible Hosting * -> local.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-96","title":"Rule #96","text":"Attribute Value Identifier software.application#zip.archive::terraform@*->local.machine Component software.application Artifact zip.archive Technology terraform Hosting * -> local.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts. Graph component(software.application)artifact(zip.archive)...host 2(local.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-97","title":"Rule #97","text":"Attribute Value Identifier software.application#zip.archive::ansible@*->remote.machine Component software.application Artifact zip.archive Technology ansible Hosting * -> remote.machine Quality 0.5 Reason While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. Details \"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements Graph component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-98","title":"Rule #98","text":"Attribute Value Identifier software.application#zip.archive::terraform@*->remote.machine Component software.application Artifact zip.archive Technology terraform Hosting * -> remote.machine Quality 0 Reason Ansible is more specialized. Also using provisioners is a \"last resort\". Details \"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts Graph component(software.application)artifact(zip.archive)...host 2(remote.machine)hosthost","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-99","title":"Rule #99","text":"Attribute Value Identifier virtual.machine#machine.image::ansible@openstack.provider Component virtual.machine Artifact machine.image Technology ansible Hosting openstack.provider Quality 0.5 Reason Terraform is more specialized. Details \"openstack.cloud.security_group\", \"openstack.cloud.security_group_rule\" and \"openstack.cloud.server\" tasks Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#rule-100","title":"Rule #100","text":"Attribute Value Identifier virtual.machine#machine.image::terraform@openstack.provider Component virtual.machine Artifact machine.image Technology terraform Hosting openstack.provider Quality 1 Reason Terraform provides a declarative module. Details \"openstack_compute_instance_v2\", \"openstack_networking_secgroup_rule_v2\" and \"openstack_networking_secgroup_v2\" resources Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#appendix-b-yaml","title":"Appendix B \"YAML\"","text":"This appendix contains the deployment technology rules as YAML. The rules are also available as download.
- technology: ansible\ncomponent: docker.engine\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks'\n- technology: terraform\ncomponent: docker.engine\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local-exec\" provider'\n- technology: ansible\ncomponent: docker.engine\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.group\", and \"ansible.builtin.user\" tasks'\n- technology: terraform\ncomponent: docker.engine\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"remote-exec\" provider'\n- technology: ansible\ncomponent: gcp.service\nhosting: []\nweight: 1\nreason: Ansible provides a declarative module\ndetails: '\"google.cloud.gcp_serviceusage_service\" task'\n- technology: terraform\ncomponent: gcp.service\nhosting: []\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_project_service\" resource'\n- technology: ansible\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" task'\n- technology: kubernetes\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: ingress\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_service_v1\" resource'\n- technology: ansible\ncomponent: ingress\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks'\n- technology: terraform\ncomponent: ingress\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner'\n- technology: ansible\ncomponent: ingress\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", \"ansible.builtin.copy\", and \"ansible.builtin.systemd\" tasks'\n- technology: terraform\ncomponent: ingress\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner'\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- gcp.cloudsql\nweight: 0.5\nreason: Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- gcp.cloudsql\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: kubernetes\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 0\nreason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- kubernetes.cluster\nweight: 0\nreason: Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: mysql.database\nhosting:\n- mysql.dbms\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker-compose manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker-compose manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- gcp.cloudsql\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"google.cloud.gcp_sql_instance\" and \"google.cloud.gcp_sql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- gcp.cloudsql\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_sql_database_instance\" and \"google_sql_user\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" tasks'\n- technology: kubernetes\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" resource to create the installation script and \"terraform_data\" to execute the script using the \"local-exec\" provisioner'\n- technology: ansible\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.systemd\", \"ansible.builtin.copy\", \"ansible.builtin.lineinfile\", and \"community.mysql.mysql_user\" tasks'\n- technology: terraform\ncomponent: mysql.dbms\nartifact: dbms.image\nhosting:\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"terraform_data\" resource with an \"ssh\" connection to the virtual machine to copy the install script using the \"file\" provisioner on the virtual machine and to execute the script using the \"remote-exec\" provisioner'\n- technology: ansible\ncomponent: object.storage\nhosting:\n- gcp.cloudstorage\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- gcp.cloudstorage\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- local.machine\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: compose\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 0\nreason: One-time use docker container (\"fake Kubernetes job\") with imperative parts, while other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.\n- technology: ansible\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: kubernetes\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 0\nreason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules.\n- technology: terraform\ncomponent: object.storage\nhosting:\n- minio.server\n- kubernetes.cluster\nweight: 0\nreason: Ansible is more specialized.\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- gcp.memorystore\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- gcp.memorystore\nweight: 1\nreason: Terraform provides a declarative module.\n- technology: ansible\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\n- technology: kubernetes\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: redis.server\nartifact: cache.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- local.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"community.docker.docker_container\" task'\n- technology: compose\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 1\nreason: Docker is the underlying technology.\ndetails: docker compose manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- docker.engine\n- remote.machine\nweight: 0.5\nreason: Docker Compose is more specialized.\ndetails: '\"docker_container\" and \"docker_image\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- gcp.cloudrun\nweight: 0\nreason: Custom module with imperative parts, while Terraform provides a declarative module.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.tempfile\", and \"ansible.builtin.copy\" tasks '\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- gcp.cloudrun\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_cloud_run_v2_service\" and \"google_cloud_run_service_iam_binding\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes.core.k8s\" tasks'\n- technology: kubernetes\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 1\nreason: Kubernetes is the underlying technology.\ndetails: Kubernetes manifest generated and applied\n- technology: terraform\ncomponent: service.application\nartifact: docker.image\nhosting:\n- kubernetes.cluster\nweight: 0.5\nreason: Kubernetes is more specialized.\ndetails: '\"kubernetes_deployment_v1\" and \"kubernetes_service_v1\" resources'\n- technology: ansible\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible. Special integration for systemd.\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", \"ansible.builtin.shell\", and \"ansible.builtin.systemd\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- gcp.appengine\nweight: 0\nreason: Custom module with imperative parts, while Terraform provides a declarative module.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.tempfile\", \"ansible.builtin.unarchive\", and \"ansible.builtin.copy\" tasks'\n- technology: terraform\ncomponent: service.application\nartifact: zip.archive\nhosting:\n- gcp.appengine\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"google_app_engine_standard_app_version\", \"google_project_iam_member\", \"google_service_account\", \"google_storage_bucket\", and \"google_storage_bucket_object\" resources'\n- technology: ansible\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- local.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- remote.machine\nweight: 1\nreason: Primary use case due to the specialization of Ansible.\ndetails: '\"ansible.builtin.shell\", \"ansible.builtin.apt_key\", \"ansible.builtin.apt_repository\", \"ansible.builtin.apt\", and \"ansible.builtin.copy\", tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: apt.package\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., \"service.application\".\ndetails: '\"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: tar.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- local.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"local_file\" module to create scripts and artifacts and \"local-exec\" provisioner to execute scripts.'\n- technology: ansible\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0.5\nreason: While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application.\ndetails: '\"ansible.builtin.apt\", \"ansible.builtin.file\", \"ansible.builtin.unarchive\", \"ansible.builtin.copy\", \"ansible.builtin.fail\", and \"ansible.builtin.shell\" tasks with \"when\" statements'\n- technology: terraform\ncomponent: software.application\nartifact: zip.archive\nhosting:\n- '*'\n- remote.machine\nweight: 0\nreason: Ansible is more specialized. Also using provisioners is a \"last resort\".\ndetails: '\"file\" provisioner to upload artifacts and scripts and \"remote-exec\" to execute scripts'\n- technology: ansible\ncomponent: virtual.machine\nartifact: machine.image\nhosting:\n- openstack.provider\nweight: 0.5\nreason: Terraform is more specialized.\ndetails: '\"openstack.cloud.security_group\", \"openstack.cloud.security_group_rule\" and \"openstack.cloud.server\" tasks'\n- technology: terraform\ncomponent: virtual.machine\nartifact: machine.image\nhosting:\n- openstack.provider\nweight: 1\nreason: Terraform provides a declarative module.\ndetails: '\"openstack_compute_instance_v2\", \"openstack_networking_secgroup_rule_v2\" and \"openstack_networking_secgroup_v2\" resources'\n
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/specification/","title":"Specification","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability4tosca-specification-10-release-candidate","title":"Variability4TOSCA Specification 1.0 Release Candidate","text":"This document specifies Variability4TOSCA which extends TOSCA Simple Profile in YAML Version 1.3 with conditional elements to model deployment variability. This includes conditional node templates, relationship templates, properties, artifacts, groups, policies, types, inputs, and imports. In the following, we discuss the differences and the processes to resolve the variability. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#terminology","title":"Terminology","text":"We quickly introduce some terminologies.
A service template must have the TOSCA definitions version tosca_variability_1_0
. Such a service template is also called variable service template.
tosca_variability_1_0
.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template","title":"Topology Template","text":"A topology template additionally contains a variability definition. Such a topology template is also called variable topology template.
Keyname Mandatory Type Description variability true VariabilityDefinition A required object for variability inputs, variability presets, and variability expressions.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-definition","title":"Variability Definition","text":"A variability definition defines variability inputs, variability presets, variability expressions, and variability options.
Keyname Mandatory Type Description inputs false Map(String, VariabilityInput) An optional map of input parameters used inside variability expressions. presets false Map(String, VariabilityPreset) An optional map of variability preset definitions. expressions false Map(String, VariabilityExpression) An optional map of variability expressions. constraints false List(LogicExpression) An optional list of constraints respected when resolving variability. options false Map(String, Boolean) An optional map of variability options. type_specific_conditions false String | List(TypeSpecificDefaultCondition) An optional definition of type-specific default conditions. If string, then treated as relative file to import (default: \"./type-specific-conditions.yaml\") technology_rules false String | List(TechnologyRule) An optional definition of technology assignment rules. If string, then treated as relative file to import (default: [\"./rules.yaml\", \"./lib/rules.yaml\"]). plugins false PluginDefinition An optional definition of plugins.The following non-normative and incomplete example contains a variability definition which declares the variability input mode
and two variability presets dev
and prod
are defined which either assigns mode
the value dev
or prod
. Furthermore, two variability conditions is_dev
and is_prod
which evaluate if mode
equals dev
or prod
, respectively.
variability:\ninputs:\nmode:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nprod:\nname: Production\ndescription: Deploy the application on a public cloud\ninputs:\nmode: prod\nexpressions:\nis_dev: { equal: [ { variability_input: mode }, dev ] }\nis_prod: { equal: [ { variability_input: mode }, prod ] }\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-input","title":"Variability Input","text":"A variability input is an input parameter which additionally has the following keywords.
Keyname Mandatory Type Description default_expression false ValueExpression A value expression as default. implies false String | List(String) Implies/ requires another variability input. excludes false String | List(String) Excludes another variability input. alternatives false List(String) Requires exactly one of the referenced variability input. choices false List(String) Requires none, one, or multiple of referenced variability input.For example, the following variability input has a value expression as default value assigned.
inputs:\nmode:\ntype: string\ndefault_expression: <ValueExpression>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-options","title":"Variability Options","text":"There are the following variability options. More specific options override wider set options. For example, the following options the mode strict
is configured. This mode disables all default conditions and pruning. However, pruning of nodes is explicitly set by node_pruning
, thus, nodes are pruned regardless of the set mode.
options: mode: manual\nnode_pruning: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#general-options","title":"General Options","text":"The following options are general options.
Keyname Mandatory Type Default Description mode false manual | consistent-strict | consistent-loose | default | semantic-strict | semantic-loose manual Configure pruning mode.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#default-condition-options","title":"Default Condition Options","text":"The following options are used to configure the default conditions of elements.
Keyname Mandatory Type Default Description default_condition false Boolean false Enable all default conditions (consistency and semantic). input_default_condition false Boolean false Enable default condition for inputs (consistency and semantic). input_default_consistency_condition false Boolean false Enable default consistency condition for inputs. input_default_semantic_condition false Boolean false Enable default semantic condition for inputs. node_default_condition false Boolean false Enable default condition for nodes (consistency and semantic). node_default_condition_mode false List(source | incoming | incomingnaive | host | artifact | artifactnaive, -) incoming-artifact Configure the default condition for nodes. node_default_consistency_condition false Boolean false Enable default consistency condition for nodes. node_default_semantic_condition false Boolean false Enable default semantic condition for nodes. output_default_condition false Boolean false Enable default condition for outputs (consistency and semantic). output_default_consistency_condition false Boolean false Enable default consistency condition for outputs. output_default_semantic_condition false Boolean false Enable default semantic condition for outputs. relation_default_condition false Boolean false Enable default condition for relations (consistency and semantic). relation_default_condition_mode false List(source | target, -) source-target Configure the default condition for relations. relation_default_consistency_condition false Boolean false Enable default semantic condition for relations. relation_default_semantic_condition false Boolean false Enable default consistency condition for relations. relation_default_implied false Boolean false Enable default implication for relations. Does not apply for hosting relations. policy_default_condition false Boolean false Enable default condition for policies (consistency and semantic). policy_default_consistency_condition false Boolean false Enable default consistency condition for policies. policy_default_semantic_condition false Boolean false Enable default semantic condition for policies. group_default_condition false Boolean false Enable default condition for groups (consistency and semantic). group_default_consistency_condition false Boolean false Enable default consistency condition for groups. group_default_semantic_condition false Boolean false Enable default semantic condition for groups. artifact_default_condition false Boolean false Enable default condition for artifacts (consistency and semantic). artifact_default_condition_mode false List(container | technology, -) container Configure the default condition for artifacts. artifact_default_consistency_condition false Boolean false Enable default consistency condition for artifacts. artifact_default_semantic_condition false Boolean false Enable default semantic condition for artifacts. property_default_condition false Boolean false Enable default condition for properties (consistency and semantic). property_default_consistency_condition false Boolean false Enable default consistency condition for properties. property_default_semantic_condition false Boolean false Enable default semantic condition for properties. type_default_condition false Boolean false Enable default condition for types (consistency and semantic). type_default_consistency_condition false Boolean false Enable default consistency condition for types. type_default_semantic_condition false Boolean false Enable default semantic condition for types. technology_default_condition false Boolean false Enable default condition for (deployment) technologies (consistency and semantic). technology_default_condition_mode false List(container | other, -) container-other Configure the default condition for (deployment) technologies. technology_default_consistency_condition false Boolean false Enable default consistency condition for technologies. technology_default_semantic_condition false Boolean false Enable default semantic condition for technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-options","title":"Pruning Options","text":"The following options are used to configure the pruning of elements.
Keyname Mandatory Type Default Description pruning false Boolean false Enable pruning of all elements (consistency and semantic). input_pruning false Boolean false Enable pruning of inputs (consistency and semantic). input_consistency_pruning false Boolean false Enable consistency pruning of inputs. input_semantic_pruning false Boolean false Enable semantic pruning of inputs. node_pruning false Boolean false Enable pruning of nodes (consistency and semantic). node_consistency_pruning false Boolean false Enable consistency pruning of nodes. node_semantic_pruning false Boolean false Enable semantic pruning of nodes. output_pruning false Boolean false Enable pruning of output (consistency and semantic). output_consistency_pruning false Boolean false Enable consistency pruning of output. output_semantic_pruning false Boolean false Enable semantic pruning of output. relation_pruning false Boolean false Enable pruning of relations (consistency and semantic). relation_consistency_pruning false Boolean false Enable consistency pruning of relations. relation_semantic_pruning false Boolean false Enable semantic pruning of relations. policy_pruning false Boolean false Enable pruning of policies (consistency and semantic). policy_consistency_pruning false Boolean false Enable consistency pruning of policies. policy_semantic_pruning false Boolean false Enable semantic pruning of policies. group_pruning false Boolean false Enable pruning of groups (consistency and semantic). group_consistency_pruning false Boolean false Enable consistency pruning of groups. group_semantic_pruning false Boolean false Enable semantic pruning of groups. artifact_pruning false Boolean false Enable pruning of artifacts (consistency and semantic). artifact_consistency_pruning false Boolean false Enable consistency pruning of artifacts. artifact_semantic_pruning false Boolean false Enable semantic pruning of artifacts. property_pruning false Boolean false Enable pruning of properties (consistency and semantic). property_consistency_pruning false Boolean false Enable consistency pruning of properties. property_semantic_pruning false Boolean false Enable semantic pruning of properties. type_pruning false Boolean false Enable pruning of types (consistency and semantic). type_consistency_pruning false Boolean false Enable consistency pruning of types. type_semantic_pruning false Boolean false Enable semantic pruning of types. technology_pruning false Boolean false Enable pruning of (deployment) technologies (consistency and semantic). technology_consistency_pruning false Boolean false Enable consistency pruning of technologies. technology_semantic_pruning false Boolean false Enable semantic pruning of technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#checks-options","title":"Checks Options","text":"The following options are used to configure checks.
Keyname Mandatory Type Default Description checks false Boolean true Enable all checks. consistency_checks false Boolean true Enable all consistency checks. semantic_checks false Boolean true Enable all semantic checks. relation_source_check false Boolean true Enable the consistency check regarding present relation sources. relation_target_check false Boolean true Enable the consistency check regarding present relation targets. ambiguous_hosting_check false Boolean true Enable the consistency check regarding at maximum one present hosting relation. missing_artifact_container_check false Boolean true Enable the consistency check regarding present container of artifacts. ambiguous_artifact_check false Boolean true Enable the consistency check regarding ambiguous present artifacts. missing_property_container_check false Boolean true Enable the consistency check regarding present container of properties. ambiguous_property_check false Boolean true Enable the consistency check regarding ambiguous present properties. missing_type_container_check false Boolean true Enable the consistency check regarding present containers of types. ambiguous_type_check false Boolean ture Enable the consistency check regarding exactly one present type per container. expected_hosting_check false Boolean true Enable the semantic check regarding an expected present hosting relation. expected_incoming_relation_check false Boolean true Enable the semantic check regarding an expected incoming relation. expected_artifact_check false Boolean true Enable the semantic check regarding an expected artifact. expected_technology_check false Boolean true Enable the consistency check regarding present technologies. missing_technology_container_check false Boolean true Enable the consistency check regarding present container of technologies. ambiguous_technology_check false Boolean true Enable the consistency check regarding ambiguous present technologies. ambiguous_relation_check false Boolean true Enable the consistency check regarding ambiguous present relations. ambiguous_input_check false Boolean true Enable the consistency check regarding ambiguous present inputs. ambiguous_output_check false Boolean true Enable the consistency check regarding ambiguous present outputs. unconsumed_input_check false Boolean true Enable the semantic check regarding not consumed inputs. unproduced_output_check false Boolean true Enable the consistency check regarding not produced outputs.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#solver-options","title":"Solver Options","text":"The following options are used to configure the solver.
Keyname Mandatory Type Default Description optimization_topology false Boolean | min | max false Configure optimization considering topology. optimization_topology_unique false Boolean true Enable check for unique results considering topology. optimization_topology_mode false count | weight weight Configure optimization mode considering topology. optimization_technologies false Boolean | min | max false Enable optimization considering technologies. optimization_technologies_unique false Boolean false Enable check for unique results considering technologies. optimization_technologies_mode false count | weight | weight-count count Configure optimization mode considering technologies.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normalization-options","title":"Normalization Options","text":"The following options are used to configure the normalizer.
Keyname Mandatory Type Default Description technology_required false Boolean false Enable if a technology is required by default for a node.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#enricher-options","title":"Enricher Options","text":"The following options are used to configure the enricher.
Keyname Mandatory Type Default Description enrich_input_condition false Boolean true Enable if a condition should be enriched to an element considering a variability input having the element id as name. enrich_technologies false Boolean false Enable if technologies are enriched. enrich_implementations false Boolean false Enable if implementations are enriched.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#constraints-options","title":"Constraints Options","text":"This is an experimental feature.
The following options are used to configure constraints.
Keyname Mandatory Type Default Description constraints false Boolean false Enable all constraints. relation_source_constraint false Boolean false Enable the constraint regarding present relation sources. relation_target_constraint false Boolean false Enable the constraint regarding present relation targets. artifact_container_constraint false Boolean false Enable the constraint regarding present container of artifacts. property_container_constraint false Boolean false Enable the constraint regarding present container of properties. type_container_constraint false Boolean false Enable the constraint regarding present containers of types. hosting_stack_constraint false Boolean false Enable the constraint regarding present hosting stack. technology_constraint false Boolean false Enable the constraint regarding technologies. unique_property_constraint false Boolean false Enable the constraint regarding unique property names. unique_artifact_constraint false Boolean false Enable the constraint regarding unique artifact names. unique_input_constraint false Boolean false Enable the constraint regarding unique deployment input names. unique_output_constraint false Boolean false Enable the constraint regarding unique deployment output names. required_artifact_constraint false Boolean false Enable the constraint regarding required artifact. required_incoming_relation_constraint false Boolean false Enable the constraint regarding required incoming relation.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-modes","title":"Pruning Modes","text":"There are several predefined pruning modes which provide different useful combinations of default conditions and the pruning of elements that can be directly used.
manual
: no default or pruning conditions are enabled at allconsistent-strict
: all default consistency conditions are enabledconsitent-loose
: consistency pruning is enableddefault
: all default conditions are enabled (consistency and semantic)semantic-strict
: consistency pruning is enabled and semantic defaultssemantic-loose
: pruning is enabled everywhere (consistency and semantic)Note, pruning modes do not consider input and output pruning in tosca_variability_1_0_rc_2
but in tosca_variability_1_0_rc_3
.
tosca_variability_1_0_rc_2
has the following default values.
mode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: true\noptimization_technologies: max\noptimization_technologies_mode: weight-count\ntechnology_constraint: true\nhosting_stack_constraint: true\nrelation_default_implied: true\ntechnology_required: false\nunconsumed_input_check: false\nunproduced_output_check: false\nenrich_technologies: true\nenrich_implementations: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#rc-v3","title":"RC v3","text":"tosca_variability_1_0_rc_3
has the following default values. Also, pruning modes consider input and output pruning.
mode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: true\noptimization_technologies: max\noptimization_technologies_mode: weight-count\noptimization_technologies_unique: false\ntechnology_constraint: true\nhosting_stack_constraint: true\nunique_property_constraint: true\nunique_artifact_constraint: true\nunique_input_constraint: true\nunique_output_constraint: true\nrequired_artifact_constraint: true\nrelation_default_implied: true\ntechnology_required: true\nchecks: false\nenrich_technologies: true\nenrich_implementations: true\nartifact_default_condition_mode: container-managed\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#default-conditions","title":"Default Conditions","text":"There are element-generic default conditions and type-specific default conditions. Element-generic default conditions are generic default conditions defined per element. However, type-specific default conditions are defined per type, e.g., node type, and, thus, override element-generic default conditions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-generic-default-conditions","title":"Element-Generic Default Conditions","text":"The following element-generic default conditions can be assigned to elements.
Element Consistency Semantic Default Conditions Node with Incoming Relations (incoming) false true Check if any incoming relation is present. Node with Artifacts (artifact) false true Check if any artifact is present. Property true false Check if the container, e.g., node template or policy, of the property is present. Input false true Check if the input is consumed. Output true false Check if the output is produced. Relation true false Check if the source and target of the relation is present. Policy false true Check if the policy has any targets which are present. Group false true Check if the group has any members which are present. Artifact (container) true false Check if the node template of the artifact is present. Technology (container) true false Check if the node template of the technology is present. Technology (other) true false Check if no other technology of the node template is present. Root true true The default condition of element always holds.Thereby, we define a consistency condition a condition which targets the consistency of the metamodel, thus, ensuring that the metamodel can be correctly parsed, e.g., a property must have a container. In contrast, a semantic condition targets semantic aspect of elements or the type system, e.g., a node without incoming relations is not used and can be removed.
Depending on the context, other default conditions are more applicable. The following default conditions can be chosen instead of the ones introduced above.
Element Consistency Semantic Default Conditions Node with Incoming Relations (incomingnaive) false true Check if any incoming relation is present usinghas_incoming_relation_naive
. Node with Incoming Relations (source) false true Check if any source of any incoming relation is present. Node with Outgoing Relations (outgoing) false true Check if any outgoing relation is present. Node with Outgoing Relations (outgoingnaive) false true Check if any outgoing relation is present using has_outgoing_relation_naive
. Node with Host (host) false true Check if any host is present. Node with Artifact (artifactnaive) false true Check if any artifact is present using has_artifact_naive
. Relation (source) true false Check if the source of the relation is present. Relation (target) true false Check if the target of the relation is present. Artifact (managed) false true Check if the artifact is managed by any technology.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#type-specific-default-conditions","title":"Type-Specific Default Conditions","text":"Conditional types conflict with this feature!
Type-specific default conditions can be defined to override element-generic default conditions for specific type. A type-specific default condition is defined as follows and is supported for nodes, relations, properties, artifact, groups, and policies.
Keyname Mandatory Type Default Description conditions true VariabilityCondition | List(VariabilityCondition) A variability condition. If a list is given, then the conditions are combined using the and operation. consistency false Boolean false Configures the condition to be a consistency condition. semantic false Boolean true Configures the condition to be a semantic condition.For example, the node type scenario.monitor
defines a type-specific semantic default condition checking for the presence of its host.
type_specific_conditions:\nnode_types:\nscenario.monitor:\nconditions: {host_presence: SELF}\nsemantic: true\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-rules","title":"Technology Rules","text":"Conditional types conflict with this feature!
Technology rules can be defined to automatically select a deployment technology for a component. A technology rule is defined as follows.
Keyname Mandatory Type Description technology true String The name of the deployment technology. component true String The type of the component to which the technology can be assigned. hosting false List(String) The type of the host of the component which the technology requires. If list, then refers to the hosting stack. conditions false VariabilityCondition | List(VariabilityCondition) The conditions under which a technology can be assigned to a component. weight false Number The weight which is minimized (default is 1). assign false String Configure the node type that is assigned (default:${current_type}.${technology_name}.${host_type_prefix}
). For example, the node type application
can be deployed using the deployment technology terraform
if the host is of type terraform_host
.
technology_rules:\nterraform:\n- component: application\nhosting: terraform_host\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-preset","title":"Variability Preset","text":"A variability preset predefines values for variability inputs that might be used when resolving variability.
Keyname Mandatory Type Description name false String An optional name of the variability preset. description false String An optional description for the variability preset. inputs true Map(String, InputParameterAssignment) A required map of input parameter assignments.For example, the following variability preset dev
set the values of the two variability inputs mode
and another_input
but not of another_another_input
.
variability:\ninputs:\nmode:\ntype: string\nanother_input: type: string\nanother_another_input:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nanother_input: another_value\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-expression","title":"Variability Expression","text":"A variability expression is an expression which consists of operators and functions which are listed below. For example, the following expression returns the total amount of costs. This result might be used inside a variability condition to ensure that the deployment costs are within a specific budget.
topology_template:\nvariability: expressions:\nmy_expression: {add: [{variability_input: costs_offering_a}, {variability_input: costs_offering_b}]}\n
There are different kinds of variability expressions, as displayed in Figure 1. Value expressions return any kind of value and logic expressions return Booleans.
Figure 1: Different variability expressions types","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-condition","title":"Variability Condition","text":"
A variability condition is a logic expression targeting the presence of an element, as displayed in Figure 1. Allowed operators and functions are listed below. For example, the following variability condition is_prod
evaluates to true if the variability input mode
equals prod
.
topology_template: variability:\ninputs: mode: type: string\nexpressions:\nis_prod: {equal: [{variability_input: mode}, prod]}\nnode_template:\nmy_prod_node:\ntype: my.prod.node\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#node-template","title":"Node Template","text":"A node template is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective node template is not present. A node template can also hold conditional types, artifact, and properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. artifacts false Map(String, ArtifactTemplate) | List(Map(String, ArtifactTemplate){single}) An optional map of artifact or a list of artifact maps. If a list is given, then each artifact map must contain only one artifact. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. persistent false Boolean Configure if node is persistent, e.g., always consumed by an end user from the browser. This will prevent unexpected pruning by setting the pruning option to false. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. weight false Boolean | Non-Negative Number Configure the weight of this element used during optimization (default is 1). implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. technology false String | List(Map(String, TechnologyTemplate){single}) An optional conditional assignment of deployment technologies. For example, the following node template has a variability condition assigned.
prod_database:\ntype: my.prod.db\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-template","title":"Technology Template","text":"A technology template is a conditional elements, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective technology template is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the technology as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_condition_mode false container | other | container-other Configure the default condition for this element. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. weight false Boolean | Non-Negative Number Configure the weight of this element used during optimization (default is 1). assign false String Configure the node type that is assigned (default:${current_type}.${technology_name}.${host_type_prefix}
).","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#type-assignment","title":"Type Assignment","text":"A type is a conditional element, thus, variability conditions and further options can be assigned to a type assignment. These conditions must hold otherwise the respective relationship is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the type as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following node template database
has a conditional type switching between a development and production database.
database:\ntype:\n- my.dev.db:\nconditions: <VariabilityCondition>\n- my.prod.db:\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#requirement-assignment","title":"Requirement Assignment","text":"A requirement assignment is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective relationship is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the requirement assignment as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source-target | source | target Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. implied false Boolean | SOURCE | TARGET | CONTAINER Enables that the manual conditions are used to imply the element when the source/ target (depending on the configuration) is present. This overrides the variability options of the variable topology template. For example, the following requirement assignment host
has a variability condition assigned.
requirements:\n- host:\nnode: dev_runtime\nconditions: {logic_expression: is_dev}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#relationship-templates","title":"Relationship Templates","text":"A relationship template can contain conditional properties. Note, the presence of a relationship template is bound to the presence of the requirement assignment in which it is used. A relationship template can also hold conditional properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property.For example, the following relationship templates contains conditional properties.
relationship_templates:\nmy_relationship:\ntype: my.relationship\nproperties:\n- property_one:\nvalue: value_one\nconditions: <VariabilityCondition>\n- property_two:\nvalue: value_two\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#property-assignment","title":"Property Assignment","text":"A property is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective relationship is not present. However, this only applies if the property assignment is wrapped as the following object and if it is used in a list.
Keyname Mandatory Type Description value false (Original) PropertyAssignment The value of the property. expression false ValueExpression A value expressions which is evaluated and used as value. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the value as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. These keywords are used to detect if a property assignment is wrapped. Thus, if any of these keywords must be used as value for property, then this property must be wrapped. For example, the property key_one
has the value {value: the_value}
and, thus, must be wrapped.
properties:\n- key_one:\nvalue: {value: the_value}\n- conditional_property:\nvalue: conditional_value\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#group-template","title":"Group Template","text":"A group is conditional element, thus, variability conditions and other options can be assigned. Depending on the group type the conditions are either assigned to the group itself or to the group members. A group can also hold conditional types and properties.
In general, the conditions are assigned to the group itself. These conditions must hold otherwise the respective group is not present. We refer to such a group also as conditional group.
However, if the group is derived from variability.groups.ConditionalMembers
then the conditions are assigned to the group members. These conditions must hold otherwise the respective group members are not present in the variability-resolved service template. Furthermore, group elements can be node templates and requirement assignments. We refer to such a group also as variability group. A variability group is always absent and, thus, always removed when resolving variability.
element implies target
or (element and condition) implies target
. For example, the following group example_group
is a conditional group which is only present if assigned conditions hold.
conditional_group:\ntype: tosca.groups.Root\nmembers: [prod_database, [application, prod_connects_to]]\nconditions: {logic_expression: is_prod}\n
However, the following group example_group
assigns its assigned conditions to its members, i.e., the node template prod_database
and the requirement assignment prod_connects_to
of the node template application
. In contrast to the previous example this group is not derived from variability.groups.ConditionalMembers
. Thus, the presence of the node template prod_database
depends on condition is_prod
.
variability_group:\ntype: variability.groups.ConditionalMembers\nmembers: [prod_database, [application, prod_connects_to]]\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#policy-template","title":"Policy Template","text":"A policy template is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective policy is not present. A policy can also hold conditional types and properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following policy template anticollocation
has the variability condition is_prod
assigned. Depending on the presence of this policy, the node templates wordpress
and mysql
must not be hosted on the same server, e.g., during production. For more information about this example, take a look in the TOSCA Simple Profile in YAML Version 1.3.
node_templates:\nwordpress:\ntype: tosca.nodes.WebServer\nrequirements:\n- host:\nnode_filter:\ncapabilities:\n- os:\nproperties:\n- architecture: x86_64\n- type: linux\nmysql:\ntype: tosca.nodes.DBMS.MySQL\nrequirements:\n- host:\nnode: tosca.nodes.Compute\nnode_filter:\ncapabilities:\n- os:\nproperties:\n- architecture: x86_64\n- type: linux\npolicies:\n- anticollocation:\ntype: tosca.policies.AntiCollocation\ntargets: [wordpress_server, mysql]\nconditions: {logic_expression: is_prod}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#artifact-template","title":"Artifact Template","text":"A (deployment) artifact is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective artifact is not present. An artifact can also hold conditional properties.
Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. default_alternative false Boolean Declare the artifact as default. This overwrites assigned conditions. There must be only one default artifact. properties false Map(String, PropertyAssignment) | List(Map(String, PropertyAssignment){single}) An optional map of property assignments or a list of property assignments maps. If a list is given, then each property assignment map must contain only one property. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_condition_mode false List(container | technology, -) Configure the default condition for this element. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following node template my_node
has two artifacts artifact_a
and artifact_b
assigned which are both conditional.
my_node:\ntype: my.node\nartifacts:\n- artifact_a:\nconditions: <VariabilityCondition>\n- artifact_b:\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template-input","title":"Topology Template Input","text":"A topology template input is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective input is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. default_alternative false Boolean Declare the input as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. For example, the topology template input has a variability condition assigned.
inputs:\nssh_key_file:\ntype: string\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#topology-template-output","title":"Topology Template Output","text":"A topology template output is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective output is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. default_alternative false Boolean Declare the output as default. This overwrites assigned conditions. There must be only one default assignment. default_condition false Boolean Enable the default condition for this element. This overrides the variability options of the variable topology template. default_consistency_condition false Boolean Enable the default consistency condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_semantic_condition false Boolean Enable the default semantic condition for this element. Default condition must be enabled for this element. This overrides the variability options of the variable topology template. default_condition_mode false source | relation | host | source-host | relation-host Configure the default condition for this element. pruning false Boolean Enable the pruning for this element. This overrides the variability options of the variable topology template. consistency_pruning false Boolean Enable the consistency pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. semantic_pruning false Boolean Enable the semantic pruning for this element. Pruning must be enabled for this element. This overrides the variability options of the variable topology template. For example, the topology template output has a variability condition assigned.
outputs:\nvm_address:\ntype: string\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#import-definition","title":"Import Definition","text":"An import definition is a conditional element, thus, variability conditions and other options can be assigned. These conditions must hold otherwise the respective import is not present.
Keyname Mandatory Type Description conditions false VariabilityCondition | List(VariabilityCondition) An optional variability condition. If a list is given, then the conditions are combined using the and operation. implies false List(Tuple(Target: VariabilityCondition, Condition?: VariabilityCondition)) An optional list of implications following the patternelement implies target
or (element and condition) implies target
. For example, the following import has a variability condition assigned.
import:\n- file: some_file\nconditions: <VariabilityCondition>\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normative-group-types","title":"Normative Group Types","text":"There are two normative group types variability.groups.Root
and variability.groups.ConditionalMembers
. The first group type is the root group every other variability-related group, such as variability.groups.ConditionalMembers
should derive from.
variability.groups.Root:\nderived_from: tosca.groups.Root\n
The second group type should be used for variability groups.
variability.groups.ConditionalMembers:\nderived_from: variability.groups.Root\nconditions: VariabilityCondition | List(VariabilityCondition)
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#normative-interface-types","title":"Normative Interface Types","text":"The following normative interfaces define a management interface for nodes and relationships. Currently, no management operations are defined. The definition is intended to be extended in other specifications, e.g., for building deployment artifacts after resolving variability.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-management-interface-for-nodes","title":"Variability Management Interface for Nodes","text":"The following interface manages the variability-related operations of nodes.
tosca.interfaces.node.management.Variability:\nderived_from: tosca.interfaces.Root\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#variability-management-interface-for-relationships","title":"Variability Management Interface for Relationships","text":"The following interface manages the variability-related operations of relationships.
tosca.interfaces.relationship.management.Variability:\nderived_from: tosca.interfaces.Root\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#intrinsic-functions","title":"Intrinsic Functions","text":"The following intrinsic functions can be used inside a variability expression.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#logical-operators","title":"Logical Operators","text":"The following logical operators can be used inside a logic expression.
Keyname Input Output Description and List(BooleanExpression) Boolean Evaluates if all values aretrue
. or List(BooleanExpression) Boolean Evaluates if at least one value is true
. not BooleanExpression Boolean Negates the given value. xor List(BooleanExpression) Boolean Evaluates if an odd number of arguments is true
. exo List(BooleanExpression) Boolean Evaluates if exactly one value is true
. implies Tuple(BooleanExpression, BooleanExpression) Boolean Evaluates if first value implies the second value. amo List(BooleanExpression) Boolean Evaluates if at most one value is true
.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#arithmetic-operators","title":"Arithmetic Operators","text":"The following arithmetic operators can be used inside a variability expression.
Keyname Input Output Description add List(NumericExpression) Numeric Sums up given values. sub List(NumericExpression) Numeric Subtracts values from the first one. mul List(NumericExpression) Numeric Multiplies given values. div List(NumericExpression) Numeric Divides values from the first one. mod Tuple(NumericExpression, NumericExpression) Numeric Divides values and returns the remainder.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#presence-operators","title":"Presence Operators","text":"The following presence operators can be used inside a logic expression.
Keyname Input Output Description variability_input String Any Returns the value of a variability input. logic_expression String Boolean Returns the value of the Logic Expression. value_expression String Any Returns the value of the Value Expression. node_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if node is present. host_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any host of the node is present. Note, an error will be thrown later when consistency is checked if there are multiple hosting relations present. has_source Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any source of any incoming relation of the node template is present. has_incoming_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship. has_incoming_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship in a naive way that will result in a circle considering the default condition of relations. has_outgoing_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship. has_outgoing_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship in a naive way that will result in a circle considering the default condition of relations. has_artifact Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present. has_artifact_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present in a naive way that will result in a circle considering the default condition of artifacts. relation_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number) Boolean Returns if relation is present. artifact_presence Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is present. is_managed SELF | Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is managed by a deployment technology. policy_presence Policy: String | Number Boolean Returns if policy is present. group_presence Group: String Boolean Returns if group is present. input_presence Input: String | Number Boolean Returns if input is present. is_consumed Input: String | Number Boolean Returns if input is consumed by a property. output_presence Output: String | Number Boolean Returns if output is present. is_produced Output: String | Number Boolean Returns if output is produced by a property. source_presence SELF | CONTAINER Boolean Returns if source node of relation is present. Can only be used inside a relation. Otherwise usenode_presence
. target_presence SELF | CONTAINER Boolean Returns if target node of relation is present. Can only be used inside a relation. Otherwise use node_presence
. has_present_target Policy: String | Number | SELF | CONTAINER Boolean Returns if any target of the given policy is present. has_present_member Group: String | SELF | CONTAINER Boolean Returns if any member of the given group is present. node_type_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Type: String | Number) Boolean Returns if type of node is present. relation_type_presence Triple(Node: String | SELF | CONTAINER, Relation: String | Number, Type: String | Number) Boolean Returns if type of relation is present. group_type_presence Tuple(Group: String | SELF | CONTAINER, Type: String | Number) Boolean Returns if type of group is present. policy_type_presence Tuple(Group: String | SELF | CONTAINER, Type: String | Number) Boolean Returns if type of policy is present. artifact_type_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Type: String | Number) Boolean Returns if type of policy is present. node_property_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Property: String | Number) Boolean Returns if property of node is present. relation_property_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number, Property: String | Number) Boolean Returns if property of relation is present. group_property_presence Tuple(Group: String | SELF | CONTAINER, Property: String | Number) Boolean Returns if property of group is present. policy_property_presence Tuple(Policy: String | Number | SELF | CONTAINER |, Property: String | Number) Boolean Returns if property of policy is present. artifact_property_presence Tuple(Node: String | SELF | CONTAINER | SOURCE | TARGET, Artifact: String | Number, Property: String | Number) Boolean Returns if property of artifact is present. container_presence SELF | CONTAINER Boolean Returns if container is present. Can only be used inside a property or artifact. import_presence Import: Number Boolean Returns if import is present. technology_presence Tuple(Node: String, Technology: String | Number) Boolean Returns if technology of node is present.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#string-operators","title":"String Operators","text":"The following string operators can be used inside a variability expression.
Keyname Input Output Description concat List(ValueExpression) String Concatenates the given values. join Tuple(List(ValueExpression), String) String Joins the given values using the provided delimiter. token Tuple(ValueExpression, String, Number) String Splits a given value by the provided delimiter and returns the element specified by the provided index.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#constraint-operators","title":"Constraint Operators","text":"The following constraint operators can be used inside a variability expression.
Keyname Input Output Description equal List(ValueExpression) Boolean Evaluates if the given values are equal. greater Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is greater than the second value. greater_or_equal Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is greater or equal to the second value. less Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is less than the second value. less_or_equal Tuple(NumericExpression, NumericExpression) Boolean Evaluates if the first value is less or equal to the second value. in_range Tuple(NumericExpression, Tuple(NumericExpression, NumericExpression)) Boolean Evaluates if the value is in a given range. valid_values Tuple(ValueExpression, List(ValueExpression)) Boolean Evaluates if the value is element of the list. length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a given length. min_length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a minimum length. max_length Tuple(ValueExpression, NumericExpression) Boolean Evaluates if the value has a maximum length.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#analytical-operators","title":"Analytical Operators","text":"The following analytical operators can be used inside a variability expression.
Keyname Input Output Description sum List(Number) Number Returns the sum of the given values. count List(Number) Number Returns the count of the given values. min List(Number) Number Returns the min of the given values. max List(Number) Number Returns the max of the given values. mean List(Number) Number Returns the mean of the given values. median List(Number) Number Returns the median of the given values. variance List(Number) Number Returns the variance of the given values. standard_deviation List(Number) Number Returns the standard deviation of the given values. linear_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using linear regression. polynomial_regression List(List(Tuple(Number, Number)), Number, Number) Number Returns the prediction using polynomial regression. logarithmic_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using logarithmic regression. exponential_regression List(List(Tuple(Number, Number)), Number) Number Returns the prediction using exponential regression.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#date-operators","title":"Date Operators","text":"The following date operators can be used inside a variability expression.
Keyname Input Output Description weekday Empty List String Returns the current weekday. same Tuple(String | Number, String | Number) Boolean Returns if first date is the same date as the second. before Tuple(String | Number, String | Number) Boolean Returns if first date is before the second date. before_or_same Tuple(String | Number, String | Number) Boolean Returns if first date is before or same as the second date. after Tuple(String | Number, String | Number) Boolean Returns if first date is after the second date. after_or_same Tuple(String | Number, String | Number) Boolean Returns if first date is after or same as the second date. within Tuple(String | Number, Tuple(String | Number, String | Number)) Boolean Returns if given date is within the given dates.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#plugin-definition","title":"Plugin Definition","text":"The following plugins can be defined.
Keyname Mandatory Type Description technology false List(String) An optional list of technology rule plugins. Strings are treated as relative imports. Plugins are also loaded from \"./plugins/technology\".","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#technology-plugin","title":"Technology Plugin","text":"A technology plugin must export the following interface.
export type TechnologyPluginBuilder = {\nbuild(graph: Graph): TechnologyPlugin\n}\n
export type TechnologyPlugin = {\nassign: (node: Node) => {[technology: string]: TechnologyTemplate}[]\nimplement: (name: string, type: NodeType) => NodeTypeMap\n}\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#processing","title":"Processing","text":"This section is outdated.
We describe on a high-level the steps to derive a variability-resolved service template from a variable service template.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#resolve-variability","title":"Resolve Variability","text":"To resolve the variability in a variable service template, conduct the following steps:
tosca_variability_1_0
.conditions
at node templates.tosca_simple_yaml_1_3
.Variability inputs can be assigned either directly or indirectly using (possibly multiple) variability presets. Therefore, conduct the following steps:
Thereby, inputs which are merged at a later step, override existing inputs. Thus, directly assigned variability inputs have the highest priority. For example, given the following variability definition.
variability:\ninputs:\nmode:\ntype: string\nanother_input: type: string\nanother_another_input:\ntype: string\npresets:\ndev:\nname: Development\ndescription: Deploy the application on a private cloud\ninputs:\nmode: dev\nanother_input: dev\nanother_another_input: dev\nprod:\nname: Production\ndescription: Deploy the application on a public cloud\ninputs:\nmode: prod\nanother_input: prod\n
When the presets dev
and prod
are applied and the variability input mode
is directly assigned to override
, then the following variability inputs are retrieved.
mode: override\nanother_input: prod\nanother_another_input: dev\n
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#check-element-presence","title":"Check Element Presence","text":"To check if an element is present, check that all assigned conditions hold:
conditions
.conditions
which the element is member of.The element is present if all conditions hold.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#conduct-checks","title":"Conduct Checks","text":"To conduct the consistency and semantic checks, conduct the following steps:
Since the derived variability-resolved service template might be further processed, e.g. by topology completion, some or all of these checks might be omitted.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#pruning-elements","title":"Pruning Elements","text":"To further support modeling, elements can be pruned by additionally evaluating the respective default condition before evaluating assigned conditions. For example, when evaluating if a property of a node template is present, then evaluate first if respective node template is present and then assigned conditions. Such pruning propagates through the whole topology. For example, the properties of a relationship template used in a requirement assignment of a node template which is not present are also not present.
There are element-generic default conditions and type-specific default conditions. Element-generic default conditions are generic default conditions defined per element. However, type-specific default conditions are defined per type, e.g., node type, and, thus, override element-generic default conditions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#optimization","title":"Optimization","text":"The variability-resolved service template can be optimized regarding the weight of node templates. The default weight of a node template is 1. Per default, the variability-resolved service template is optimized regarding the minimal weight/ number of node templates. The primary intention is to minimize the deployment complexity, but optimization could be also used, e.g., to minimize overall costs. The weight of a node template can be configured in its definition. Moreover, technology selection can be optimized.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-system","title":"Element System","text":"When introducing conditional elements, we follow typically the approach of using a list whose entries are maps that contain a single element. Thus, elements can just be defined as usual but in a list (instead of a map) and can even share the same names. This has some implication on managing elements which we are discussing in the following.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-collections","title":"Element Collections","text":"As an overview, the following table shows the collections that are used in TOSCA and the ones which are used in Variability4TOSCA.
Element TOSCA Variability4TOSCA Inputs Map Map, List Outputs Map Map, List Nodes Map Map, List Relations List List Properties Map Map, List Policies List List Groups Map Map, List Artifacts Map Map, List","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-uniqueness","title":"Element Uniqueness","text":"As an overview, the following table shows the uniqueness of elements in TOSCA and in Variability4TOSCA in terms of identifiers, such as the key in a map. This is directly related to the used collections.
Element TOSCA Variability4TOSCA Inputs Outputs Nodes Relations Properties Policies Groups Artifacts","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-identifier-system","title":"Element Identifier System","text":"Each element has an identifier that is unique per (variable) service template. This identifier system is required since some conditional elements, such as artifacts, can have non-unique names. The identifier of an element is constructed as follows.
<Element Type>.<Element Name>[@<Element Index>][.<Element Container ID>]\n
Available element types are node
, relation
, property
, group
, policy
, artifact
, input
, output
, technology
, type
, and import
.
For example, consider the given variable service template.
node_templates:\nmy_node:\ntype: my.node\nproperties:\n- my_property:\nvalue: first\nconditions: <VariabilityCondition>\n- my_property:\nvalue: second\nconditions: <VariabilityCondition>\nartifacts:\n- my_artifact:\nfile: path/to/my_artifact_first\nconditions: <VariabilityCondition>\n- my_artifact:\nfile: path/to/my_artifact_second\nconditions: <VariabilityCondition>\n
Next, the following identifiers, among others, exist.
node.my_node
for the node template my_node
.property.my_property@0.node.my_node
for the first property my_property
of the node template my_node
.artifact.my_artifact@1.node.my_node
for the second artifact my_artifact
of the node template my_node
.Each element has a display representation that is unique per (variable) service template. This display system is required since some conditional elements, such as artifacts, can have non-unique names. The display representation of an element is constructed as follows.
<Element Type> \"<Element Name>[@<Element Index>]\"[ of <Element Container Display>]\n
Available element types are Node
, Relation
, Property
, Group
, Policy
, Artifact
, Input
, Output
, Technology
, Type
, and Import
.
For example, consider the given variable service template.
node_templates:\nmy_node:\ntype: my.node\nproperties:\n- my_property:\nvalue: first\nconditions: <VariabilityCondition>\n- my_property:\nvalue: second\nconditions: <VariabilityCondition>\nartifacts:\n- my_artifact:\nfile: path/to/my_artifact_first\nconditions: <VariabilityCondition>\n- my_artifact:\nfile: path/to/my_artifact_second\nconditions: <VariabilityCondition>\n
Next, the following display representations, among others, exist.
Node \"my_node\"
for the node template my_node
.Property \"my_property@0\" of Node \"my_node\"
for the first property my_property
of the node template my_node
.Artifact \"my_artifact@1\" of Node \"my_node\"
for the second artifact my_artifact
of the node template my_node
.We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/","title":"Introduction","text":"","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#variability4tosca-conformance-test-suite-10-release-candidate","title":"Variability4TOSCA Conformance Test Suite 1.0 Release Candidate","text":"This document specifies the conformance test suite for the Variability4TOSCA specification which can be used to evaluate Variability4TOSCA implementations. The specification is under active development and is not backwards compatible with any previous versions.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#conformance-tests","title":"Conformance Tests","text":"Each test is described on a separate page. The description includes typically a variable service template, variability inputs, expected errors, expected variability-resolved service template and so on along with an explanation about the expected processing.
ID Test 1 Operator \"count\" 2 Operator \"exponential_regression\" 3 Operator \"variance\" 4 Operator \"logarithmic_regression\" 5 Operator \"max\" 6 Operator \"mean\" 7 Operator \"median\" 8 Operator \"min\" 9 Operator \"polynomial_regression\" 10 Operator \"standard_deviation\" 11 Operator \"sum\" 12 Operator \"variance\" 13 Operator \"add\" 14 Operator \"div\" 15 Operator \"mod\" (Even) 16 Operator \"add\" (Odd) 17 Operator \"mul\" 18 Operator \"sub\" 19 artifacts-artifact-presence-number-absent 20 artifacts-artifact-presence-number-present 21 artifacts-artifact-presence-string-absent 22 artifacts-artifact-presence-string-present 23 artifacts-conditional 24 artifacts-container-presence-absent 25 artifacts-container-presence-present 26 artifacts-default-alternative 27 artifacts-default-alternative-false 28 artifacts-default-condition 29 artifacts-dont-throw-ambiguous-artifact 30 Artifact Pruning 31 artifacts-pruning-managed-manual 32 artifacts-pruning-managed-rules 33 artifacts-pruning-managed-rules-host 34 artifacts-pruning-managed-rules-multiple-different 35 artifacts-pruning-managed-rules-none 36 artifacts-pruning-manged-rules-multiple-same 37 artifacts-required-artifact-constraint-sat 38 artifacts-required-artifact-constraint-sat-pruning 39 artifacts-required-artifact-constraint-unsat 40 artifacts-throw-ambiguous-artifact 41 artifacts-throw-ambiguous-default 42 artifacts-throw-missing-artifact-container 43 artifacts-unique-artifact-constraint-sat-none 44 artifacts-unique-artifact-constraint-sat-one 45 artifacts-unique-artifact-constraint-sat-other 46 artifacts-unique-artifact-constraint-unsat 47 Operator \"and\" Evaluates to \"True\" (Empty) 48 Operator \"and\" Evaluates to \"false\" 49 Operator \"and\" Evaluates to \"false\" (Nested) 50 Operator \"and\" Evaluates to \"true\" 51 Operator \"and\" Evaluates to \"true\" (Nested) 52 Operator \"exo\": all false -> false 53 Operator \"exo\": One ture -> true 54 Operator \"exo\": all true -> false 55 Operator \"implies\": false false -> true 56 Operator \"implies\": false true -> true 57 Operator \"implies\": true false -> false 58 Operator \"implies\": true true -> true 59 Operator \"not\" Evaluates to \"false\" 60 Operator \"not\" Evaluates to \"true\" 61 Operator \"or\" Evaluates to \"False\" (Empty) 62 Operator \"or\" Evaluates to \"False\" 63 Operator \"or\" Evaluates to \"true\" 64 Operator \"or\" Evaluates to \"true\" (All \"true\") 65 circles-alpha 66 circles-bravo 67 circles-charlie 68 circles-delta 69 circles-echo 70 circles-golf 71 circles-hotel 72 circles-india 73 consistency-throw-hosting-relation-missing 74 consistency-throw-hosting-relation-missing-constraint 75 consistency-throw-multiple-hosting-relations 76 consistency-throw-multiple-hosting-relations-constraint 77 consistency-throw-relation-source-missing 78 consistency-throw-relation-target-missing 79 Operator \"equal\" Evaluates to \"false\" 80 Operator \"equal\" Evaluates to \"true\" 81 Operator \"greater_or_equal\" Evaluates to \"true\" (Greater) 82 Operator \"greater_or_equal\" Evaluates to \"true\" (Equal) 83 Operator \"greater_or_equal\" Evaluates to \"false\" (Less) 84 Operator \"greater\" Evaluates to \"false\" (Equal) 85 Operator \"greater\" Evaluates to \"true\" (Greater) 86 Operator \"greater\" Evaluates to \"false\" (Less) 87 Operator \"in_range\" Evaluates to \"false\" 88 Operator \"in_range\" Evaluates to \"true\" 89 Operator \"length\" Evaluates to \"false\" 90 Operator \"length\" Evaluates to \"true\" 91 Operator \"less_or_equal\" Evaluates to \"true\" (Equal) 92 Operator \"less_or_equal\" Evaluates to \"false\" (Greater) 93 Operator \"less_or_equal\" Evaluates to \"true\" (Less) 94 Operator \"less\" Evaluates to \"false\" (Equal) 95 Operator \"less\" Evaluates to \"false\" (Greater) 96 Operator \"less\" Evaluates to \"true\" (Less) 97 Operator \"max_length\" Evaluates to \"true\" (Equal) 98 Operator \"max_length\" Evaluates to \"false\" (Greater) 99 Operator \"max_length\" Evaluates to \"true\" (Less) 100 Operator \"min_length\" Evaluates to \"true\" (Equal) 101 Operator \"min_length\" Evaluates to \"true\" (Greater) 102 Operator \"min_length\" Evaluates to \"false\" (Less) 103 Operator \"valid_values\" Evaluates to \"false\" 104 Operator \"valid_values\" Evaluates to \"true\" 105 date-operators-after-false 106 date-operators-after-or-same-false 107 date-operators-after-or-same-true 108 date-operators-after-true 109 date-operators-before-false 110 date-operators-before-or-same-false 111 date-operators-before-or-same-true 112 date-operators-before-true 113 date-operators-same-false 114 date-operators-same-true 115 date-operators-within-false 116 date-operators-within-true 117 Conditional Group 118 groups-default-condition 119 groups-default-condition-nothing 120 groups-group-presence-absent 121 groups-group-presence-present 122 groups-prune 123 hosting-aware-pruning-constraints-elastic 124 hosting-aware-pruning-constraints-static 125 hosting-aware-pruning-fig-10-broken 126 hosting-aware-pruning-fig-10-fixed 127 hosting-aware-pruning-host-elastic 128 hosting-aware-pruning-host-static 129 hosting-aware-pruning-motivation-elastic 130 hosting-aware-pruning-motivation-static 131 hosting-aware-pruning-provider-elastic 132 hosting-aware-pruning-provider-static 133 hosting-aware-pruning-transitive-ambiguous 134 hosting-aware-pruning-transitive-both 135 hosting-aware-pruning-transitive-preserved 136 hosting-aware-pruning-transitive-unexpected 137 implications-constraints 138 implications-implied-left 139 implications-implied-right 140 implications-implies-left 141 implications-implies-right 142 implications-incoming-left 143 implications-incoming-right 144 implications-motivating-scenario-cloud 145 implications-motivating-scenario-static 146 implications-requires 147 implications-unexpected 148 implications-naive-constraints 149 implications-naive-implied-left 150 implications-naive-implied-right 151 implications-naive-implies-left 152 implications-naive-implies-right 153 implications-naive-incoming-left 154 implications-naive-incoming-right 155 implications-naive-motivating-scenario-cloud 156 implications-naive-motivating-scenario-static 157 implications-naive-naive 158 implications-naive-naive-another 159 implications-naive-naive-another-no-optimization 160 implications-naive-naive-another-not 161 implications-naive-naive-not 162 implications-naive-requires 163 implications-naive-unexpected 164 implied-default-fixed-left 165 implied-default-fixed-right 166 implied-default-manual-left 167 implied-default-manual-right 168 implied-host-broken 169 implied-host-fixed-left 170 implied-host-fixed-right 171 implied-host-manual-left 172 implied-host-manual-right 173 import-conditional 174 import-empty 175 import-get-import-absent 176 import-get-import-present 177 inputs-conditional 178 inputs-conditional-list 179 inputs-default-alternative 180 inputs-input-presence-absent 181 inputs-input-presence-present 182 inputs-pruning-consumed 183 inputs-pruning-consumed-still 184 inputs-pruning-no-consumer 185 inputs-pruning-not-consumed-anymore 186 inputs-pruning-not-consumed-anymore-v3 187 inputs-unique-input-constraint-sat 188 inputs-unique-input-constraint-sat-other 189 inputs-unique-input-constraint-sat-pruning-consumed 190 inputs-unique-input-constraint-sat-pruning-consumed-default 191 inputs-unique-input-constraint-unsat 192 nodes-conditional 193 nodes-conditional-type 194 nodes-conditional-type-default 195 nodes-default-false-false 196 nodes-default-false-true 197 nodes-default-host-absent 198 nodes-default-host-present 199 nodes-default-true-false 200 nodes-default-true-true 201 nodes-host-presence-absent 202 nodes-host-presence-false-false 203 nodes-host-presence-present 204 nodes-host-presence-true-false 205 nodes-host-presence-true-true 206 nodes-host-presence-true-true-constraint 207 nodes-node-presence-absent 208 nodes-node-presence-present 209 nodes-required-incoming-relation-constraint-sat 210 nodes-required-incoming-relation-constraint-unsat 211 nodes-type-specific 212 Benchmark 213 Operator \"concat\" 214 Get Variability Expression 215 Operator \"concat\" 216 other-logic-expression-false 217 other-logic-expression-true 218 other-logic-value-expression 219 other-nothing 220 other-preset 221 other-presets 222 other-throw-CONTAINER 223 other-throw-SELF 224 other-throw-not-unique 225 Operator \"concat\" 226 Get Variability Expression 227 Get Variability Input 228 other-version 229 other-weight 230 outputs-conditional 231 outputs-conditional-list 232 outputs-default 233 outputs-input-presence-absent 234 outputs-input-presence-present 235 outputs-pruning-not-produced-anymore-unfurl-1 236 outputs-pruning-not-produced-anymore-unfurl-2 237 outputs-pruning-not-produced-anymore-xopera 238 outputs-pruning-not-produced-anymore-xopera-v3 239 outputs-pruning-produced-unfurl 240 outputs-pruning-produced-unfurl-attribute 241 outputs-pruning-produced-unfurl-attribute-not 242 outputs-unique-output-constraint-sat 243 outputs-unique-output-constraint-sat-default 244 outputs-unique-output-constraint-sat-other 245 outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera 246 outputs-unique-output-constraint-sat-pruning-produced-xopera 247 outputs-unique-output-constraint-unsat 248 persistent-persistent 249 persistent-persistent-false 250 persistent-persistent-throw 251 persistent-persistent-undefined 252 policies-conditional 253 policies-default-condition 254 policies-default-condition-nothing 255 Policy Targets Absent Members 256 Policy Targets Absent Nodes 257 Policy Has No Targets 258 Policy Targets Present Member 259 Policy Targets One Present Node 260 Policy Targets Present Nodes 261 policies-policy-presence-absent 262 policies-policy-presence-present 263 Policy Pruning 264 properties-artifact-container-presence-absent 265 properties-artifact-container-presence-present 266 properties-conditional 267 properties-default-alternative 268 properties-default-alternative-false 269 properties-default-condition 270 properties-expression 271 properties-list 272 properties-list-another 273 properties-map 274 properties-map-another 275 properties-node-container-presence-absent 276 properties-node-container-presence-present 277 properties-node-node-presence-CONTAINER-absent 278 properties-node-node-presence-CONTAINER-present 279 properties-node-property-presence-number-absent 280 properties-node-property-presence-number-present 281 properties-node-property-presence-string-absent 282 properties-node-property-presence-string-present 283 properties-properties 284 properties-relation-container-presence-absent 285 properties-relation-container-presence-present 286 properties-throw-ambiguous-property 287 properties-throw-missing-property-container 288 properties-throw-multiple-default 289 properties-unique-property-constraint-sat 290 properties-unique-property-constraint-unsat 291 pruning-alpha-default 292 pruning-alpha-default-naive 293 pruning-alpha-pruning 294 pruning-artifact-default-alpha 295 pruning-artifact-default-bravo 296 pruning-artifact-default-charlie 297 pruning-artifact-default-delta 298 pruning-artifact-default-naive 299 pruning-bravo-default 300 pruning-bravo-pruning 301 pruning-charlie-default 302 pruning-charlie-pruning 303 pruning-delta-default 304 pruning-delta-pruning 305 pruning-echo-default 306 pruning-echo-pruning 307 pruning-foxtrott-default 308 pruning-foxtrott-pruning 309 pruning-hotel-default 310 pruning-hotel-pruning 311 pruning-incoming-artifact-pruning-alpha 312 pruning-incoming-artifact-pruning-bravo 313 pruning-incoming-artifact-pruning-charlie 314 pruning-incoming-artifact-pruning-delta 315 pruning-incoming-artifact-pruning-echo 316 pruning-incoming-artifact-pruning-foxtrott 317 pruning-incoming-artifact-pruning-golf 318 pruning-incoming-artifact-pruning-hotel 319 pruning-incoming-artifact-pruning-naive-alpha 320 pruning-incoming-artifact-pruning-naive-bravo 321 pruning-india-default 322 pruning-india-pruning 323 pruning-juliett-default 324 pruning-juliett-pruning 325 pruning-kilo-default 326 pruning-kilo-pruning 327 pruning-lima-default 328 pruning-lima-pruning 329 pruning-mike-default 330 pruning-mike-pruning 331 pruning-outgoing-relation-absent 332 pruning-outgoing-relation-present 333 pruning-outgoing-target-absent 334 pruning-outgoing-target-present 335 pruning-outgoingnaive-target-present 336 pruning-pruning 337 pruning-pruning-false-false 338 pruning-pruning-false-true 339 pruning-pruning-true-false 340 pruning-pruning-true-true 341 Relation Pruning 342 relationships-conditional 343 relationships-throw-multiple 344 relationships-throw-undefined 345 relationships-throw-unused 346 relationships-type-specific 347 requirement-assignment-conditional 348 requirement-assignment-default-alternative 349 requirement-assignment-default-alternative-false 350 requirement-assignment-default-condition 351 requirement-assignment-default-condition-throw-source 352 requirement-assignment-default-condition-throw-target 353 requirement-assignment-one-hosting-relation 354 requirement-assignment-relation-presence-index-absent 355 requirement-assignment-relation-presence-name-absent 356 requirement-assignment-source-presence-absent 357 requirement-assignment-source-presence-present 358 requirement-assignment-target-presence-absent 359 requirement-assignment-target-presence-present 360 requirement-assignment-throw-multiple-defaults 361 Scenario \"Alpha\" 362 scenario-worker-agent-false 363 scenario-worker-agent-true 364 scenario-worker-worker-false 365 scenario-worker-worker-true 366 technologies-ambiguous 367 technologies-ambiguous-disabled 368 technologies-conditional 369 technologies-constraint 370 technologies-constraint-disabled 371 technologies-default-multiple 372 technologies-default-true 373 technologies-expected 374 technologies-expected-disabled 375 technologies-lowercase 376 technologies-missing 377 technologies-missing-disabled 378 technologies-optimization 379 technologies-optimization-double 380 technologies-optimization-order 381 technologies-optimization-unsat 382 technologies-optimization-weight 383 technologies-pruning 384 technologies-pruning-disabled 385 technologies-rules 386 technologies-rules-v3 387 technologies-throw-required 388 technologies-unique 389 technologies-unique-disabled 390 variability-inputs-implies 391 variability-inputs-no-constraints","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#reference-implementation","title":"Reference Implementation","text":"We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#acknowledgments","title":"Acknowledgments","text":"This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#correspondence","title":"Correspondence","text":"Please address all correspondence concerning this specification to Miles St\u00f6tzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/introduction/#disclaimer-of-warranty","title":"Disclaimer of Warranty","text":"Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/tests/test-analytical-operators-count/","title":"Operator \"count\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-count/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ncount:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-count/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/","title":"Operator \"exponential_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nexponential_regression:\n- - - 0\n- 1\n- - 1\n- 2.72\n- - 2\n- 7.39\n- - 3\n- 20.09\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-exponential_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 54.6\n
"},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/","title":"Operator \"variance\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlinear_regression:\n- - - 0\n- 0\n- - 1\n- 2\n- - 2\n- 4\n- 100\n
"},{"location":"variability4tosca/tests/test-analytical-operators-linear_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 200\n
"},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/","title":"Operator \"logarithmic_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlogarithmic_regression:\n- - - 0.01\n- -4.61\n- - 0.5\n- -0.7\n- - 1\n- 0\n- - 2\n- 0.69\n- - 3\n- 1\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-logarithmic_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.34\n
"},{"location":"variability4tosca/tests/test-analytical-operators-max/","title":"Operator \"max\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-max/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-max/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-mean/","title":"Operator \"mean\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-mean/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmean:\n- 1\n- 2\n- 3\n- 4\n- 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-mean/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-median/","title":"Operator \"median\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-median/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmedian:\n- 1\n- 2\n- 3\n- 4\n- 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-median/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 3\n
"},{"location":"variability4tosca/tests/test-analytical-operators-min/","title":"Operator \"min\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-min/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-min/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/","title":"Operator \"polynomial_regression\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\npolynomial_regression:\n- - - 0\n- 0\n- - 1\n- 1\n- - 2\n- 4\n- 2\n- 5\n
"},{"location":"variability4tosca/tests/test-analytical-operators-polynomial_regression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 25\n
"},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/","title":"Operator \"standard_deviation\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nstandard_deviation:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-standard_deviation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.12\n
"},{"location":"variability4tosca/tests/test-analytical-operators-sum/","title":"Operator \"sum\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-sum/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsum:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-sum/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 10\n
"},{"location":"variability4tosca/tests/test-analytical-operators-variance/","title":"Operator \"variance\"","text":""},{"location":"variability4tosca/tests/test-analytical-operators-variance/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariance:\n- 1\n- 2\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-analytical-operators-variance/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1.25\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/","title":"Operator \"add\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nadd:\n- 10\n- 1\n- 1\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-add/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 15\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/","title":"Operator \"div\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ndiv:\n- 10\n- 1\n- 2\n- 5\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-div/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/","title":"Operator \"mod\" (Even)","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmod:\n- 10\n- 2\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-even/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 0\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/","title":"Operator \"add\" (Odd)","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmod:\n- 11\n- 2\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mod-odd/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/","title":"Operator \"mul\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmul:\n- 10\n- 1\n- 3\n- 4\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-mul/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 120\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/","title":"Operator \"sub\"","text":""},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#description","title":"Description","text":"Assigns the value of the expression to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsub:\n- 10\n- 1\n- 1\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-arithmetic-operators-sub/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: 5\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/","title":"artifacts-artifact-presence-number-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- 0\nartifacts:\nartifact_one:\nconditions: false\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/","title":"artifacts-artifact-presence-number-present","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- 0\nartifacts:\nartifact_one:\nconditions: true\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-number-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/","title":"artifacts-artifact-presence-string-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- artifact_one\nartifacts:\nartifact_one:\nconditions: false\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/","title":"artifacts-artifact-presence-string-present","text":""},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nartifact_presence:\n- container\n- artifact_one\nartifacts:\nartifact_one:\nconditions: true\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-artifact-presence-string-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-conditional/","title":"artifacts-conditional","text":""},{"location":"variability4tosca/tests/test-artifacts-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_artifact_check: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\nconditions: true\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/","title":"artifacts-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nartifacts:\nartifact_one:\nconditions:\ncontainer_presence: SELF\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/","title":"artifacts-container-presence-present","text":""},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions:\ncontainer_presence: SELF\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/","title":"artifacts-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: false\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative/","title":"artifacts-default-alternative","text":""},{"location":"variability4tosca/tests/test-artifacts-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\nconditions: false\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_three:\ntype: node\nartifacts:\nartifact_three_one:\ntype: artifact\nnode_four:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-condition/","title":"artifacts-default-condition","text":""},{"location":"variability4tosca/tests/test-artifacts-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_two_one:\ntype: artifact\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/","title":"artifacts-dont-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#description","title":"Description","text":"Artifacts are not ambiguous since unique check is based on name scoped by node.
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\nnode_two:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-prune/","title":"Artifact Pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_two_one:\ntype: artifact\nconditions: true\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/","title":"artifacts-pruning-managed-manual","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nweight: 1\n- component: application\ntechnology: ansible\nartifact: second.artifact.type\nweight: 1\nnode_templates:\napplication:\ntype: application\npersistent: true\ntechnology:\n- ansible:\nartifact: second.artifact.type\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nconditions: false\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-manual/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#second.artifact.type::ansible\nartifacts:\nsecond_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/","title":"artifacts-pruning-managed-rules-host","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#description","title":"Description","text":"Pruning via rules also works if no host is present. In this case, the technology and the artifact form a circle, while the application provides the presence impulse since its persistent.
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: terraform\nartifact: second.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-host/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/","title":"artifacts-pruning-managed-rules-multiple-different","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: terraform\nartifact: first.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/","title":"artifacts-pruning-managed-rules-none","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#description","title":"Description","text":"No rule support artifact \"second_artifact_type\". Hence it is removed since empty \"or\" is assigned which evaluates to false
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/","title":"artifacts-pruning-managed-rules","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nweight: 1\n- component: application\ntechnology: terraform\nartifact: second.artifact.type\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-managed-rules/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/","title":"artifacts-pruning-manged-rules-multiple-same","text":""},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 1\n- component: application\ntechnology: ansible\nartifact: first.artifact.type\nhosting:\n- host\nweight: 0\nnode_templates:\napplication:\ntype: application\npersistent: true\nartifacts:\n- first_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact_type:\ntype: second.artifact.type\nfile: second_artifact_file\nrequirements:\n- host: host\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nartifact_types:\nfirst.artifact.type:\nderived_from: tosca.artifacts.Root\nsecond.artifact.type:\nderived_from: tosca.artifacts.Root\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nhost:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ntopology_template:\nnode_templates:\napplication:\ntype: application~application#first.artifact.type::ansible@host\nrequirements:\n- host: host\nartifacts:\nfirst_artifact_type:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/","title":"artifacts-required-artifact-constraint-sat-pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: true\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/","title":"artifacts-required-artifact-constraint-sat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/","title":"artifacts-required-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/","title":"artifacts-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Artifact \"artifact_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/","title":"artifacts-throw-ambiguous-default","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Artifact \"artifact_one_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/","title":"artifacts-throw-missing-artifact-container","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of artifact \"artifact_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/","title":"artifacts-unique-artifact-constraint-sat-none","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#description","title":"Description","text":"Unique artifact constraints is SAT since no artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nchecks: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/","title":"artifacts-unique-artifact-constraint-sat-one","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#description","title":"Description","text":"Unique artifact constraints is SAT since one artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/","title":"artifacts-unique-artifact-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#description","title":"Description","text":"Unique artifact constraints is SAT since the other one artifact is present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/","title":"artifacts-unique-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#description","title":"Description","text":"Unique artifact constraints is UNSAT since two artifacts with same name of same container are present.
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/","title":"Operator \"and\" Evaluates to \"True\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/","title":"Operator \"and\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- false\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/","title":"Operator \"and\" Evaluates to \"false\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/","title":"Operator \"and\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/","title":"Operator \"and\" Evaluates to \"true\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/","title":"Operator \"exo\": all false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/","title":"Operator \"exo\": all true -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/","title":"Operator \"exo\": One ture -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/","title":"Operator \"implies\": false false -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/","title":"Operator \"implies\": false true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/","title":"Operator \"implies\": true false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/","title":"Operator \"implies\": true true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/","title":"Operator \"not\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/","title":"Operator \"not\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/","title":"Operator \"or\" Evaluates to \"False\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/","title":"Operator \"or\" Evaluates to \"False\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/","title":"Operator \"or\" Evaluates to \"true\" (All \"true\")","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/","title":"Operator \"or\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- true\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-circles-alpha/","title":"circles-alpha","text":""},{"location":"variability4tosca/tests/test-circles-alpha/#description","title":"Description","text":"node and relation defaults are enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
if node_one is absent, then also node_two and relation_one are absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-bravo/","title":"circles-bravo","text":""},{"location":"variability4tosca/tests/test-circles-bravo/#description","title":"Description","text":"node and relation defaults are enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
node_one is present since true is assigned as condition
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-charlie/","title":"circles-charlie","text":""},{"location":"variability4tosca/tests/test-circles-charlie/#description","title":"Description","text":"(node_one <=> node_two && node_two <=> !node_one) is contradiction
"},{"location":"variability4tosca/tests/test-circles-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnot:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-charlie/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-circles-delta/","title":"circles-delta","text":""},{"location":"variability4tosca/tests/test-circles-delta/#description","title":"Description","text":"node and relation defaults are enabled
node_one is present
node_two checks if node_one is NOT present (second circle)
since node_one is present, node_two is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions:\nnot:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-circles-echo/","title":"circles-echo","text":""},{"location":"variability4tosca/tests/test-circles-echo/#description","title":"Description","text":"node and relation pruning is enabled
node_one checks if relation_one is present
node_two checks if node_one is present (second circle)
if node_one is absent, then also node_two and relation_one are absent
since the solution is optimized towards minimal numbers of nodes, the expected template is empty
note, this is the same behaviour as if only node and relation defaults would have been enabled
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-echo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-golf/","title":"circles-golf","text":""},{"location":"variability4tosca/tests/test-circles-golf/#description","title":"Description","text":"node and relation pruning is enabled
node_one checks if relation_two_one or relation_three_one is present
node_three is absent
expected template is empty wrt optimization
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-golf/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-hotel/","title":"circles-hotel","text":""},{"location":"variability4tosca/tests/test-circles-hotel/#description","title":"Description","text":"node and relation pruning is enabled
only node_three is present since pruning does not hold since node_three has no incoming relation in the first place
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-circles-hotel/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-circles-india/","title":"circles-india","text":""},{"location":"variability4tosca/tests/test-circles-india/#description","title":"Description","text":"relation defaults (NOT pruning) is enabled
since node_three is present, relation_three_one is present (condition is not overridden by pruning since relation pruning is not enabled)
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions:\nnode_presence: node_one\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nrequirements:\n- relation_three_one:\nnode: node_one\nconditions:\nsource_presence: SELF\n
"},{"location":"variability4tosca/tests/test-circles-india/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nrequirements:\n- relation_two_one: node_one\nnode_three:\ntype: node_three\nrequirements:\n- relation_three_one: node_one\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/","title":"consistency-throw-hosting-relation-missing-constraint","text":""},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nhosting_stack_constraint: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: false\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/","title":"consistency-throw-hosting-relation-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nconstraints: false\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: false\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-hosting-relation-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"one\" expected to have a hosting relation\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/","title":"consistency-throw-multiple-hosting-relations-constraint","text":""},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nconstraints: false\noptimization_topology: false\nhosting_stack_constraint: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\n- host:\nnode: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/","title":"consistency-throw-multiple-hosting-relations","text":""},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nconstraints: false\noptimization_topology: false\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\n- host:\nnode: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-multiple-hosting-relations/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"one\" has more than one hosting relations\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/","title":"consistency-throw-relation-source-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nconditions: false\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-source-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation target \"two\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/","title":"consistency-throw-relation-target-missing","text":""},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-consistency-throw-relation-target-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation source \"one\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/","title":"Operator \"equal\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since not all parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nequal:\n- 1\n- 1\n- 2\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/","title":"Operator \"equal\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since all parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nequal:\n- 1\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-equal-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/","title":"Operator \"greater_or_equal\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/","title":"Operator \"greater_or_equal\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/","title":"Operator \"greater_or_equal\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is less than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater_or_equal:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-or-equal-less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/","title":"Operator \"greater\" Evaluates to \"false\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/","title":"Operator \"greater\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the second parameter is greater than the first parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/","title":"Operator \"greater\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is less than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ngreater:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-greater-than-less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/","title":"Operator \"in_range\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter is not in range.
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nin_range:\n- 2\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/","title":"Operator \"in_range\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter is in range.
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nin_range:\n- 1\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-in_range_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/","title":"Operator \"length\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter has not expected length.
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlength:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/","title":"Operator \"length\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter has expected length.
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nlength:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-length_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/","title":"Operator \"less_or_equal\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/","title":"Operator \"less_or_equal\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/","title":"Operator \"less_or_equal\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is less than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless_or_equal:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_or_equal_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/","title":"Operator \"less\" Evaluates to \"false\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since both parameters are equal.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 1\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/","title":"Operator \"less\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the first parameter is greater than the second parameter.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 2\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/","title":"Operator \"less\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the first parameter is less than the second.
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nless:\n- 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-less_than_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/","title":"Operator \"max_length\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has exactly 5 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/","title":"Operator \"max_length\" Evaluates to \"false\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has more than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/","title":"Operator \"max_length\" Evaluates to \"true\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has less than 6 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmax_length:\n- hallo\n- 6\n
"},{"location":"variability4tosca/tests/test-constraint-operators-max_length_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/","title":"Operator \"min_length\" Evaluates to \"true\" (Equal)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has exactly 5 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 5\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_equal/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/","title":"Operator \"min_length\" Evaluates to \"true\" (Greater)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has more than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 4\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_greater/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/","title":"Operator \"min_length\" Evaluates to \"false\" (Less)","text":""},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter \"hallo\" has less than 4 characters.
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nmin_length:\n- hallo\n- 6\n
"},{"location":"variability4tosca/tests/test-constraint-operators-min_length_less/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/","title":"Operator \"valid_values\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#description","title":"Description","text":"Assigns \"false\" to the property \"value\" of the node \"container\" since the parameter is not a valid value.
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalid_values:\n- 2\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/","title":"Operator \"valid_values\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#description","title":"Description","text":"Assigns \"true\" to the property \"value\" of the node \"container\" since the parameter is a valid value.
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalid_values:\n- 1\n- - 0\n- 1\n
"},{"location":"variability4tosca/tests/test-constraint-operators-valid_values_true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-after-false/","title":"date-operators-after-false","text":""},{"location":"variability4tosca/tests/test-date-operators-after-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/","title":"date-operators-after-or-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/","title":"date-operators-after-or-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-or-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-after-true/","title":"date-operators-after-true","text":""},{"location":"variability4tosca/tests/test-date-operators-after-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nafter:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-after-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-before-false/","title":"date-operators-before-false","text":""},{"location":"variability4tosca/tests/test-date-operators-before-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/","title":"date-operators-before-or-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2022-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/","title":"date-operators-before-or-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore_or_same:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-or-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-before-true/","title":"date-operators-before-true","text":""},{"location":"variability4tosca/tests/test-date-operators-before-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nbefore:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-before-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-same-false/","title":"date-operators-same-false","text":""},{"location":"variability4tosca/tests/test-date-operators-same-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsame:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-same-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-same-true/","title":"date-operators-same-true","text":""},{"location":"variability4tosca/tests/test-date-operators-same-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nsame:\n- 2023-01-01T00:00:00.000Z\n- 2023-01-01T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-same-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-date-operators-within-false/","title":"date-operators-within-false","text":""},{"location":"variability4tosca/tests/test-date-operators-within-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nwithin:\n- 2023-01-04T00:00:00.000Z\n- - 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-within-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: false\n
"},{"location":"variability4tosca/tests/test-date-operators-within-true/","title":"date-operators-within-true","text":""},{"location":"variability4tosca/tests/test-date-operators-within-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nwithin:\n- 2023-01-02T00:00:00.000Z\n- - 2023-01-01T00:00:00.000Z\n- 2023-01-03T00:00:00.000Z\n
"},{"location":"variability4tosca/tests/test-date-operators-within-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: true\n
"},{"location":"variability4tosca/tests/test-groups-conditional/","title":"Conditional Group","text":""},{"location":"variability4tosca/tests/test-groups-conditional/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- vm\nconditions: false\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/","title":"groups-default-condition-nothing","text":""},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#description","title":"Description","text":"Group \"group_three\" is not removed since its conditions are \"true\".
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nconditions: true\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-default-condition-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\ngroup_three:\ntype: tosca.groups.Root\nmembers: []\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-default-condition/","title":"groups-default-condition","text":""},{"location":"variability4tosca/tests/test-groups-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ngroup_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-absent/","title":"groups-group-presence-absent","text":""},{"location":"variability4tosca/tests/test-groups-group-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\ngroup_presence: group_one\ngroups:\ngroup_one:\ntype: group_one\nconditions: false\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-present/","title":"groups-group-presence-present","text":""},{"location":"variability4tosca/tests/test-groups-group-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\ngroup_presence: group_one\ngroups:\ngroup_one:\ntype: group_one\nconditions: true\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-group-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\ngroups:\ngroup_one:\ntype: group_one\nmembers: []\n
"},{"location":"variability4tosca/tests/test-groups-prune/","title":"groups-prune","text":""},{"location":"variability4tosca/tests/test-groups-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ngroup_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\ngroups:\ngroup_one:\ntype: variability.groups.ConditionalMembers\nmembers:\n- magic\n- - magic\n- 0\n- - application\n- magic\nconditions: false\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\n- magic\ngroup_three:\ntype: tosca.groups.Root\nmembers:\n- magic\nconditions: true\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- magic: magic\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\nmagic:\ntype: magic\nrequirements:\n- magic: application\n
"},{"location":"variability4tosca/tests/test-groups-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_two:\ntype: tosca.groups.Root\nmembers:\n- container\nnode_templates:\napplication:\ntype: docker.container.application\nrequirements:\n- host: container\n- more: another_application\ncontainer:\ntype: docker.container\nrequirements:\n- host: engine\nengine:\ntype: docker.engine\nrequirements:\n- host: vm\nanother_application:\ntype: another.application\nrequirements:\n- host: another_runtime\nanother_runtime:\ntype: another.runtime\nrequirements:\n- host: vm\nvm:\ntype: openstack.vm\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/","title":"hosting-aware-pruning-constraints-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\nimplied: true\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nimplied: true\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-elastic/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: gcp_database\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/","title":"hosting-aware-pruning-constraints-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\nimplied: true\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nimplied: true\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-constraints-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/","title":"hosting-aware-pruning-fig-10-broken","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-artifact-host\noptimization_topology: min\noptimization_topology_unique: false\nhosting_stack_constraint: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- host: elastic\n- host: static\n- database:\nnode: database\nimplied: true\ndatabase:\ntype: database\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-broken/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/","title":"hosting-aware-pruning-fig-10-fixed","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-artifact-host\noptimization_topology: min\noptimization_topology_unique: false\nhosting_stack_constraint: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- host: elastic\n- host: static\n- database:\nnode: database\nimplied: true\ndatabase:\ntype: database\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-fig-10-fixed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- host: elastic\n- database: database\ndatabase:\ntype: database\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/","title":"hosting-aware-pruning-host-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-elastic/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/","title":"hosting-aware-pruning-host-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nconditions:\nlogic_expression: is_elastic\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-host-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/","title":"hosting-aware-pruning-motivation-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: false\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-elastic/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: gcp_database\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/","title":"hosting-aware-pruning-motivation-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/#description","title":"Description","text":"alternative is to model 2 conditions at the direct hosts
2 conditions at shop database connections
alternative is to model 2 conditions at the databases directly
1 condition at monitor
required, since incoming pruning of monitor host is not triggered
5 conditions in total
hosting_stack_constraint has no effect
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: false\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: os_database\nconditions:\nlogic_expression: is_static\n- database:\nnode: gcp_database\nconditions:\nlogic_expression: is_elastic\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nconditions:\nlogic_expression: is_static\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/","title":"hosting-aware-pruning-provider-elastic","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\nconditions:\nlogic_expression: is_static\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\nconditions:\nlogic_expression: is_elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-elastic/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/","title":"hosting-aware-pruning-provider-static","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#description","title":"Description","text":"-
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: false\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_compute\n- host:\nnode: gcp_runtime\n- database:\nnode: os_database\n- database:\nnode: gcp_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\nconditions:\nlogic_expression: is_static\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_database:\ntype: gcp.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.provider\nconditions:\nlogic_expression: is_elastic\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-provider-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_compute\n- database: os_database\nos_database:\ntype: os.database\nrequirements:\n- host: os_compute\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os.provider\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/","title":"hosting-aware-pruning-transitive-ambiguous","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: false\noptimization_topology: false\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-ambiguous/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/","title":"hosting-aware-pruning-transitive-both","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/","title":"hosting-aware-pruning-transitive-preserved","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology_unique: true\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/","title":"hosting-aware-pruning-transitive-unexpected","text":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/#description","title":"Description","text":"circle at agent
pruned due to optimization
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: false\noptimization_topology: true\noptimization_topology_unique: true\nexpected_hosting_check: false\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implications-constraints/","title":"implications-constraints","text":""},{"location":"variability4tosca/tests/test-implications-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: false\noptimization_topology_unique: true\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\nconstraints:\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_host\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_host\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- dev_database:\nnode: dev_database\n- dev_host:\nnode: dev_host\n- prod_database:\nnode: prod_database\n- prod_host:\nnode: prod_host\ndev_database:\ntype: dev_database\nrequirements:\n- host: dev_host\ndev_host:\ntype: dev_host\nrequirements:\n- host:\nnode: dev_cloud\ndev_cloud:\ntype: dev_cloud\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host:\nnode: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- prod_database: prod_database\n- prod_host: prod_host\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-implied-left/","title":"implications-implied-left","text":""},{"location":"variability4tosca/tests/test-implications-implied-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-right/","title":"implications-implied-right","text":""},{"location":"variability4tosca/tests/test-implications-implied-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implied-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-left/","title":"implications-implies-left","text":""},{"location":"variability4tosca/tests/test-implications-implies-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-right/","title":"implications-implies-right","text":""},{"location":"variability4tosca/tests/test-implications-implies-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-implies-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-incoming-left/","title":"implications-incoming-left","text":""},{"location":"variability4tosca/tests/test-implications-incoming-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-incoming-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\n
"},{"location":"variability4tosca/tests/test-implications-incoming-right/","title":"implications-incoming-right","text":""},{"location":"variability4tosca/tests/test-implications-incoming-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-incoming-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/","title":"implications-motivating-scenario-cloud","text":""},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-cloud/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/","title":"implications-motivating-scenario-static","text":""},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-motivating-scenario-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_kubernetes\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: os_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-constraints/","title":"implications-naive-constraints","text":""},{"location":"variability4tosca/tests/test-implications-naive-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\nconstraints:\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_host\n- implies:\n- logic_expression: is_static\n- relation_presence:\n- worker\n- dev_database\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_host\n- implies:\n- logic_expression: is_elastic\n- relation_presence:\n- worker\n- prod_database\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- dev_database:\nnode: dev_database\n- dev_host:\nnode: dev_host\n- prod_database:\nnode: prod_database\n- prod_host:\nnode: prod_host\ndev_database:\ntype: dev_database\nrequirements:\n- host: dev_host\ndev_host:\ntype: dev_host\nrequirements:\n- host:\nnode: dev_cloud\ndev_cloud:\ntype: dev_cloud\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host:\nnode: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- prod_database: prod_database\n- prod_host: prod_host\nprod_database:\ntype: prod_database\nrequirements:\n- host: prod_host\nprod_host:\ntype: prod_host\nrequirements:\n- host: prod_cloud\nprod_cloud:\ntype: prod_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-left/","title":"implications-naive-implied-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-implied-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-right/","title":"implications-naive-implied-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-implied-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implied-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-left/","title":"implications-naive-implies-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-implies-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-right/","title":"implications-naive-implies-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-implies-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nimplies:\n- - relation_presence:\n- SELF\n- left\n- logic_expression: is_left\n- - relation_presence:\n- SELF\n- right\n- logic_expression: is_right\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-implies-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/","title":"implications-naive-incoming-left","text":""},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- left: left\nleft:\ntype: left\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/","title":"implications-naive-incoming-right","text":""},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-incoming-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- right: right\nright:\ntype: right\nrequirements:\n- host: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/","title":"implications-naive-motivating-scenario-cloud","text":""},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-cloud/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: gcp_runtime\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: gcp_dbms\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/","title":"implications-naive-motivating-scenario-static","text":""},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nstatic:\ntype: boolean\ndefault: true\npresets:\nstatic:\ninputs:\nstatic: true\nelastic:\ninputs:\nstatic: false\nexpressions:\nis_static:\nequal:\n- variability_input: static\n- true\nis_elastic:\nequal:\n- variability_input: static\n- false\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\nnode_templates:\nshop:\ntype: shop.component\npersistent: true\nrequirements:\n- host:\nnode: os_kubernetes\nconditions:\nlogic_expression: is_static\n- host:\nnode: gcp_runtime\nconditions:\nlogic_expression: is_elastic\n- database:\nnode: database\nconditions: true\nimplied: true\ndatabase:\ntype: shop.database\nrequirements:\n- host:\nnode: os_dbms\n- host:\nnode: gcp_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\ngcp_dbms:\ntype: gcp.dbms\nrequirements:\n- host: gcp_cloud\ngcp_runtime:\ntype: gcp.runtime\nrequirements:\n- host: gcp_cloud\ngcp_cloud:\ntype: gcp.cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-motivating-scenario-static/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nshop:\ntype: shop.component\nrequirements:\n- host: os_kubernetes\n- database: database\ndatabase:\ntype: shop.database\nrequirements:\n- host: os_dbms\nos_dbms:\ntype: os.dbms\nrequirements:\n- host: os_kubernetes\nos_monitor:\ntype: os.monitor\nrequirements:\n- host: os_kubernetes\nos_logger:\ntype: os.logger\nrequirements:\n- host: os_kubernetes\nos_kubernetes:\ntype: os.kubernetes\nrequirements:\n- host: os_compute\nos_compute:\ntype: os.compute\nrequirements:\n- host: os_cloud\nos_cloud:\ntype: os_cloud\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/","title":"implications-naive-naive-another-no-optimization","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: false\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-no-optimization/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- database: database\n- host: static\ndatabase:\ntype: database\nrequirements:\n- host: static\nstatic:\ntype: static\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/","title":"implications-naive-naive-another-not","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another-not/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another/","title":"implications-naive-naive-another","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\napp:\ntype: app\npersistent: true\nrequirements:\n- database:\nnode: database\nimplied: true\n- host:\nnode: static\n- host:\nnode: elastic\ndatabase:\ntype: database\nrequirements:\n- host:\nnode: static\nstatic:\ntype: static\nelastic:\ntype: elastic\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napp:\ntype: app\nrequirements:\n- database: database\n- host: static\ndatabase:\ntype: database\nrequirements:\n- host: static\nstatic:\ntype: static\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-not/","title":"implications-naive-naive-not","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: dev_host\n- host:\nnode: prod_host\ndev_host:\ntype: dev_host\nprod_host:\ntype: prod_host\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive-not/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive/","title":"implications-naive-naive","text":""},{"location":"variability4tosca/tests/test-implications-naive-naive/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: dev_host\n- host:\nnode: prod_host\ndev_host:\ntype: dev_host\nprod_host:\ntype: prod_host\n
"},{"location":"variability4tosca/tests/test-implications-naive-naive/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (besides optimization)\n
"},{"location":"variability4tosca/tests/test-implications-naive-requires/","title":"implications-naive-requires","text":""},{"location":"variability4tosca/tests/test-implications-naive-requires/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nconditions: false\nright:\ntype: right\nrequirements:\n- far_right: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-naive-requires/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-naive-unexpected/","title":"implications-naive-unexpected","text":""},{"location":"variability4tosca/tests/test-implications-naive-unexpected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-naive-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implications-requires/","title":"implications-requires","text":""},{"location":"variability4tosca/tests/test-implications-requires/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\ndefault: left\npresets:\nleft:\ninputs:\nmode: left\nright:\ninputs:\nmode: right\nexpressions:\nis_left:\nequal:\n- variability_input: mode\n- left\nis_right:\nequal:\n- variability_input: mode\n- right\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left:\nnode: left\nconditions:\nlogic_expression: is_left\nimplied: true\n- right:\nnode: right\nconditions:\nlogic_expression: is_right\nimplied: true\nleft:\ntype: left\nconditions: false\nright:\ntype: right\nrequirements:\n- far_right: far_right\nfar_right:\ntype: far.right\n
"},{"location":"variability4tosca/tests/test-implications-requires/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implications-unexpected/","title":"implications-unexpected","text":""},{"location":"variability4tosca/tests/test-implications-unexpected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incoming-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_topology_unique: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- left: left\n- right: right\nleft:\ntype: left\nrequirements:\n- host: left_host\nleft_host:\ntype: left.host\nrequirements:\n- host: left_host_host\nleft_host_host:\ntype: left.host.host\nright:\ntype: right\nrequirements:\n- host: right_host\nright_host:\ntype: right.host\n
"},{"location":"variability4tosca/tests/test-implications-unexpected/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/","title":"implied-default-fixed-left","text":""},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\n- connection:\nnode: right\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: left\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/","title":"implied-default-fixed-right","text":""},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\n- connection:\nnode: right\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-default-fixed-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: right\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/","title":"implied-default-manual-left","text":""},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\nimplied: false\n- connection:\nnode: right\nimplied: false\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: left\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/","title":"implied-default-manual-right","text":""},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nexpected_incoming_relation_check: false\nrequired_incoming_relation_constraint: false\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- connection:\nnode: left\nconditions:\nlogic_expression: is_l\nimplied: false\n- connection:\nnode: right\nimplied: false\ndefault_alternative: true\nright:\ntype: Right\npersistent: true\nleft:\ntype: Left\npersistent: true\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-default-manual-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- connection: right\nright:\ntype: Right\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/","title":"implied-host-broken","text":""},{"location":"variability4tosca/tests/test-implied-host-broken/#description","title":"Description","text":"Only one hosting relation must be present. Hence, there is a conflict between implied relations and hosting constraints.
"},{"location":"variability4tosca/tests/test-implied-host-broken/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: true\n- host:\nnode: right\nimplied: true\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-broken/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/","title":"implied-host-fixed-left","text":""},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host: left\n- host: right\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/","title":"implied-host-fixed-right","text":""},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host: left\n- host: right\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-fixed-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/","title":"implied-host-manual-left","text":""},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: false\n- host:\nnode: right\nimplied: false\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: true\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-left/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: left\nleft:\ntype: Left\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/","title":"implied-host-manual-right","text":""},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_2\ntopology_template:\nvariability:\ninputs:\nl:\ntype: boolean\nexpressions:\nis_l:\nequal:\n- variability_input: l\n- true\nis_r:\nequal:\n- variability_input: l\n- false\noptions:\nenrich_technologies: false\nnode_templates:\napplication:\ntype: Application\npersistent: true\nrequirements:\n- host:\nnode: left\nimplied: false\n- host:\nnode: right\nimplied: false\nright:\ntype: Right\nconditions:\nlogic_expression: is_r\nleft:\ntype: Left\nconditions:\nlogic_expression: is_l\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
l: false\n
"},{"location":"variability4tosca/tests/test-implied-host-manual-right/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\napplication:\ntype: Application\nrequirements:\n- host: right\nright:\ntype: Right\n
"},{"location":"variability4tosca/tests/test-import-conditional/","title":"import-conditional","text":""},{"location":"variability4tosca/tests/test-import-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: true\n- file: another_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-import-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- some_file\n
"},{"location":"variability4tosca/tests/test-import-empty/","title":"import-empty","text":""},{"location":"variability4tosca/tests/test-import-empty/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: false\n- file: another_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-import-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-import-get-import-absent/","title":"import-get-import-absent","text":""},{"location":"variability4tosca/tests/test-import-get-import-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: false\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimport_presence: 0\n
"},{"location":"variability4tosca/tests/test-import-get-import-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-import-get-import-present/","title":"import-get-import-present","text":""},{"location":"variability4tosca/tests/test-import-get-import-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nimports:\n- file: some_file\nconditions: true\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimport_presence: 0\n
"},{"location":"variability4tosca/tests/test-import-get-import-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nimports:\n- some_file\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-inputs-conditional-list/","title":"inputs-conditional-list","text":""},{"location":"variability4tosca/tests/test-inputs-conditional-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\n- one:\ntype: string\n- two:\ntype: string\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-inputs-conditional-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-conditional/","title":"inputs-conditional","text":""},{"location":"variability4tosca/tests/test-inputs-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\none:\ntype: string\ntwo:\ntype: string\nconditions: false\nthree:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-inputs-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-default-alternative/","title":"inputs-default-alternative","text":""},{"location":"variability4tosca/tests/test-inputs-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\n- one:\ntype: a\ndefault_alternative: true\n- one:\ntype: b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-inputs-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: a\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/","title":"inputs-input-presence-absent","text":""},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\ninput:\nconditions: false\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\ninput_presence: input\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-present/","title":"inputs-input-presence-present","text":""},{"location":"variability4tosca/tests/test-inputs-input-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninputs:\ninput:\nconditions: true\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\ninput_presence: input\n
"},{"location":"variability4tosca/tests/test-inputs-input-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\ninput:\ntype: string\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/","title":"inputs-pruning-consumed-still","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: some_input\nanother_container:\ntype: container\nconditions: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-still/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/","title":"inputs-pruning-consumed","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/","title":"inputs-pruning-no-consumer","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-no-consumer/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/","title":"inputs-pruning-not-consumed-anymore-v3","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\ntopology_template:\nvariability:\noptions:\ntechnology_required: false\nenrich_technologies: false\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/","title":"inputs-pruning-not-consumed-anymore","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-not-consumed-anymore/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/","title":"inputs-unique-input-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/","title":"inputs-unique-input-constraint-sat-pruning-consumed-default","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\nunique_input_constraint: true\ninputs:\n- some_input:\ntype: string\n- some_input:\ntype: string_other\ndefault_alternative: true\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: 0\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/","title":"inputs-unique-input-constraint-sat-pruning-consumed","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\ninput_default_condition: true\ninput_default_consistency_condition: true\ninput_default_semantic_condition: true\nproperty_default_condition: true\nunique_input_constraint: true\ninputs:\n- some_input:\ntype: string\n- some_input:\ntype: string_other\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property:\nget_input: 0\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat-pruning-consumed/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/","title":"inputs-unique-input-constraint-sat","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\nconditions: false\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ninputs:\none:\ntype: string_a\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/","title":"inputs-unique-input-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#description","title":"Description","text":"UNSAT since two inputs are present with same name
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_input_constraint: true\ninputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\n- three:\ntype: string\n
"},{"location":"variability4tosca/tests/test-inputs-unique-input-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/","title":"nodes-conditional-type-default","text":""},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype:\n- type_one:\nconditions: false\n- type_two:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: type_two\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type/","title":"nodes-conditional-type","text":""},{"location":"variability4tosca/tests/test-nodes-conditional-type/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype:\n- type_one:\nconditions: false\n- type_two:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-conditional-type/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: type_two\n
"},{"location":"variability4tosca/tests/test-nodes-conditional/","title":"nodes-conditional","text":""},{"location":"variability4tosca/tests/test-nodes-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-nodes-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-false/","title":"nodes-default-false-false","text":""},{"location":"variability4tosca/tests/test-nodes-default-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: false\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-true/","title":"nodes-default-false-true","text":""},{"location":"variability4tosca/tests/test-nodes-default-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: false\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-absent/","title":"nodes-default-host-absent","text":""},{"location":"variability4tosca/tests/test-nodes-default-host-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\ndefault_condition_mode: host\nrequirements:\n- host:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-present/","title":"nodes-default-host-present","text":""},{"location":"variability4tosca/tests/test-nodes-default-host-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\ndefault_condition_mode: host\nrequirements:\n- host:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-default-host-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- host: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-false/","title":"nodes-default-true-false","text":""},{"location":"variability4tosca/tests/test-nodes-default-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-true/","title":"nodes-default-true-true","text":""},{"location":"variability4tosca/tests/test-nodes-default-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\ndefault_condition: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-default-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/","title":"nodes-host-presence-absent","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: container\nrequirements:\n- host: node\nnode:\ntype: node\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/","title":"nodes-host-presence-false-false","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: container\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-present/","title":"nodes-host-presence-present","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host: node\nnode:\ntype: node\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- host: node\nnode:\ntype: node\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/","title":"nodes-host-presence-true-false","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- host_one: node_one\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/","title":"nodes-host-presence-true-true-constraint","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/","title":"nodes-host-presence-true-true","text":""},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nconstraints: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhost_presence: SELF\nrequirements:\n- host_one: node_one\n- host_two: node_two\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-host-presence-true-true/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one hosting relations\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/","title":"nodes-node-presence-absent","text":""},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnode_presence: node\nnode:\ntype: node\nconditions: false\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-present/","title":"nodes-node-presence-present","text":""},{"location":"variability4tosca/tests/test-nodes-node-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnode_presence: node\nnode:\ntype: node\nconditions: true\n
"},{"location":"variability4tosca/tests/test-nodes-node-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode:\ntype: node\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/","title":"nodes-required-incoming-relation-constraint-sat","text":""},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nrelation_pruning: true\ntype_pruning: true\nrequired_incoming_relation_constraint: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\npersistent: true\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/","title":"nodes-required-incoming-relation-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nrelation_pruning: true\ntype_pruning: true\nrequired_incoming_relation_constraint: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\npersistent: true\n
"},{"location":"variability4tosca/tests/test-nodes-required-incoming-relation-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-nodes-type-specific/","title":"nodes-type-specific","text":""},{"location":"variability4tosca/tests/test-nodes-type-specific/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_default_condition: true\ntype_specific_conditions:\nnode_types:\none:\nconditions:\nor: []\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\n
"},{"location":"variability4tosca/tests/test-nodes-type-specific/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\n
"},{"location":"variability4tosca/tests/test-other-benchmark/","title":"Benchmark","text":""},{"location":"variability4tosca/tests/test-other-benchmark/#description","title":"Description","text":"To benchmark our implementation of a Variability4TOSCA processor, we run several tests. Thereby, a service template is generated and then resolved based on a seed. A seed of value n results in 2n node templates and 2n relationship templates, thus, 4n templates. For example, a seed of 10,000 generates 20,0000 node templates and 20,0000 relationship templates. When variability is resolved, n node templates and n relationship templates are removed.
"},{"location":"variability4tosca/tests/test-other-benchmark/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\nexpressions:\ncondition_0_present:\nequal:\n- variability_input: mode\n- present\ncondition_0_removed:\nequal:\n- variability_input: mode\n- absent\ncondition_1_present:\nequal:\n- variability_input: mode\n- present\ncondition_1_removed:\nequal:\n- variability_input: mode\n- absent\noptions:\ntype_default_condition: true\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nconditions:\nlogic_expression: condition_0_present\nrequirements:\n- relation_present:\nnode: component_1_present\nconditions:\nlogic_expression: condition_0_present\nrelationship: relationship_0_present\n- relation_removed:\nnode: component_1_removed\nconditions:\nlogic_expression: condition_0_removed\nrelationship: relationship_0_removed\ncomponent_0_removed:\ntype: component_type_0_removed\nconditions:\nlogic_expression: condition_0_removed\ncomponent_1_present:\ntype: component_type_1_present\nconditions:\nlogic_expression: condition_1_present\nrequirements:\n- relation_present:\nnode: component_0_present\nconditions:\nlogic_expression: condition_1_present\nrelationship: relationship_1_present\n- relation_removed:\nnode: component_0_removed\nconditions:\nlogic_expression: condition_1_removed\nrelationship: relationship_1_removed\ncomponent_1_removed:\ntype: component_type_1_removed\nconditions:\nlogic_expression: condition_1_removed\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_0_removed:\ntype: relationship_type_0_removed\nrelationship_1_present:\ntype: relationship_type_1_present\nrelationship_1_removed:\ntype: relationship_type_1_removed\n
"},{"location":"variability4tosca/tests/test-other-benchmark/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
mode: present\n
"},{"location":"variability4tosca/tests/test-other-benchmark/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncomponent_0_present:\ntype: component_type_0_present\nrequirements:\n- relation_present:\nnode: component_1_present\nrelationship: relationship_0_present\ncomponent_1_present:\ntype: component_type_1_present\nrequirements:\n- relation_present:\nnode: component_0_present\nrelationship: relationship_1_present\nrelationship_templates:\nrelationship_0_present:\ntype: relationship_type_0_present\nrelationship_1_present:\ntype: relationship_type_1_present\n
"},{"location":"variability4tosca/tests/test-other-concat/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-concat/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-concat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nconcat:\n- hello\n- ' '\n- world\n
"},{"location":"variability4tosca/tests/test-other-concat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: hello world\n
"},{"location":"variability4tosca/tests/test-other-default-variability-input/","title":"Get Variability Expression","text":""},{"location":"variability4tosca/tests/test-other-default-variability-input/#description","title":"Description","text":"Assigns \"Miles\" to the variable \"value\" of the node \"container\" since the variability expression \"name\" resolves to \"Miles\".
"},{"location":"variability4tosca/tests/test-other-default-variability-input/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nsome_input:\ndefault:\nconcat:\n- some\n- _\n- value\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariability_input: some_input\n
"},{"location":"variability4tosca/tests/test-other-default-variability-input/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: some_value\n
"},{"location":"variability4tosca/tests/test-other-join/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-join/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-join/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\njoin:\n- - hello\n- world\n- ' '\n
"},{"location":"variability4tosca/tests/test-other-join/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: hello world\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-false/","title":"other-logic-expression-false","text":""},{"location":"variability4tosca/tests/test-other-logic-expression-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname:\nnode_presence: node_one\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nlogic_expression: name\nnode_one:\ntype: node_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-true/","title":"other-logic-expression-true","text":""},{"location":"variability4tosca/tests/test-other-logic-expression-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname:\nnode_presence: node_one\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nlogic_expression: name\nnode_one:\ntype: node_one\nconditions: true\n
"},{"location":"variability4tosca/tests/test-other-logic-expression-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-other-logic-value-expression/","title":"other-logic-value-expression","text":""},{"location":"variability4tosca/tests/test-other-logic-value-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- equal:\n- token:\n- hello world\n- ' '\n- 1\n- world\n- node_presence: node_one\nnode_one:\ntype: node_one\nconditions: true\n
"},{"location":"variability4tosca/tests/test-other-logic-value-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-other-nothing/","title":"other-nothing","text":""},{"location":"variability4tosca/tests/test-other-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-preset/","title":"other-preset","text":""},{"location":"variability4tosca/tests/test-other-preset/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\npresets:\none:\ninputs:\nmode: one\ntwo:\ninputs:\nmode: two\nexpressions:\nis_one:\nequal:\n- variability_input: mode\n- one\nis_two:\nequal:\n- variability_input: mode\n- two\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions:\nlogic_expression: is_one\ntwo:\ntype: two\nconditions:\nlogic_expression: is_two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-preset/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-presets/","title":"other-presets","text":""},{"location":"variability4tosca/tests/test-other-presets/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nmode:\ntype: string\npresets:\none:\ninputs:\nmode: one\ntwo:\ninputs:\nmode: two\nexpressions:\nis_one:\nequal:\n- variability_input: mode\n- one\nis_two:\nequal:\n- variability_input: mode\n- two\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions:\nlogic_expression: is_one\ntwo:\ntype: two\nconditions:\nlogic_expression: is_two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-presets/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/","title":"other-throw-CONTAINER","text":""},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nCONTAINER:\ntype: container\n
"},{"location":"variability4tosca/tests/test-other-throw-CONTAINER/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node must not be named \"CONTAINER\"\n
"},{"location":"variability4tosca/tests/test-other-throw-SELF/","title":"other-throw-SELF","text":""},{"location":"variability4tosca/tests/test-other-throw-SELF/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nSELF:\ntype: SELF\n
"},{"location":"variability4tosca/tests/test-other-throw-SELF/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node must not be named \"SELF\"\n
"},{"location":"variability4tosca/tests/test-other-throw-not-unique/","title":"other-throw-not-unique","text":""},{"location":"variability4tosca/tests/test-other-throw-not-unique/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_templates:\none:\ntype: one\nconditions:\nnot:\nnode_presence: two\nrequirements:\n- host: one_host\none_host:\ntype: one_host\ntwo:\ntype: two\nconditions:\nnot:\nnode_presence: one\nrequirements:\n- host: two_host\ntwo_host:\ntype: two_host\n
"},{"location":"variability4tosca/tests/test-other-throw-not-unique/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering nodes (without optimization)\n
"},{"location":"variability4tosca/tests/test-other-token/","title":"Operator \"concat\"","text":""},{"location":"variability4tosca/tests/test-other-token/#description","title":"Description","text":"Assigns the value of the intrinsic function to the property \"value\" of the node \"container\".
"},{"location":"variability4tosca/tests/test-other-token/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\ntoken:\n- hello world\n- ' '\n- 1\n
"},{"location":"variability4tosca/tests/test-other-token/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: world\n
"},{"location":"variability4tosca/tests/test-other-value-expression/","title":"Get Variability Expression","text":""},{"location":"variability4tosca/tests/test-other-value-expression/#description","title":"Description","text":"Assigns \"Miles\" to the variable \"value\" of the node \"container\" since the variability expression \"name\" resolves to \"Miles\".
"},{"location":"variability4tosca/tests/test-other-value-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\nexpressions:\nname: Miles\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvalue_expression: name\n
"},{"location":"variability4tosca/tests/test-other-value-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: Miles\n
"},{"location":"variability4tosca/tests/test-other-variability-input/","title":"Get Variability Input","text":""},{"location":"variability4tosca/tests/test-other-variability-input/#description","title":"Description","text":"Assigns \"Miles\" to property \"value\" of the node \"container\" since the input \"name\" has the value \"Miles\".
"},{"location":"variability4tosca/tests/test-other-variability-input/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nname:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- value:\nexpression:\nvariability_input: name\n
"},{"location":"variability4tosca/tests/test-other-variability-input/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
name: Miles\n
"},{"location":"variability4tosca/tests/test-other-variability-input/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nvalue: Miles\n
"},{"location":"variability4tosca/tests/test-other-version/","title":"other-version","text":""},{"location":"variability4tosca/tests/test-other-version/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\n
"},{"location":"variability4tosca/tests/test-other-version/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-other-weight/","title":"other-weight","text":""},{"location":"variability4tosca/tests/test-other-weight/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nweight: 1\n
"},{"location":"variability4tosca/tests/test-other-weight/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-conditional-list/","title":"outputs-conditional-list","text":""},{"location":"variability4tosca/tests/test-outputs-conditional-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\n- one:\ntype: string\n- two:\ntype: string\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-conditional-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-conditional/","title":"outputs-conditional","text":""},{"location":"variability4tosca/tests/test-outputs-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\none:\ntype: string\ntwo:\ntype: string\nconditions: false\nthree:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-default/","title":"outputs-default","text":""},{"location":"variability4tosca/tests/test-outputs-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\n- one:\ntype: a\ndefault_alternative: true\n- one:\ntype: b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-outputs-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: a\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/","title":"outputs-input-presence-absent","text":""},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\ninput:\nconditions: false\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\noutput_presence: input\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-present/","title":"outputs-input-presence-present","text":""},{"location":"variability4tosca/tests/test-outputs-input-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutputs:\ninput:\nconditions: true\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions:\noutput_presence: input\n
"},{"location":"variability4tosca/tests/test-outputs-input-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/","title":"outputs-pruning-not-produced-anymore-unfurl-1","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-1/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/","title":"outputs-pruning-not-produced-anymore-unfurl-2","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue:\neval: '::container::some_property'\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-unfurl-2/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/","title":"outputs-pruning-not-produced-anymore-xopera-v3","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\ntopology_template:\nvariability:\noptions:\ntechnology_required: false\nenrich_technologies: false\noutputs:\ninput:\ntype: string\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/","title":"outputs-pruning-not-produced-anymore-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-not-produced-anymore-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/","title":"outputs-pruning-produced-unfurl-attribute-not","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: false\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute-not/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/","title":"outputs-pruning-produced-unfurl-attribute","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl-attribute/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\ncontainer:\nderived_from: tosca.nodes.Root\nattributes:\nsome_attribute:\ntype: string\ntopology_template:\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_attribute' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/","title":"outputs-pruning-produced-unfurl","text":""},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-pruning-produced-unfurl/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string\nvalue: \"{{ '::container::some_property' | eval }}\"\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/","title":"outputs-unique-output-constraint-sat-default","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\ndefault_alternative: true\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/","title":"outputs-unique-output-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\nconditions: false\n- one:\ntype: string_b\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_b\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/","title":"outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\nunique_output_constraint: true\noutputs:\n- input:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\n- input:\ntype: string_b\nvalue:\nget_property:\n- container\n- another_property\nnode_templates:\ncontainer:\ntype: container\nconditions: false\nproperties:\n- some_property: some_value\n- another_property:\nconditions: false\nvalue: another_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/","title":"outputs-unique-output-constraint-sat-pruning-produced-xopera","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\noutput_default_condition: true\noutput_default_consistency_condition: true\noutput_default_semantic_condition: true\nproperty_default_condition: true\nunique_output_constraint: true\noutputs:\n- input:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\n- input:\ntype: string_b\nvalue:\nget_property:\n- container\n- another_property\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- some_property: some_value\n- another_property:\nconditions: false\nvalue: another_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat-pruning-produced-xopera/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\ninput:\ntype: string_a\nvalue:\nget_property:\n- container\n- some_property\nnode_templates:\ncontainer:\ntype: container\nproperties:\nsome_property: some_value\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/","title":"outputs-unique-output-constraint-sat","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\nconditions: false\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\noutputs:\none:\ntype: string_a\nthree:\ntype: string\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/","title":"outputs-unique-output-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nunique_output_constraint: true\noutputs:\n- one:\ntype: string_a\n- one:\ntype: string_b\n- three:\ntype: string\nconditions: true\n
"},{"location":"variability4tosca/tests/test-outputs-unique-output-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-false/","title":"persistent-persistent-false","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\npersistent_check: false\noptimization_topology: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\npersistent: false\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-throw/","title":"persistent-persistent-throw","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-throw/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-throw/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node default condition mode \"incoming(naive)-host\" requires at least one persistent node template\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/","title":"persistent-persistent-undefined","text":""},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\npersistent_check: false\noptimization_topology: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent-undefined/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-persistent-persistent/","title":"persistent-persistent","text":""},{"location":"variability4tosca/tests/test-persistent-persistent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-host\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nhosting_stack_constraint: true\nnode_templates:\nworker:\ntype: worker\npersistent: true\nrequirements:\n- host:\nnode: vm\nvm:\ntype: vm\nrequirements:\n- host:\nnode: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-persistent-persistent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\nrequirements:\n- host: hypervisor\nhypervisor:\ntype: hypervisor\n
"},{"location":"variability4tosca/tests/test-policies-conditional/","title":"policies-conditional","text":""},{"location":"variability4tosca/tests/test-policies-conditional/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\nconditions: false\n- policy_three:\ntype: policy_three\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_three:\ntype: policy_three\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/","title":"policies-default-condition-nothing","text":""},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#description","title":"Description","text":"Do not remove policy \"policy_one\" since pruning is not forced.
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition-nothing/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition/","title":"policies-default-condition","text":""},{"location":"variability4tosca/tests/test-policies-default-condition/#description","title":"Description","text":"Remove policy \"policy_one\" since is has no present targets.
"},{"location":"variability4tosca/tests/test-policies-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/","title":"Policy Targets Absent Members","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes and a group whose both members are absent. Thus, the policy \"policy_one\" has no present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nnode_three:\ntype: node_three\nconditions: false\nnode_four:\ntype: node_four\nconditions: false\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_three\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-members/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\ngroups:\ngroup_one:\ntype: group_one\nmembers: []\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/","title":"Policy Targets Absent Nodes","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes, thus, has no present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-absent-nodes/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/","title":"Policy Has No Targets","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#description","title":"Description","text":"The policy \"policy_one\" has no targets. Thus, the policy has no present targets and, therefore, is removed.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\nconditions:\nhas_present_target: policy_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-no-targets/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/","title":"Policy Targets Present Member","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#description","title":"Description","text":"The policy \"policy_one\" targets two absent nodes and a group which has one absent and one present node. Since one node is present, the policy \"policy_one\" has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nnode_three:\ntype: node_three\nconditions: false\nnode_four:\ntype: node_four\nconditions: true\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_three\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-member/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_four:\ntype: node_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_four\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- group_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/","title":"Policy Targets One Present Node","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#description","title":"Description","text":"The policy \"policy_one\" targets one absent and one present node, thus, has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-node/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/","title":"Policy Targets Present Nodes","text":""},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#description","title":"Description","text":"The policy \"policy_one\" targets two present nodes, thus, has present targets.
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nhas_present_target: policy_one\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-has-present-target-present-nodes/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/","title":"policies-policy-presence-absent","text":""},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\npolicy_presence: policy_one\npolicies:\n- policy_one:\ntype: policy_one\nconditions: false\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-present/","title":"policies-policy-presence-present","text":""},{"location":"variability4tosca/tests/test-policies-policy-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\npolicy_presence: policy_one\npolicies:\n- policy_one:\ntype: policy_one\nconditions: true\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-policy-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\npolicies:\n- policy_one:\ntype: policy_one\ntargets: []\n
"},{"location":"variability4tosca/tests/test-policies-prune/","title":"Policy Pruning","text":""},{"location":"variability4tosca/tests/test-policies-prune/#description","title":"Description","text":"Remove policy \"policy_one\" even though assigned conditions evaluate to \"true\" since policy pruning is enabled.
"},{"location":"variability4tosca/tests/test-policies-prune/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\npolicy_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nnode_two:\ntype: node_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nconditions: true\n- policy_two:\ntype: policy_two\ntargets:\n- node_one\n- node_two\n
"},{"location":"variability4tosca/tests/test-policies-prune/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\npolicies:\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/","title":"properties-artifact-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nexpected_artifact_check: false\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions: false\nfile: path\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/","title":"properties-artifact-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\nconditions: true\nfile: path\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-artifact-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nfile: path\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-conditional/","title":"properties-conditional","text":""},{"location":"variability4tosca/tests/test-properties-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\n- key_two: value_two\n- key_three: value_three\n- key_four:\nvalue: value_four\nconditions: true\nrequirements:\n- connects_to:\nnode: node_two\nrelationship: relation_one\nartifacts:\nartifact_one:\nproperties:\n- property_artifact_one_one:\nvalue: value_artifact_one_one\nconditions: false\n- property_artifact_one_one:\nvalue: value_artifact_one_two\nconditions: true\nnode_two:\ntype: node_two\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\n- key_two: value_two\n- key_three: value_three\n- key_four:\nvalue: value_four\nconditions: true\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\nproperties:\n- property_group_one_one:\nvalue: value_group_one_one\nconditions: false\n- property_group_one_one:\nvalue: value_group_one_two\nconditions: true\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nproperties:\n- property_policy_one_one:\nvalue: value_policy_one_one\nconditions: false\n- property_policy_one_one:\nvalue: value_policy_one_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_two\nkey_two: value_two\nkey_three: value_three\nkey_four: value_four\nrequirements:\n- connects_to:\nnode: node_two\nrelationship: relation_one\nartifacts:\nartifact_one:\ntype: tosca.artifacts.File\nproperties:\nproperty_artifact_one_one: value_artifact_one_two\nnode_two:\ntype: node_two\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\nkey_one: value_one_two\nkey_two: value_two\nkey_three: value_three\nkey_four: value_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\nproperties:\nproperty_group_one_one: value_group_one_two\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\nproperties:\nproperty_policy_one_one: value_policy_one_two\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative-false/","title":"properties-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-properties-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: true\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_three\nnode_two:\ntype: node_two\nproperties:\nkey_two: value_two_two\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative/","title":"properties-default-alternative","text":""},{"location":"variability4tosca/tests/test-properties-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: false\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nproperties:\nkey_two: value_two_two\n
"},{"location":"variability4tosca/tests/test-properties-default-condition/","title":"properties-default-condition","text":""},{"location":"variability4tosca/tests/test-properties-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nproperty_default_condition: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-expression/","title":"properties-expression","text":""},{"location":"variability4tosca/tests/test-properties-expression/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nsome_input:\ntype: string\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nexpression:\nvariability_input: some_input\n
"},{"location":"variability4tosca/tests/test-properties-expression/#variability-inputs","title":"Variability Inputs","text":"When resolving variability, the following variability inputs shall be used.
some_input: some_value\n
"},{"location":"variability4tosca/tests/test-properties-expression/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: some_value\n
"},{"location":"variability4tosca/tests/test-properties-list-another/","title":"properties-list-another","text":""},{"location":"variability4tosca/tests/test-properties-list-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-list-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-list/","title":"properties-list","text":""},{"location":"variability4tosca/tests/test-properties-list/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue:\n- value_one_two\n- value_one_three\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-list/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\n- value_one_two\n- value_one_three\n
"},{"location":"variability4tosca/tests/test-properties-map-another/","title":"properties-map-another","text":""},{"location":"variability4tosca/tests/test-properties-map-another/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-map-another/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-map/","title":"properties-map","text":""},{"location":"variability4tosca/tests/test-properties-map/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue:\nsome_key: some_value\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-map/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one:\nsome_key: some_value\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/","title":"properties-node-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/","title":"properties-node-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-node-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/","title":"properties-node-node-presence-CONTAINER-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\nnode_presence: CONTAINER\nvalue: 69\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/","title":"properties-node-node-presence-CONTAINER-present","text":""},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions:\nnode_presence: CONTAINER\nvalue: 69\nconditions: true\n
"},{"location":"variability4tosca/tests/test-properties-node-node-presence-CONTAINER-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/","title":"properties-node-property-presence-number-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: false\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- 0\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/","title":"properties-node-property-presence-number-present","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: true\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- 0\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-number-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/","title":"properties-node-property-presence-string-absent","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: false\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- property_one\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/","title":"properties-node-property-presence-string-present","text":""},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- property_one:\nconditions: true\nvalue: 69\nconditions:\nnode_property_presence:\n- container\n- property_one\n
"},{"location":"variability4tosca/tests/test-properties-node-property-presence-string-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-properties/","title":"properties-properties","text":""},{"location":"variability4tosca/tests/test-properties-properties/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nproperty_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one\nconditions: true\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-properties/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/","title":"properties-relation-container-presence-absent","text":""},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nconditions: false\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/","title":"properties-relation-container-presence-present","text":""},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nconditions: true\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\n- property_one:\nconditions:\ncontainer_presence: SELF\nvalue: 69\n
"},{"location":"variability4tosca/tests/test-properties-relation-container-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nrequirements:\n- relation_one:\nnode: container\nrelationship: relation_one\nrelationship_templates:\nrelation_one:\ntype: relation_one\nproperties:\nproperty_one: 69\n
"},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/","title":"properties-throw-ambiguous-property","text":""},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one: value_one\n- key_one: value_one\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-throw-ambiguous-property/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Property \"key_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/","title":"properties-throw-missing-property-container","text":""},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one\nconditions: false\n
"},{"location":"variability4tosca/tests/test-properties-throw-missing-property-container/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of property \"key_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/","title":"properties-throw-multiple-default","text":""},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nvalue: value_one_one\nconditions: false\n- key_one:\nvalue: value_one_two\nconditions: false\n- key_one:\nvalue: value_one_three\ndefault_alternative: true\n- key_one:\nvalue: value_one_four\ndefault_alternative: true\nnode_two:\ntype: node_two\nproperties:\n- key_two:\nvalue: value_two_one\nconditions: false\n- key_two:\nvalue: value_two_two\nconditions: true\n- key_two:\nvalue: value_two_three\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-properties-throw-multiple-default/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Property \"key_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/","title":"properties-unique-property-constraint-sat","text":""},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_property_constraint: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one:\nconditions: false\nvalue: value_one_a\n- key_one: value_one_b\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\nkey_one: value_one_b\nkey_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/","title":"properties-unique-property-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_property_constraint: true\nnode_templates:\nnode_one:\ntype: node_one\nproperties:\n- key_one: value_one_a\n- key_one: value_one_b\n- key_two: value_two\n
"},{"location":"variability4tosca/tests/test-properties-unique-property-constraint-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/","title":"pruning-alpha-default-naive","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/#description","title":"Description","text":"\"naive\" default condition of nodes is enabled
\"naive\" allows that target is removed
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incomingnaive\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default-naive/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default/","title":"pruning-alpha-default","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-default/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/","title":"pruning-alpha-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-alpha-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/","title":"pruning-artifact-default-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nartifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/","title":"pruning-artifact-default-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/","title":"pruning-artifact-default-charlie","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-charlie/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/","title":"pruning-artifact-default-delta","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifact\nartifact_default_condition: true\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container_type\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/","title":"pruning-artifact-default-naive","text":""},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: artifactnaive\nartifact_default_condition: true\ntype_default_condition: true\noptimization_topology: true\nnode_templates:\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-artifact-default-naive/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-default/","title":"pruning-bravo-default","text":""},{"location":"variability4tosca/tests/test-pruning-bravo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
target is \"true\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/","title":"pruning-bravo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
target is \"true\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-bravo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-default/","title":"pruning-charlie-default","text":""},{"location":"variability4tosca/tests/test-pruning-charlie-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
target is \"false\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/","title":"pruning-charlie-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
target is \"false\" assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-charlie-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-delta-default/","title":"pruning-delta-default","text":""},{"location":"variability4tosca/tests/test-pruning-delta-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"true\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-pruning/","title":"pruning-delta-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-delta-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"true\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-delta-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-default/","title":"pruning-echo-default","text":""},{"location":"variability4tosca/tests/test-pruning-echo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-echo-pruning/","title":"pruning-echo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-echo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-echo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/","title":"pruning-foxtrott-default","text":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/","title":"pruning-foxtrott-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to relation
thus, relation is removed
target is also removed due to pruning
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-foxtrott-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-default/","title":"pruning-hotel-default","text":""},{"location":"variability4tosca/tests/test-pruning-hotel-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"true\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: true\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/","title":"pruning-hotel-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"true\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: true\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-hotel-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/","title":"pruning-incoming-artifact-pruning-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nartifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/","title":"pruning-incoming-artifact-pruning-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/","title":"pruning-incoming-artifact-pruning-charlie","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-charlie/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/","title":"pruning-incoming-artifact-pruning-delta","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-delta/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/","title":"pruning-incoming-artifact-pruning-echo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-echo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntource:\ntype: tource\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\nartifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/","title":"pruning-incoming-artifact-pruning-foxtrott","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: false\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\nconditions: false\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-foxtrott/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/","title":"pruning-incoming-artifact-pruning-golf","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-golf/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/","title":"pruning-incoming-artifact-pruning-hotel","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifact\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\ntource:\ntype: tource\nrequirements:\n- relation:\nnode: container\nconditions: true\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\nconditions: false\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-hotel/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntource:\ntype: tource\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/","title":"pruning-incoming-artifact-pruning-naive-alpha","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifactnaive\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: container\nconditions: true\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/","title":"pruning-incoming-artifact-pruning-naive-bravo","text":""},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming-artifactnaive\nnode_pruning: true\nartifact_default_condition: true\nartifact_pruning: true\nrelation_default_condition: true\nrelation_pruning: true\ntype_default_condition: true\ntype_pruning: true\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: container\ncontainer:\ntype: container_type\nartifacts:\n- artifact_one:\ntype: artifact_one_type\nfile: artifact_one_file\n- artifact_two:\ntype: artifact_two_type\nfile: artifact_two_file\n
"},{"location":"variability4tosca/tests/test-pruning-incoming-artifact-pruning-naive-bravo/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-india-default/","title":"pruning-india-default","text":""},{"location":"variability4tosca/tests/test-pruning-india-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
\"false\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-india-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-india-pruning/","title":"pruning-india-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-india-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
\"false\" is assigned to source
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nconditions: false\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-india-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-default/","title":"pruning-juliett-default","text":""},{"location":"variability4tosca/tests/test-pruning-juliett-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, node \"another\" has a relation \"another\" on target
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another:\nnode: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/","title":"pruning-juliett-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, node \"another\" has a relation \"another\" on target
\"false\" is assigned to relation
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another:\nnode: target\n
"},{"location":"variability4tosca/tests/test-pruning-juliett-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\ntarget:\ntype: target\nanother:\ntype: another\nrequirements:\n- another: target\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-default/","title":"pruning-kilo-default","text":""},{"location":"variability4tosca/tests/test-pruning-kilo-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/","title":"pruning-kilo-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-kilo-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-lima-default/","title":"pruning-lima-default","text":""},{"location":"variability4tosca/tests/test-pruning-lima-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since \"true\" is assigned
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-lima-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\n
"},{"location":"variability4tosca/tests/test-pruning-lima-pruning/","title":"pruning-lima-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-lima-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is also removed due to pruning
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nconditions: true\n
"},{"location":"variability4tosca/tests/test-pruning-lima-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\n
"},{"location":"variability4tosca/tests/test-pruning-mike-default/","title":"pruning-mike-default","text":""},{"location":"variability4tosca/tests/test-pruning-mike-default/#description","title":"Description","text":"\"relation\" default condition of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
Moreover, node \"ananother\" has a relation on \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since node \"ananother\" has a requirement on it
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother:\nnode: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-default/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-pruning/","title":"pruning-mike-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-mike-pruning/#description","title":"Description","text":"\"relation\" pruning of nodes is enabled
In addition, target has a relation \"another\" on another node \"another\"
Moreover, node \"ananother\" has a relation on \"another\"
\"false\" is assigned to relation \"relation\"
thus, relation \"another\" is removed
node \"another\" is preserved since node \"ananother\" has a requirement on it
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\nrequirements:\n- another:\nnode: another\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother:\nnode: another\n
"},{"location":"variability4tosca/tests/test-pruning-mike-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nanother:\ntype: another\nananother:\ntype: ananother\nrequirements:\n- ananother: another\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/","title":"pruning-outgoing-relation-absent","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/#description","title":"Description","text":"Thus, there is no circle.
\"relation\" is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: false\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/","title":"pruning-outgoing-relation-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/#description","title":"Description","text":"Thus, there is no circle.
\"relation\" is present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\nconditions: true\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/","title":"pruning-outgoing-target-absent","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/#description","title":"Description","text":"Thus, there is no circle.
\"target\" is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\nconditions: false\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/","title":"pruning-outgoing-target-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoing\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoing-target-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/","title":"pruning-outgoingnaive-target-present","text":""},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/#description","title":"Description","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: outgoingnaive\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\ntype_default_condition: true\nexpected_incoming_relation_check: false\noptimization_topology: true\nnode_templates:\nsource:\ntype: source\nrequirements:\n- relation:\nnode: target\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntarget:\ntype: target\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/","title":"pruning-pruning-false-false","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\npruning: false\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/","title":"pruning-pruning-false-true","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/","title":"pruning-pruning-true-false","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\npruning: false\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/","title":"pruning-pruning-true-true","text":""},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_pruning: true\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\npruning: true\nconditions: true\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two: node_one\nnode_three:\ntype: node_three\nconditions: false\nrequirements:\n- relation_three: node_one\n
"},{"location":"variability4tosca/tests/test-pruning-pruning-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-pruning-pruning/","title":"pruning-pruning","text":""},{"location":"variability4tosca/tests/test-pruning-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nnode_default_condition: true\nnode_default_condition_mode: incoming\nnode_pruning: true\nrelation_default_condition: true\nrelation_default_condition_mode: source-target\nrelation_pruning: true\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_one_one:\nnode: node_three\nconditions: false\nnode_two:\ntype: node_two\nconditions: false\nrequirements:\n- relation_two_one: node_three\n- relation_two_two: node_five\nnode_three:\ntype: node_three\nconditions: true\nnode_four:\ntype: node_four\nnode_five:\ntype: node_five\nnode_six:\ntype: node_six\nrequirements:\n- relation_six_one: node_five\n
"},{"location":"variability4tosca/tests/test-pruning-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_four:\ntype: node_four\nnode_five:\ntype: node_five\nnode_six:\ntype: node_six\nrequirements:\n- relation_six_one: node_five\n
"},{"location":"variability4tosca/tests/test-pruning-relation/","title":"Relation Pruning","text":""},{"location":"variability4tosca/tests/test-pruning-relation/#description","title":"Description","text":"Node \"node_one\" is not present. The relation \"relation_two\" is also not present even though assigned conditions evaluate to \"true\" since relation pruning is enabled.
"},{"location":"variability4tosca/tests/test-pruning-relation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_pruning: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-pruning-relation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-relationships-conditional/","title":"relationships-conditional","text":""},{"location":"variability4tosca/tests/test-relationships-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\nrthree:\ntype: tthree\n
"},{"location":"variability4tosca/tests/test-relationships-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrthree:\ntype: tthree\n
"},{"location":"variability4tosca/tests/test-relationships-throw-multiple/","title":"relationships-throw-multiple","text":""},{"location":"variability4tosca/tests/test-relationships-throw-multiple/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- two:\nnode: node_two\nrelationship: relation_one\nnode_two:\ntype: node_two\nrequirements:\n- one:\nnode: node_one\nrelationship: relation_one\nrelationship_templates:\nrelation_one:\ntype: relation_one\n
"},{"location":"variability4tosca/tests/test-relationships-throw-multiple/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"relation_one\" is used multiple times\n
"},{"location":"variability4tosca/tests/test-relationships-throw-undefined/","title":"relationships-throw-undefined","text":""},{"location":"variability4tosca/tests/test-relationships-throw-undefined/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three:\nnode: three\nrelationship: rthree\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-relationships-throw-undefined/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relationship \"rthree\" of relation \"three\" of node \"two\" does not exist!\n
"},{"location":"variability4tosca/tests/test-relationships-throw-unused/","title":"relationships-throw-unused","text":""},{"location":"variability4tosca/tests/test-relationships-throw-unused/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: false\nrelationship: rtwo\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\nrelationship_templates:\nrtwo:\ntype: rtwo\nrthree:\ntype: rthree\n
"},{"location":"variability4tosca/tests/test-relationships-throw-unused/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"rthree\" is never used\n
"},{"location":"variability4tosca/tests/test-relationships-type-specific/","title":"relationships-type-specific","text":""},{"location":"variability4tosca/tests/test-relationships-type-specific/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nrelation_default_condition: true\ntype_specific_conditions:\nrelationship_types:\nrone:\nconditions:\nor: []\nnode_templates:\nsource:\ntype: source\nrequirements:\n- one:\nnode: target\nrelationship: rone\n- two:\nnode: target\nrelationship: rtwo\ntarget:\ntype: target\nrelationship_templates:\nrone:\ntype: rone\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-relationships-type-specific/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nsource:\ntype: source\nrequirements:\n- two:\nnode: target\nrelationship: rtwo\ntarget:\ntype: target\nrelationship_templates:\nrtwo:\ntype: rtwo\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/","title":"requirement-assignment-conditional","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/","title":"requirement-assignment-default-alternative-false","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\n- two_two:\nnode: two\ndefault_alternative: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/","title":"requirement-assignment-default-alternative","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: false\n- two_two:\nnode: two\ndefault_alternative: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-alternative/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- two_two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/","title":"requirement-assignment-default-condition-throw-source","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two:\nnode: two\nconditions: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-source/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation source \"one\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/","title":"requirement-assignment-default-condition-throw-target","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\nconditions: true\ntwo:\ntype: two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition-throw-target/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation target \"two\" of relation \"two@0\" of node \"one\" does not exist\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/","title":"requirement-assignment-default-condition","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nrelation_default_condition: true\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\none:\ntype: one\nconditions: false\nrequirements:\n- two: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-default-condition/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/","title":"requirement-assignment-one-hosting-relation","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- host:\nnode: two\nconditions: true\n- host:\nnode: three\nconditions: false\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-one-hosting-relation/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\none:\ntype: one\nrequirements:\n- host: two\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/","title":"requirement-assignment-relation-presence-index-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- 0\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: false\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-index-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- relation_two: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/","title":"requirement-assignment-relation-presence-name-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: false\n- relation_two:\nnode: node_two\nconditions: true\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-relation-presence-name-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nrequirements:\n- relation_two: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/","title":"requirement-assignment-source-presence-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nexpected_incoming_relation_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nconditions: false\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\nsource_presence: SELF\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/","title":"requirement-assignment-source-presence-present","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nconditions: true\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\nsource_presence: SELF\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-source-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nrequirements:\n- relation_one: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/","title":"requirement-assignment-target-presence-absent","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: false\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-absent/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/","title":"requirement-assignment-target-presence-present","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nrelation_presence:\n- node_one\n- relation_one\nnode_one:\ntype: node_one\nrequirements:\n- relation_one:\nnode: node_two\nconditions:\ntarget_presence: SELF\nnode_two:\ntype: node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-target-presence-present/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\nnode_one:\ntype: node_one\nrequirements:\n- relation_one: node_two\nnode_two:\ntype: node_two\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/","title":"requirement-assignment-throw-multiple-defaults","text":""},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\none:\ntype: one\nrequirements:\n- two:\nnode: two\ndefault_alternative: true\n- two:\nnode: two\ndefault_alternative: true\ntwo:\ntype: two\nrequirements:\n- three: three\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-requirement-assignment-throw-multiple-defaults/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Relation \"two@0\" of node \"one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/","title":"Scenario \"Alpha\"","text":""},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#description","title":"Description","text":"A more complex scenario that shows that the fact that node \"node_two\" is not present propagates even to the property \"property_two\" of the relationship template \"relationship_one\".
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition: false\nnode_pruning: false\nexpected_incoming_relation_check: false\nnode_templates:\nnode_one:\ntype: node_one\nnode_two:\ntype: node_two\nconditions: false\nproperties:\n- property_one: value_one\nrequirements:\n- relation_one:\nnode: node_one\nconditions: true\nrelationship: relationship_one\n- relation_two:\nnode: node_three\nconditions: false\n- relation_three:\nnode: node_four\ndefault_alternative: true\nartifacts:\n- artifact_one: file_one\n- artifact_one:\nfile: file_one\ndefault_alternative: true\nnode_three:\ntype: node_three\nnode_four:\ntype: node_four\nrelationship_templates:\nrelationship_one:\ntype: relationship_one\nproperties:\n- property_two: value_two\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\ngroup_two:\ntype: group_two\nmembers:\n- node_two\n- - node_two\n- relation_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n- policy_two:\ntype: policy_two\ntargets:\n- node_two\nconditions: true\n
"},{"location":"variability4tosca/tests/test-scenario-complex-alpha/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node_one\nnode_three:\ntype: node_three\nnode_four:\ntype: node_four\ngroups:\ngroup_one:\ntype: group_one\nmembers:\n- node_one\npolicies:\n- policy_one:\ntype: policy_one\ntargets:\n- node_one\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/","title":"scenario-worker-agent-false","text":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/#description","title":"Description","text":"worker is absent
agent is absent, thus, also the virtual machine is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions: false\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/","title":"scenario-worker-agent-true","text":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/#description","title":"Description","text":"worker is absent
agent is present, thus, also the virtual machine is present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions: true\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-agent-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/","title":"scenario-worker-worker-false","text":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/#description","title":"Description","text":"agent is only present if the virtual machine is present, thus, circle
worker is absent
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions:\nhost_presence: SELF\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: false\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/","title":"scenario-worker-worker-true","text":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/#description","title":"Description","text":"agent is only present if the virtual machine is present, thus, circle
worker is present, thus, all components are present
The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_topology: true\nnode_templates:\nagent:\ntype: agent\nconditions:\nhost_presence: SELF\nrequirements:\n- host: vm\nworker:\ntype: worker\nconditions: true\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-scenario-worker-worker-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nagent:\ntype: agent\nrequirements:\n- host: vm\nworker:\ntype: worker\nrequirements:\n- host: vm\nvm:\ntype: vm\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/","title":"technologies-ambiguous-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nambiguous_technology_check: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous/","title":"technologies-ambiguous","text":""},{"location":"variability4tosca/tests/test-technologies-ambiguous/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nambiguous_technology_check: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-ambiguous/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-conditional/","title":"technologies-conditional","text":""},{"location":"variability4tosca/tests/test-technologies-conditional/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-conditional/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/","title":"technologies-constraint-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntechnology_constraint: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-constraint-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-constraint/","title":"technologies-constraint","text":""},{"location":"variability4tosca/tests/test-technologies-constraint/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-constraint/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Could not solve\n
"},{"location":"variability4tosca/tests/test-technologies-default-multiple/","title":"technologies-default-multiple","text":""},{"location":"variability4tosca/tests/test-technologies-default-multiple/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\ndefault_alternative: true\n- terraform:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-technologies-default-multiple/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has multiple default technologies\n
"},{"location":"variability4tosca/tests/test-technologies-default-true/","title":"technologies-default-true","text":""},{"location":"variability4tosca/tests/test-technologies-default-true/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n- terraform:\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-technologies-default-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-expected-disabled/","title":"technologies-expected-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-expected-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: false\ntechnology_pruning: false\ntechnology_constraint: false\nexpected_technology_check: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-expected-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has no present technology\n
"},{"location":"variability4tosca/tests/test-technologies-expected/","title":"technologies-expected","text":""},{"location":"variability4tosca/tests/test-technologies-expected/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: false\ntechnology_pruning: false\ntechnology_constraint: false\nexpected_technology_check: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: false\n
"},{"location":"variability4tosca/tests/test-technologies-expected/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" expected to have a technology\n
"},{"location":"variability4tosca/tests/test-technologies-lowercase/","title":"technologies-lowercase","text":""},{"location":"variability4tosca/tests/test-technologies-lowercase/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- Ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-lowercase/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-missing-disabled/","title":"technologies-missing-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-missing-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: false\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-missing-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-technologies-missing/","title":"technologies-missing","text":""},{"location":"variability4tosca/tests/test-technologies-missing/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-missing/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of technology \"ansible@0\" of node \"container\" does not exist\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-double/","title":"technologies-optimization-double","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-double/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\nnode_default_condition_mode: incomingnaive-host\nhosting_stack_constraint: true\noptimization_topology: true\noptimization_technologies: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\npersistent: true\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nrequirements:\n- relation:\nnode: container_host\nconditions: false\ncontainer_host:\ntype: container_host\ncontainer_host_agent:\ntype: container_host_agent\nrequirements:\n- host:\nnode: container_host\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-double/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/","title":"technologies-optimization-order","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-order/#description","title":"Description","text":"order of technologies does not matter
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-order/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/","title":"technologies-optimization-unsat","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#description","title":"Description","text":"technology optimization requires technology pruning
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\ntechnology_pruning: false\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-unsat/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"container\" has more than one technology\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-weight/","title":"technologies-optimization-weight","text":""},{"location":"variability4tosca/tests/test-technologies-optimization-weight/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_mode: weight\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- terraform:\nconditions: true\nweight: 0.5\n- ansible:\nconditions: true\nweight: 1\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization-weight/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::terraform\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-optimization/","title":"technologies-optimization","text":""},{"location":"variability4tosca/tests/test-technologies-optimization/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- terraform:\nconditions: true\n- ansible:\nconditions: true\nanother:\ntype: another\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-optimization/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::ansible\nanother:\ntype: another~another::ansible\n
"},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/","title":"technologies-pruning-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\ntechnology_pruning: false\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-pruning-disabled/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Container of technology \"ansible@0\" of node \"container\" does not exist\n
"},{"location":"variability4tosca/tests/test-technologies-pruning/","title":"technologies-pruning","text":""},{"location":"variability4tosca/tests/test-technologies-pruning/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nmissing_technology_container_check: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\nconditions: false\ntechnology:\n- ansible:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-technologies-rules-v3/","title":"technologies-rules-v3","text":""},{"location":"variability4tosca/tests/test-technologies-rules-v3/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\ntechnology_rules:\n- component: application\ntechnology: terraform\nhosting:\n- terraform_host\n- component: application\ntechnology: terraform\nhosting:\n- ansible_terraform_host\n- component: another\ntechnology: terraform\nhosting:\n- another_terraform_host\n- component: database\ntechnology:\n- terraform\n- component: dbms\ntechnology:\n- terraform\n- component: application\ntechnology: ansible\nhosting:\n- ansible_host\n- component: application\ntechnology: ansible\nhosting:\n- ansible_terraform_host\n- component: application\ntechnology: helm\nhosting:\n- helm_host\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules-v3/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application::terraform@ansible_terraform_host\nrequirements:\n- host: ansible_terraform_host\n- database: database\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database~database::terraform\nrequirements:\n- host: dbms\ndbms:\ntype: dbms~dbms::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules/","title":"technologies-rules","text":""},{"location":"variability4tosca/tests/test-technologies-rules/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\nenrich_technologies: true\ntechnology_rules:\n- component: application\ntechnology: terraform\nhosting:\n- terraform_host\n- component: application\ntechnology: terraform\nhosting:\n- ansible_terraform_host\n- component: another\ntechnology: terraform\nhosting:\n- another_terraform_host\n- component: database\ntechnology: terraform\n- component: dbms\ntechnology: terraform\n- component: application\ntechnology: ansible\nhosting:\n- ansible_host\n- component: application\ntechnology: ansible\nhosting:\n- ansible_terraform_host\n- component: application\ntechnology: helm\nhosting:\n- helm_host\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-rules/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nterraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\nansible_terraform_host:\nderived_from: tosca.nodes.Root\nmetadata:\nvintner_abstract: 'true'\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nnode_templates:\napplication:\ntype: application~application::terraform@ansible_terraform_host\nrequirements:\n- host: ansible_terraform_host\n- database: database\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database~database::terraform\nrequirements:\n- host: dbms\ndbms:\ntype: dbms~dbms::terraform\n
"},{"location":"variability4tosca/tests/test-technologies-throw-required/","title":"technologies-throw-required","text":""},{"location":"variability4tosca/tests/test-technologies-throw-required/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0_rc_3\nnode_types:\napplication:\nderived_from: tosca.nodes.Root\nansible_host:\nderived_from: tosca.nodes.Root\nterraform_host:\nderived_from: tosca.nodes.Root\nansible_terraform_host:\nderived_from: tosca.nodes.Root\ndatabase:\nderived_from: tosca.nodes.Root\ndbms:\nderived_from: tosca.nodes.Root\ntopology_template:\nvariability:\noptions:\nmode: semantic-loose\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\ntechnology_constraint: true\ntechnology_rules:\n- component: ansible_host\ntechnology: terraform\n- component: terraform_host\ntechnology: terraform\n- component: ansible_terraform_host\ntechnology: terraform\n- component: database\ntechnology: terraform\n- component: dbms\ntechnology: terraform\nnode_templates:\napplication:\ntype: application\npersistent: true\nrequirements:\n- host:\nnode: ansible_host\nconditions: false\n- host:\nnode: terraform_host\nconditions: false\n- host:\nnode: ansible_terraform_host\n- database:\nnode: database\nansible_host:\ntype: ansible_host\nterraform_host:\ntype: terraform_host\nansible_terraform_host:\ntype: ansible_terraform_host\ndatabase:\ntype: database\ntechnology: terraform\nrequirements:\n- host:\nnode: dbms\ndbms:\ntype: dbms\ntechnology: terraform\n
"},{"location":"variability4tosca/tests/test-technologies-throw-required/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Node \"application\" has no technology candidates\n
"},{"location":"variability4tosca/tests/test-technologies-unique-disabled/","title":"technologies-unique-disabled","text":""},{"location":"variability4tosca/tests/test-technologies-unique-disabled/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: false\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n- puppet:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-unique-disabled/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container~container::puppet\n
"},{"location":"variability4tosca/tests/test-technologies-unique/","title":"technologies-unique","text":""},{"location":"variability4tosca/tests/test-technologies-unique/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\noptimization_technologies: true\noptimization_technologies_unique: true\ntechnology_pruning: true\nnode_templates:\ncontainer:\ntype: container\ntechnology:\n- ansible:\nconditions: true\n- terraform:\nconditions: true\n- puppet:\nconditions: true\n
"},{"location":"variability4tosca/tests/test-technologies-unique/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
The result is ambiguous considering technologies (besides optimization)\n
"},{"location":"variability4tosca/tests/test-variability-inputs-implies/","title":"variability-inputs-implies","text":""},{"location":"variability4tosca/tests/test-variability-inputs-implies/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nimplies: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-implies/#expected-error","title":"Expected Error","text":"The following error is expected to be thrown, when resolving variability.
Variability inputs constraints are violated\n
"},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/","title":"variability-inputs-no-constraints","text":""},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/#variable-service-template","title":"Variable Service Template","text":"The variability of the following variable service template shall be resolved.
tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-no-constraints/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"The following variability-resolved service template is expected.
tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"tags/","title":"Tags","text":"This document holds tags used throughout this documentation.
","tags":["Misc"]},{"location":"tags/#algorithms-2022","title":"Algorithms 2022","text":"00S*%XR&?VD(;9x=hJ&^3XfX*zl^q|VYon&7~&qDwz?MKCZIolb?L zS2~5pp4v_ck3-cNB}*K;kS40sfr_#bQo~UxV>&n}M{17;C8M4b5>`+?MxZtZTERyB zGKueq3kW7a*BI-|5bcGHe_{RR7Q>ZJY(Bs^v#-i{*?7}&grjR+z7Db?m#%%4u;2{i zi_zQ9sS7K`PAcgi2i@Goz^!S8y}v$6^{7QF%j<&-OPNJ%rt8BbvvGyh>!%=t+6wFC zUXFf{S!2}d@a?8v3rwIQ?sBC}~t6F{$9 ILj)i!Y)Fdn~WK+k# z@lAAbSaG-F$N-WA2T@WbS#U}QkeyMF+O*s(m-EpZ6Slgm=pY4;!OVpgA2R>N6;>gi zC(Rb0BI}G)R24pCB@g(J@wx>aNb?{y9NN7N3Lnyi9T?;=DKfoEtBfusMHD);JF vP<}F@mOTrE@vzoT*0d*n?t6`|vr?MFRpn!hD6C zFSu_wY73s>n>KHqX4`dDP}^;vYWW?Uc)|2KXTO7q8?Lv311$s0lvFLFznm3dcw~p2 zfH_fT-kHQXVRMnSHlBrW6DI?48p~qnjhGx7J!0m5bcLz{-$x2gc^uoFfkcmd8vlsc z`lYmGn&A_wYXl_O&WeM9Br6+X<4_LCR*~|U?MY>W*_^f6exvJ)z#8L8L6S*bNiZ!l z+Vy2u9*0@Tv<{bMAuaVq0;g%o(|irnI{?R?7LCsN9UswOz6WsdNmu&9oJ>?^qV~ep z p;UniFj#s97S9!3W34TTRE5b5RlfR1hTOvk49V3M3gdl0wr^t4#Y{;u zGdl&z)I5|!>bqP7?2d_ro_Ki}>Auby7vT=HTtw^Kow0Y>qTMmEYfET0hHZ(>!?I=O zWQkenMh51k7a5s{PPF29HyAl4N--m5qZKn|CTbxyH?=qs^HGZvGY_>m2qmk#_!!7> zap4xsaE@FRHFci5v`^6zo@7@sW7MB={JG)s&;fMH9qo-}(Dnl-8(lr)WugY?m^|8^ zMT 2L6gz9~!Ae>^%e$9Hsu 6;9YGF>lg{vF%c|}f#D36g=iTL5|_bw z3>E#O(76^>p-o{rFI)Kq?~sZYz #Kj&2( zP)FtoCa4QD 1_N9YUGRZ-o*5%}L!)<_IV7YgjrFkUSpyzkMYsVh zRbm)k0%kZpg+$D5lDZ4a!-5JW9XcZ-9{S-m17?1LP7PcK1@1iaB(~7TQO9|y6bDjd zMr}q+i;d||4KMU#o3 #Km zIx6KJEQza6cG^YFZCYXP0oh{nmSBzAgN<&~?5lmS49NPYks1(7nOc?w9h1#;sW0OV z^cO(kM$9>9uJ$#f1q4Mbr_qz;@!P|KIY6@hM1p_*`}aTo@!Rje{0ElszrXzJS6H~T z1kz8rA|k>iPxV|3EFA~;;6N5sdJhDbB4vWdPf%Hbgych9qZ!%o^HMI5B2Gb!sPh&7 z&YCKevm}L}_wlO5Tejry_>muT%|NvLkZ(YT=AM`b1rgp`xeFd|E7Xh0IZ;Eh4v7{0 z+w(*g 4uoz2rpo~)rT&{b?Mm1#Y? DhTmDvrP zm#D!9&5XUw4xf^wI7s{wItQ^2?`Iyj4k>8lAoq*xJO%H(&F3HN__Biw{`3-+aK2lE z*VywMIk;N%iKWx=Gn0B_^R_bj@BQLs-x(*tgLB6KNp=de?!b(8SihW$7j?M{ zuEYAfP+cRY;2E#7@G2)T;qVTVaGcybP3uHt9;iDj4u%J6*$As7@qn#Jc_u1=Yn-xj zLK~-^5ZO2ly#`u}BO|gLbBBhOVo!)HLn<5W?wkRUCAc?7Z;kiRQk)=>CD|BH3R;Xk zA+ijoiX4+qv2fa%G2^ *;y&hcgDG&C?n9_=tQ?AoY3GvsWlnK2J%h%q$O zJvp+ut|WG-&=VrN7Jr5~tbzNvBO|gL@1?>HxiTQK1eI*DJ97p^mS8LIvFD#MAhHBa z@U>Z#K7?F3zXXf9Sbj#k*wDiQm4jG&UyT9q6f}WWa$e_zD@J&Z30lN?6%$>UkZhxo zhk_fSTq8T&9V|=AWhxOoDCXApb<*IlF=1;&54E@3v>Q}7Cu^Nw;&!N2TpruQUJlO* z`&2if?~Kj_Te7}`-j`*02OOY{rhHBXuy3)-eHQGN>G-sYj)?K(i|;^-mKfbYZ(E>u z7rc-hF;KpMz6kAE3H_X$lh9YU9bjz%awX~b|LNe|HbNc&ml`L;2V?Kk2EiJ$NZL9l z+;qh`=J13s&*2G9pq|P`n{={ADj_m$=BlIfZKcAp^M+#11T<`>AY;^mp - - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1823,8 +1823,8 @@ - - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1837,8 +1837,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1851,8 +1851,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1865,8 +1865,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1879,8 +1879,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1893,8 +1893,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1907,8 +1907,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1921,8 +1921,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1935,8 +1935,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1949,8 +1949,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1963,8 +1963,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1977,8 +1977,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8080,7 +8080,7 @@Appendix B "Type Definitions"September 14, 2024 + September 21, 2024 diff --git a/sofdcar/guides/zone/index.html b/sofdcar/guides/zone/index.html index 480f3aa9e7..3e5a7fb7cd 100644 --- a/sofdcar/guides/zone/index.html +++ b/sofdcar/guides/zone/index.html @@ -1809,8 +1809,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1823,8 +1823,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1837,8 +1837,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1851,8 +1851,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1865,8 +1865,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1879,8 +1879,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1893,8 +1893,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1907,8 +1907,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1921,8 +1921,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1935,8 +1935,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1949,8 +1949,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1963,8 +1963,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1977,8 +1977,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8197,7 +8197,7 @@Appendix B "Type Definitions"September 14, 2024 + September 21, 2024 diff --git a/sofdcar/profile/index.html b/sofdcar/profile/index.html index 456ef905de..e53e89a4f4 100644 --- a/sofdcar/profile/index.html +++ b/sofdcar/profile/index.html @@ -1809,8 +1809,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1823,8 +1823,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1837,8 +1837,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1851,8 +1851,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1865,8 +1865,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1879,8 +1879,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1893,8 +1893,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1907,8 +1907,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1921,8 +1921,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1935,8 +1935,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1949,8 +1949,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1963,8 +1963,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1977,8 +1977,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -11346,7 +11346,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/tags/index.html b/tags/index.html index a9a0e50b67..3097b35a21 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1805,8 +1805,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1819,8 +1819,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1833,8 +1833,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1847,8 +1847,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1861,8 +1861,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1875,8 +1875,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1889,8 +1889,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1903,8 +1903,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1917,8 +1917,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1931,8 +1931,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1945,8 +1945,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1959,8 +1959,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1973,8 +1973,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8145,7 +8145,7 @@xOperaSeptember 14, 2024 + September 21, 2024 diff --git a/uninstallation/index.html b/uninstallation/index.html index 571c0ce116..70bbb6e4db 100644 --- a/uninstallation/index.html +++ b/uninstallation/index.html @@ -1819,8 +1819,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1833,8 +1833,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1847,8 +1847,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1861,8 +1861,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1875,8 +1875,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1889,8 +1889,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1903,8 +1903,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1917,8 +1917,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1931,8 +1931,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1959,8 +1959,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1973,8 +1973,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1987,8 +1987,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7699,7 +7699,7 @@UninstallationSeptember 14, 2024 + September 21, 2024 diff --git a/usage/index.html b/usage/index.html index 54864d115f..0178a8e771 100644 --- a/usage/index.html +++ b/usage/index.html @@ -1885,8 +1885,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1899,8 +1899,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1913,8 +1913,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1927,8 +1927,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1941,8 +1941,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1955,8 +1955,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1969,8 +1969,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1983,8 +1983,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1997,8 +1997,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -2011,8 +2011,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2025,8 +2025,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2039,8 +2039,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2053,8 +2053,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7835,7 +7835,7 @@Start the ServerSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/benchmark/index.html b/variability4tosca/benchmark/index.html index 554927c2a4..8bc120c68a 100644 --- a/variability4tosca/benchmark/index.html +++ b/variability4tosca/benchmark/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8125,7 +8125,7 @@Service Template Under TestSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/dynamic/index.html b/variability4tosca/dynamic/index.html index 40dcc78d03..eecb2e1794 100644 --- a/variability4tosca/dynamic/index.html +++ b/variability4tosca/dynamic/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7834,7 +7834,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/feature-ide/index.html b/variability4tosca/feature-ide/index.html index a414c379b0..ddab72e0fd 100644 --- a/variability4tosca/feature-ide/index.html +++ b/variability4tosca/feature-ide/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8086,7 +8086,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/guides/artifacts/index.html b/variability4tosca/guides/artifacts/index.html index 3c44984351..d09acd9f3a 100644 --- a/variability4tosca/guides/artifacts/index.html +++ b/variability4tosca/guides/artifacts/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7982,7 +7982,7 @@Publication Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/guides/aware/index.html b/variability4tosca/guides/aware/index.html index c61c42dce6..416d47e15f 100644 --- a/variability4tosca/guides/aware/index.html +++ b/variability4tosca/guides/aware/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8025,7 +8025,7 @@Publication Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/guides/modes/index.html b/variability4tosca/guides/modes/index.html index 2b49cb292c..0a499496eb 100644 --- a/variability4tosca/guides/modes/index.html +++ b/variability4tosca/guides/modes/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8023,7 +8023,7 @@Publication Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/guides/pipes-and-filters/index.html b/variability4tosca/guides/pipes-and-filters/index.html index 6b84de8711..0f492b24f5 100644 --- a/variability4tosca/guides/pipes-and-filters/index.html +++ b/variability4tosca/guides/pipes-and-filters/index.html @@ -1803,8 +1803,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1817,8 +1817,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1831,8 +1831,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1845,8 +1845,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1859,8 +1859,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1873,8 +1873,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1887,8 +1887,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1901,8 +1901,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1915,8 +1915,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1929,8 +1929,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1943,8 +1943,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1957,8 +1957,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1971,8 +1971,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7769,7 +7769,7 @@Undeployment Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/guides/pruning/index.html b/variability4tosca/guides/pruning/index.html index 98bdbc73be..3fb9d8feec 100644 --- a/variability4tosca/guides/pruning/index.html +++ b/variability4tosca/guides/pruning/index.html @@ -1811,8 +1811,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1825,8 +1825,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1839,8 +1839,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1853,8 +1853,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1867,8 +1867,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1881,8 +1881,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1895,8 +1895,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1909,8 +1909,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1923,8 +1923,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1937,8 +1937,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -1951,8 +1951,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -1965,8 +1965,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -1979,8 +1979,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7971,7 +7971,7 @@Publication Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/motivation/index.html b/variability4tosca/motivation/index.html index 252481fd6d..5d7c4b5412 100644 --- a/variability4tosca/motivation/index.html +++ b/variability4tosca/motivation/index.html @@ -1908,8 +1908,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1922,8 +1922,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1936,8 +1936,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1950,8 +1950,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1964,8 +1964,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1978,8 +1978,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1992,8 +1992,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -2006,8 +2006,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -2020,8 +2020,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -2034,8 +2034,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2048,8 +2048,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2062,8 +2062,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2076,8 +2076,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7950,7 +7950,7 @@Publication Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/rules/index.html b/variability4tosca/rules/index.html index 3c2fbdbc61..d123eec917 100644 --- a/variability4tosca/rules/index.html +++ b/variability4tosca/rules/index.html @@ -3065,8 +3065,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -3079,8 +3079,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -3093,8 +3093,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -3107,8 +3107,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -3121,8 +3121,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -3135,8 +3135,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -3149,8 +3149,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -3163,8 +3163,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -3177,8 +3177,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -3191,8 +3191,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -3205,8 +3205,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -3219,8 +3219,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -3233,8 +3233,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -10188,16 +10188,16 @@Deployme
Deployment Technologies¶
Technology rules are defined in the context of the following deployment technologies.
Ansible¶
-Ansible is an open-source automation tool primarily used for configuration management, application deployment, and task automation. It allows IT administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Its main purpose is to simplify the management of software configurations, reduce manual effort, and ensure consistency and reliability in IT operations, making it an ideal tool for automating repetitive tasks and orchestrating complex workflows across diverse environments. +
Ansible is an automation tool primarily used for configuration management, application deployment, and task automation. It allows system administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Find out more.
Terraform¶
-Terraform is an open-source infrastructure as code (IaC) tool developed by HashiCorp that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL) or JSON, Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs, making it a powerful tool for automating infrastructure deployment, scaling, and version control. However, Terraform is specifically designed for managing infrastructure and is not intended for managing software on remote targets, which is outside its primary scope. +
Terraform is an infrastructure as code (IaC) tool that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL), Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs. Find out more.
Kubernetes¶
-Kubernetes, also known as K8s, is an open-source system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a robust platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications, making it a critical tool for modern software delivery and operational efficiency. +
Kubernetes is a system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications. Find out more.
Docker Compose¶
-Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It streamlines the management of complex applications by simplifying the control of services, networks, and volumes, allowing developers to manage the entire stack effortlessly. Compose is particularly suited for development, testing, and single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem, as it only deploys on Docker Engine, making it an ideal choice for those heavily invested in Docker-based workflows. +
Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It allows the management of services, networks, and volumes, in a declarative manner. Compose is particularly suited for single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem. Find out more.
Derivation Rules¶
We use the following derivation rules to assess deployment qualities.
@@ -17079,7 +17079,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/specification/index.html b/variability4tosca/specification/index.html index 82a3aa3517..462586fc27 100644 --- a/variability4tosca/specification/index.html +++ b/variability4tosca/specification/index.html @@ -2343,8 +2343,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -2357,8 +2357,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -2371,8 +2371,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -2385,8 +2385,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -2399,8 +2399,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -2413,8 +2413,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -2427,8 +2427,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -2441,8 +2441,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -2455,8 +2455,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -2469,8 +2469,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2483,8 +2483,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2497,8 +2497,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2511,8 +2511,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -11471,6 +11471,12 @@Logical OperatorsDisclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/testing/index.html b/variability4tosca/testing/index.html index 714504c20d..ba5f7bdece 100644 --- a/variability4tosca/testing/index.html +++ b/variability4tosca/testing/index.html @@ -1887,8 +1887,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1901,8 +1901,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1915,8 +1915,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1929,8 +1929,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1943,8 +1943,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1957,8 +1957,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1971,8 +1971,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1985,8 +1985,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1999,8 +1999,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -2013,8 +2013,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2027,8 +2027,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2041,8 +2041,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2055,8 +2055,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8030,7 +8030,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/introduction/index.html b/variability4tosca/tests/introduction/index.html index a1e082b189..58f22800b7 100644 --- a/variability4tosca/tests/introduction/index.html +++ b/variability4tosca/tests/introduction/index.html @@ -1882,8 +1882,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1896,8 +1896,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1910,8 +1910,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1924,8 +1924,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1952,8 +1952,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -2008,8 +2008,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2022,8 +2022,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2036,8 +2036,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2050,8 +2050,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -8028,55 +8028,55 @@Conformance TestsOperator "implies": false false -> true +
Operator "exo": all false -> false 53 -Operator "implies": false true -> true +Operator "exo": One ture -> true 54 -Operator "implies": true false -> false +Operator "exo": all true -> false 55 -Operator "implies": true true -> true +Operator "implies": false false -> true 56 -Operator "not" Evaluates to "false" +Operator "implies": false true -> true 57 -Operator "not" Evaluates to "true" +Operator "implies": true false -> false 58 -Operator "or" Evaluates to "False" (Empty) +Operator "implies": true true -> true 59 -Operator "or" Evaluates to "False" +Operator "not" Evaluates to "false" 60 -Operator "or" Evaluates to "true" +Operator "not" Evaluates to "true" 61 -Operator "or" Evaluates to "true" (All "true") +Operator "or" Evaluates to "False" (Empty) 62 -Operator "xor": all false -> false +Operator "or" Evaluates to "False" 63 -Operator "xor": One ture -> true +Operator "or" Evaluates to "true" 64 -Operator "xor": all true -> false +Operator "or" Evaluates to "true" (All "true") 65 @@ -9409,7 +9409,7 @@Disclaimer of Warranty Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-count/index.html b/variability4tosca/tests/test-analytical-operators-count/index.html index fcd05dafd9..88544169bf 100644 --- a/variability4tosca/tests/test-analytical-operators-count/index.html +++ b/variability4tosca/tests/test-analytical-operators-count/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-exponential_regression/index.html b/variability4tosca/tests/test-analytical-operators-exponential_regression/index.html index 8837b78548..d948d6113e 100644 --- a/variability4tosca/tests/test-analytical-operators-exponential_regression/index.html +++ b/variability4tosca/tests/test-analytical-operators-exponential_regression/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7768,7 +7768,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-linear_regression/index.html b/variability4tosca/tests/test-analytical-operators-linear_regression/index.html index f314321cf7..15759d2f00 100644 --- a/variability4tosca/tests/test-analytical-operators-linear_regression/index.html +++ b/variability4tosca/tests/test-analytical-operators-linear_regression/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7764,7 +7764,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-logarithmic_regression/index.html b/variability4tosca/tests/test-analytical-operators-logarithmic_regression/index.html index 816a9e2451..c36ab27ff9 100644 --- a/variability4tosca/tests/test-analytical-operators-logarithmic_regression/index.html +++ b/variability4tosca/tests/test-analytical-operators-logarithmic_regression/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7772,7 +7772,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-max/index.html b/variability4tosca/tests/test-analytical-operators-max/index.html index a81596150f..b2f1e1eb47 100644 --- a/variability4tosca/tests/test-analytical-operators-max/index.html +++ b/variability4tosca/tests/test-analytical-operators-max/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-mean/index.html b/variability4tosca/tests/test-analytical-operators-mean/index.html index 8dc370705b..5340f4063a 100644 --- a/variability4tosca/tests/test-analytical-operators-mean/index.html +++ b/variability4tosca/tests/test-analytical-operators-mean/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7760,7 +7760,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-median/index.html b/variability4tosca/tests/test-analytical-operators-median/index.html index 568cb9fd79..a0cecb79b3 100644 --- a/variability4tosca/tests/test-analytical-operators-median/index.html +++ b/variability4tosca/tests/test-analytical-operators-median/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7760,7 +7760,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-min/index.html b/variability4tosca/tests/test-analytical-operators-min/index.html index 4ad78c1699..c5bea88001 100644 --- a/variability4tosca/tests/test-analytical-operators-min/index.html +++ b/variability4tosca/tests/test-analytical-operators-min/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-polynomial_regression/index.html b/variability4tosca/tests/test-analytical-operators-polynomial_regression/index.html index d829878aae..ff89b5ffef 100644 --- a/variability4tosca/tests/test-analytical-operators-polynomial_regression/index.html +++ b/variability4tosca/tests/test-analytical-operators-polynomial_regression/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7766,7 +7766,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-standard_deviation/index.html b/variability4tosca/tests/test-analytical-operators-standard_deviation/index.html index a867285aea..c42ff0b6f5 100644 --- a/variability4tosca/tests/test-analytical-operators-standard_deviation/index.html +++ b/variability4tosca/tests/test-analytical-operators-standard_deviation/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-sum/index.html b/variability4tosca/tests/test-analytical-operators-sum/index.html index 7ab0dcf577..ce6a1c6307 100644 --- a/variability4tosca/tests/test-analytical-operators-sum/index.html +++ b/variability4tosca/tests/test-analytical-operators-sum/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-analytical-operators-variance/index.html b/variability4tosca/tests/test-analytical-operators-variance/index.html index b0846ec036..8575f18f44 100644 --- a/variability4tosca/tests/test-analytical-operators-variance/index.html +++ b/variability4tosca/tests/test-analytical-operators-variance/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-add/index.html b/variability4tosca/tests/test-arithmetic-operators-add/index.html index 226a6f5617..8971dd8b77 100644 --- a/variability4tosca/tests/test-arithmetic-operators-add/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-add/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7778,7 +7778,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-div/index.html b/variability4tosca/tests/test-arithmetic-operators-div/index.html index d378cf196a..7e63d0e008 100644 --- a/variability4tosca/tests/test-arithmetic-operators-div/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-div/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7774,7 +7774,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-mod-even/index.html b/variability4tosca/tests/test-arithmetic-operators-mod-even/index.html index cb0cbeb247..e569774be2 100644 --- a/variability4tosca/tests/test-arithmetic-operators-mod-even/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-mod-even/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7770,7 +7770,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-mod-odd/index.html b/variability4tosca/tests/test-arithmetic-operators-mod-odd/index.html index 8893ea8c92..4061c25c48 100644 --- a/variability4tosca/tests/test-arithmetic-operators-mod-odd/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-mod-odd/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7770,7 +7770,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-mul/index.html b/variability4tosca/tests/test-arithmetic-operators-mul/index.html index 8f13e44eb3..dd3de4486f 100644 --- a/variability4tosca/tests/test-arithmetic-operators-mul/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-mul/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7774,7 +7774,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-arithmetic-operators-sub/index.html b/variability4tosca/tests/test-arithmetic-operators-sub/index.html index 11c38bddb6..741a441d25 100644 --- a/variability4tosca/tests/test-arithmetic-operators-sub/index.html +++ b/variability4tosca/tests/test-arithmetic-operators-sub/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7778,7 +7778,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-artifact-presence-number-absent/index.html b/variability4tosca/tests/test-artifacts-artifact-presence-number-absent/index.html index 5f705d94cd..f0d2ceffb2 100644 --- a/variability4tosca/tests/test-artifacts-artifact-presence-number-absent/index.html +++ b/variability4tosca/tests/test-artifacts-artifact-presence-number-absent/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7752,7 +7752,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-artifact-presence-number-present/index.html b/variability4tosca/tests/test-artifacts-artifact-presence-number-present/index.html index 1b9e1b49a3..ba8a29b326 100644 --- a/variability4tosca/tests/test-artifacts-artifact-presence-number-present/index.html +++ b/variability4tosca/tests/test-artifacts-artifact-presence-number-present/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7768,7 +7768,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-artifact-presence-string-absent/index.html b/variability4tosca/tests/test-artifacts-artifact-presence-string-absent/index.html index 284853a078..ad72bb2ff7 100644 --- a/variability4tosca/tests/test-artifacts-artifact-presence-string-absent/index.html +++ b/variability4tosca/tests/test-artifacts-artifact-presence-string-absent/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7752,7 +7752,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-artifact-presence-string-present/index.html b/variability4tosca/tests/test-artifacts-artifact-presence-string-present/index.html index d916944f06..958e917f80 100644 --- a/variability4tosca/tests/test-artifacts-artifact-presence-string-present/index.html +++ b/variability4tosca/tests/test-artifacts-artifact-presence-string-present/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7768,7 +7768,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-conditional/index.html b/variability4tosca/tests/test-artifacts-conditional/index.html index 1685ad594b..2a4c6e4c95 100644 --- a/variability4tosca/tests/test-artifacts-conditional/index.html +++ b/variability4tosca/tests/test-artifacts-conditional/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7824,7 +7824,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-container-presence-absent/index.html b/variability4tosca/tests/test-artifacts-container-presence-absent/index.html index cd91101c99..c6ef09fd67 100644 --- a/variability4tosca/tests/test-artifacts-container-presence-absent/index.html +++ b/variability4tosca/tests/test-artifacts-container-presence-absent/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7748,7 +7748,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-container-presence-present/index.html b/variability4tosca/tests/test-artifacts-container-presence-present/index.html index 955ab8305e..3df50d7dcd 100644 --- a/variability4tosca/tests/test-artifacts-container-presence-present/index.html +++ b/variability4tosca/tests/test-artifacts-container-presence-present/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7756,7 +7756,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-default-alternative-false/index.html b/variability4tosca/tests/test-artifacts-default-alternative-false/index.html index 69dcbfd0cd..174cecf29f 100644 --- a/variability4tosca/tests/test-artifacts-default-alternative-false/index.html +++ b/variability4tosca/tests/test-artifacts-default-alternative-false/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7818,7 +7818,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-default-alternative/index.html b/variability4tosca/tests/test-artifacts-default-alternative/index.html index bee7a76e25..b6afde5820 100644 --- a/variability4tosca/tests/test-artifacts-default-alternative/index.html +++ b/variability4tosca/tests/test-artifacts-default-alternative/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7824,7 +7824,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-default-condition/index.html b/variability4tosca/tests/test-artifacts-default-condition/index.html index 44a51d23be..0e1d4975ec 100644 --- a/variability4tosca/tests/test-artifacts-default-condition/index.html +++ b/variability4tosca/tests/test-artifacts-default-condition/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7758,7 +7758,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/index.html b/variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/index.html index 6cf0765be9..b31094914f 100644 --- a/variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/index.html +++ b/variability4tosca/tests/test-artifacts-dont-throw-ambiguous-artifact/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7786,7 +7786,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-prune/index.html b/variability4tosca/tests/test-artifacts-prune/index.html index c6e78657b3..79e6ce768b 100644 --- a/variability4tosca/tests/test-artifacts-prune/index.html +++ b/variability4tosca/tests/test-artifacts-prune/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7760,7 +7760,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-managed-manual/index.html b/variability4tosca/tests/test-artifacts-pruning-managed-manual/index.html index 2b527d85aa..e9d8b868e9 100644 --- a/variability4tosca/tests/test-artifacts-pruning-managed-manual/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-managed-manual/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7822,7 +7822,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-managed-rules-host/index.html b/variability4tosca/tests/test-artifacts-pruning-managed-rules-host/index.html index b8f56d234d..a2cc94b728 100644 --- a/variability4tosca/tests/test-artifacts-pruning-managed-rules-host/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-managed-rules-host/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7870,7 +7870,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/index.html b/variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/index.html index cb091c64b6..bf9457370c 100644 --- a/variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-managed-rules-multiple-different/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7854,7 +7854,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-managed-rules-none/index.html b/variability4tosca/tests/test-artifacts-pruning-managed-rules-none/index.html index 48eb18c358..a896cd840b 100644 --- a/variability4tosca/tests/test-artifacts-pruning-managed-rules-none/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-managed-rules-none/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7820,7 +7820,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-managed-rules/index.html b/variability4tosca/tests/test-artifacts-pruning-managed-rules/index.html index 7c19b5241e..77581fe573 100644 --- a/variability4tosca/tests/test-artifacts-pruning-managed-rules/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-managed-rules/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7814,7 +7814,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/index.html b/variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/index.html index fb734b81e4..334303c5b0 100644 --- a/variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/index.html +++ b/variability4tosca/tests/test-artifacts-pruning-manged-rules-multiple-same/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7854,7 +7854,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/index.html b/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/index.html index d25f410246..a8db9be8e0 100644 --- a/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/index.html +++ b/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7754,7 +7754,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/index.html b/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/index.html index dbcd349217..5fb6ca1366 100644 --- a/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/index.html +++ b/variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7764,7 +7764,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/index.html b/variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/index.html index 123df36c6c..67da5495e4 100644 --- a/variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/index.html +++ b/variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7752,7 +7752,7 @@Expected ErrorSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/index.html b/variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/index.html index 1f136d56b9..28f1951414 100644 --- a/variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/index.html +++ b/variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7740,7 +7740,7 @@Expected ErrorSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-throw-ambiguous-default/index.html b/variability4tosca/tests/test-artifacts-throw-ambiguous-default/index.html index 5fb3eacc80..6d8a94ab89 100644 --- a/variability4tosca/tests/test-artifacts-throw-ambiguous-default/index.html +++ b/variability4tosca/tests/test-artifacts-throw-ambiguous-default/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7744,7 +7744,7 @@Expected ErrorSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-throw-missing-artifact-container/index.html b/variability4tosca/tests/test-artifacts-throw-missing-artifact-container/index.html index aa96aeb31f..93b7a7a3f4 100644 --- a/variability4tosca/tests/test-artifacts-throw-missing-artifact-container/index.html +++ b/variability4tosca/tests/test-artifacts-throw-missing-artifact-container/index.html @@ -1861,8 +1861,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1875,8 +1875,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1889,8 +1889,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1903,8 +1903,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1917,8 +1917,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1931,8 +1931,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1945,8 +1945,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1959,8 +1959,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1973,8 +1973,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1987,8 +1987,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2001,8 +2001,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2015,8 +2015,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2029,8 +2029,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7738,7 +7738,7 @@Expected ErrorSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/index.html b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/index.html index b8f90413be..21594441a7 100644 --- a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/index.html +++ b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7778,7 +7778,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/index.html b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/index.html index 002bf52a1e..adb4d2d9d9 100644 --- a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/index.html +++ b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7780,7 +7780,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/index.html b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/index.html index 0aee8e4ed0..6616b23850 100644 --- a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/index.html +++ b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7780,7 +7780,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/index.html b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/index.html index 1a60ebd828..9a0e69e763 100644 --- a/variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/index.html +++ b/variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7762,7 +7762,7 @@Expected ErrorSeptember 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-boolean-operators-and-empty/index.html b/variability4tosca/tests/test-boolean-operators-and-empty/index.html index 56c3e7a3f6..9b9a99ecbe 100644 --- a/variability4tosca/tests/test-boolean-operators-and-empty/index.html +++ b/variability4tosca/tests/test-boolean-operators-and-empty/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7764,7 +7764,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-boolean-operators-and-false/index.html b/variability4tosca/tests/test-boolean-operators-and-false/index.html index 998ea93676..caf5395507 100644 --- a/variability4tosca/tests/test-boolean-operators-and-false/index.html +++ b/variability4tosca/tests/test-boolean-operators-and-false/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7764,7 +7764,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-boolean-operators-and-nested-false/index.html b/variability4tosca/tests/test-boolean-operators-and-nested-false/index.html index c9535caba1..0f3ab77f8f 100644 --- a/variability4tosca/tests/test-boolean-operators-and-nested-false/index.html +++ b/variability4tosca/tests/test-boolean-operators-and-nested-false/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7764,7 +7764,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-boolean-operators-and-nested-true/index.html b/variability4tosca/tests/test-boolean-operators-and-nested-true/index.html index b1ee50dba6..321eefd72a 100644 --- a/variability4tosca/tests/test-boolean-operators-and-nested-true/index.html +++ b/variability4tosca/tests/test-boolean-operators-and-nested-true/index.html @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7772,7 +7772,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 diff --git a/variability4tosca/tests/test-boolean-operators-and-true/index.html b/variability4tosca/tests/test-boolean-operators-and-true/index.html index 7f244fdc4a..3fea8f2e21 100644 --- a/variability4tosca/tests/test-boolean-operators-and-true/index.html +++ b/variability4tosca/tests/test-boolean-operators-and-true/index.html @@ -14,7 +14,7 @@ - + @@ -1868,8 +1868,8 @@
- - Operator "implies": false false -> true + + Operator "exo": all false -> false @@ -1882,8 +1882,8 @@- - Operator "implies": false true -> true + + Operator "exo": all true -> false @@ -1896,8 +1896,8 @@- - Operator "implies": true false -> false + + Operator "exo": One ture -> true @@ -1910,8 +1910,8 @@- - Operator "implies": true true -> true + + Operator "implies": false false -> true @@ -1924,8 +1924,8 @@- - Operator "not" Evaluates to "false" + + Operator "implies": false true -> true @@ -1938,8 +1938,8 @@- - Operator "not" Evaluates to "true" + + Operator "implies": true false -> false @@ -1952,8 +1952,8 @@- - Operator "or" Evaluates to "False" (Empty) + + Operator "implies": true true -> true @@ -1966,8 +1966,8 @@- - Operator "or" Evaluates to "False" + + Operator "not" Evaluates to "false" @@ -1980,8 +1980,8 @@- - Operator "or" Evaluates to "true" (All "true") + + Operator "not" Evaluates to "true" @@ -1994,8 +1994,8 @@- - Operator "or" Evaluates to "true" + + Operator "or" Evaluates to "False" (Empty) @@ -2008,8 +2008,8 @@- - Operator "xor": all false -> false + + Operator "or" Evaluates to "False" @@ -2022,8 +2022,8 @@- - Operator "xor": all true -> false + + Operator "or" Evaluates to "true" (All "true") @@ -2036,8 +2036,8 @@- - Operator "xor": One ture -> true + + Operator "or" Evaluates to "true" @@ -7772,7 +7772,7 @@Variability-Resolved Service Temp Last update: - September 14, 2024 + September 21, 2024 @@ -7814,13 +7814,13 @@
Variability-Resolved Service Temp - +