From 78a3cc9e5e17f4a044e97dc23abbb671c0f1ee21 Mon Sep 17 00:00:00 2001 From: milesstoetzner Date: Fri, 13 Sep 2024 20:58:12 +0000 Subject: [PATCH] Deployed 311a6b0e with MkDocs version: 1.6.1 --- assets/documents/dependencies.csv | 33 +- dependencies/index.html | 480 +++++++++++++++++------------- search/search_index.json | 2 +- 3 files changed, 296 insertions(+), 219 deletions(-) diff --git a/assets/documents/dependencies.csv b/assets/documents/dependencies.csv index 4c86c5809..1e6e1dfef 100644 --- a/assets/documents/dependencies.csv +++ b/assets/documents/dependencies.csv @@ -26,7 +26,7 @@ "bare-events@2.4.2","Apache-2.0","https://github.com/holepunchto/bare-events" "base64-js@1.5.1","MIT","https://github.com/beatgammit/base64-js" "binary-extensions@2.2.0","MIT","https://github.com/sindresorhus/binary-extensions" -"body-parser@1.20.2","MIT","https://github.com/expressjs/body-parser" +"body-parser@1.20.3","MIT","https://github.com/expressjs/body-parser" "brace-expansion@1.1.11","MIT","https://github.com/juliangruber/brace-expansion" "brace-expansion@2.0.1","MIT","https://github.com/juliangruber/brace-expansion" "braces@3.0.2","MIT","https://github.com/micromatch/braces" @@ -35,7 +35,7 @@ "buffer-crc32@1.0.0","MIT","https://github.com/brianloveswords/buffer-crc32" "buffer@6.0.3","MIT","https://github.com/feross/buffer" "bytes@3.1.2","MIT","https://github.com/visionmedia/bytes.js" -"call-bind@1.0.2","MIT","https://github.com/ljharb/call-bind" +"call-bind@1.0.7","MIT","https://github.com/ljharb/call-bind" "call-me-maybe@1.0.2","MIT","https://github.com/limulus/call-me-maybe" "chalk@4.1.2","MIT","https://github.com/chalk/chalk" "chokidar@3.5.3","MIT","https://github.com/paulmillr/chokidar" @@ -61,6 +61,7 @@ "dayjs@1.11.11","MIT","https://github.com/iamkun/dayjs" "debug@2.6.9","MIT","https://github.com/visionmedia/debug" "debug@4.3.4","MIT","https://github.com/debug-js/debug" +"define-data-property@1.1.4","MIT","https://github.com/ljharb/define-data-property" "delayed-stream@1.0.0","MIT","https://github.com/felixge/node-delayed-stream" "depd@2.0.0","MIT","https://github.com/dougwilson/nodejs-depd" "destroy@1.2.0","MIT","https://github.com/stream-utils/destroy" @@ -71,20 +72,23 @@ "emoji-regex@8.0.0","MIT","https://github.com/mathiasbynens/emoji-regex" "emoji-regex@9.2.2","MIT","https://github.com/mathiasbynens/emoji-regex" "encodeurl@1.0.2","MIT","https://github.com/pillarjs/encodeurl" +"encodeurl@2.0.0","MIT","https://github.com/pillarjs/encodeurl" "end-of-stream@1.4.4","MIT","https://github.com/mafintosh/end-of-stream" +"es-define-property@1.0.0","MIT","https://github.com/ljharb/es-define-property" +"es-errors@1.3.0","MIT","https://github.com/ljharb/es-errors" "es6-promise@4.2.8","MIT","https://github.com/stefanpenner/es6-promise" "escape-html@1.0.3","MIT","https://github.com/component/escape-html" "etag@1.8.1","MIT","https://github.com/jshttp/etag" "event-target-shim@5.0.1","MIT","https://github.com/mysticatea/event-target-shim" "events@3.3.0","MIT","https://github.com/Gozala/events" -"express@4.19.2","MIT","https://github.com/expressjs/express" +"express@4.21.0","MIT","https://github.com/expressjs/express" "extract-zip@2.0.1","BSD-2-Clause","https://github.com/maxogden/extract-zip" "fast-fifo@1.3.2","MIT","https://github.com/mafintosh/fast-fifo" "fd-slicer@1.1.0","MIT","https://github.com/andrewrk/node-fd-slicer" "filelist@1.0.4","Apache-2.0","https://github.com/mde/filelist" "fill-range@7.0.1","MIT","https://github.com/jonschlinkert/fill-range" "fill-range@7.1.1","MIT","https://github.com/jonschlinkert/fill-range" -"finalhandler@1.2.0","MIT","https://github.com/pillarjs/finalhandler" +"finalhandler@1.3.1","MIT","https://github.com/pillarjs/finalhandler" "find-yarn-workspace-root@2.0.0","Apache-2.0","https://github.com/square/find-yarn-workspace-root" "follow-redirects@1.15.2","MIT","https://github.com/follow-redirects/follow-redirects" "foreground-child@3.1.1","ISC","https://github.com/tapjs/foreground-child" @@ -97,16 +101,22 @@ "fs-extra@9.1.0","MIT","https://github.com/jprichardson/node-fs-extra" "fs.realpath@1.0.0","ISC","https://github.com/isaacs/fs.realpath" "function-bind@1.1.1","MIT","https://github.com/Raynos/function-bind" +"function-bind@1.1.2","MIT","https://github.com/Raynos/function-bind" "get-intrinsic@1.2.0","MIT","https://github.com/ljharb/get-intrinsic" +"get-intrinsic@1.2.4","MIT","https://github.com/ljharb/get-intrinsic" "get-stream@5.2.0","MIT","https://github.com/sindresorhus/get-stream" "glob-parent@5.1.2","ISC","https://github.com/gulpjs/glob-parent" "glob-to-regexp@0.3.0","BSD-2-Clause","https://github.com/fitzgen/glob-to-regexp" "glob@10.4.1","ISC","https://github.com/isaacs/node-glob" "glob@7.2.3","ISC","https://github.com/isaacs/node-glob" +"gopd@1.0.1","MIT","https://github.com/ljharb/gopd" "graceful-fs@4.2.11","ISC","https://github.com/isaacs/node-graceful-fs" "has-flag@4.0.0","MIT","https://github.com/sindresorhus/has-flag" +"has-property-descriptors@1.0.2","MIT","https://github.com/inspect-js/has-property-descriptors" +"has-proto@1.0.1","MIT","https://github.com/inspect-js/has-proto" "has-symbols@1.0.3","MIT","https://github.com/inspect-js/has-symbols" "has@1.0.3","MIT","https://github.com/tarruda/has" +"hasown@2.0.2","MIT","https://github.com/inspect-js/hasOwn" "heap@0.2.7","MIT","https://github.com/qiao/heap.js" "http-errors@2.0.0","MIT","https://github.com/jshttp/http-errors" "iconv-lite@0.4.24","MIT","https://github.com/ashtuchkin/iconv-lite" @@ -146,7 +156,7 @@ "lru-cache@10.2.2","ISC","https://github.com/isaacs/node-lru-cache" "lru-cache@6.0.0","ISC","https://github.com/isaacs/node-lru-cache" "media-typer@0.3.0","MIT","https://github.com/jshttp/media-typer" -"merge-descriptors@1.0.1","MIT","https://github.com/component/merge-descriptors" +"merge-descriptors@1.0.3","MIT","https://github.com/sindresorhus/merge-descriptors" "methods@1.1.2","MIT","https://github.com/jshttp/methods" "micromatch@4.0.8","MIT","https://github.com/micromatch/micromatch" "mime-db@1.52.0","MIT","https://github.com/jshttp/mime-db" @@ -169,7 +179,7 @@ "node-plantuml@0.9.0","MIT","https://github.com/markushedvall/node-plantuml" "normalize-path@3.0.0","MIT","https://github.com/jonschlinkert/normalize-path" "object-assign@4.1.1","MIT","https://github.com/sindresorhus/object-assign" -"object-inspect@1.12.3","MIT","https://github.com/inspect-js/object-inspect" +"object-inspect@1.13.2","MIT","https://github.com/inspect-js/object-inspect" "ohm-js@16.4.0","MIT","https://github.com/harc/ohm" "on-finished@2.4.1","MIT","https://github.com/jshttp/on-finished" "once@1.4.0","ISC","https://github.com/isaacs/once" @@ -182,7 +192,7 @@ "path-is-absolute@1.0.1","MIT","https://github.com/sindresorhus/path-is-absolute" "path-key@3.1.1","MIT","https://github.com/sindresorhus/path-key" "path-scurry@1.11.1","BlueOak-1.0.0","https://github.com/isaacs/path-scurry" -"path-to-regexp@0.1.7","MIT","https://github.com/component/path-to-regexp" +"path-to-regexp@0.1.10","MIT","https://github.com/pillarjs/path-to-regexp" "pend@1.2.0","MIT","https://github.com/andrewrk/node-pend" "picomatch@2.3.1","MIT","https://github.com/micromatch/picomatch" "pify@2.3.0","MIT","https://github.com/sindresorhus/pify" @@ -192,7 +202,7 @@ "process@0.11.10","MIT","https://github.com/shtylman/node-process" "proxy-addr@2.0.7","MIT","https://github.com/jshttp/proxy-addr" "pump@3.0.0","MIT","https://github.com/mafintosh/pump" -"qs@6.11.0","BSD-3-Clause","https://github.com/ljharb/qs" +"qs@6.13.0","BSD-3-Clause","https://github.com/ljharb/qs" "queue-tick@1.0.1","MIT","https://github.com/mafintosh/queue-tick" "range-parser@1.2.1","MIT","https://github.com/jshttp/range-parser" "raw-body@2.5.2","MIT","https://github.com/stream-utils/raw-body" @@ -208,12 +218,13 @@ "safer-buffer@2.1.2","MIT","https://github.com/ChALkeR/safer-buffer" "sax@1.2.4","ISC","https://github.com/isaacs/sax-js" "semver@7.5.4","ISC","https://github.com/npm/node-semver" -"send@0.18.0","MIT","https://github.com/pillarjs/send" -"serve-static@1.15.0","MIT","https://github.com/expressjs/serve-static" +"send@0.19.0","MIT","https://github.com/pillarjs/send" +"serve-static@1.16.2","MIT","https://github.com/expressjs/serve-static" +"set-function-length@1.2.2","MIT","https://github.com/ljharb/set-function-length" "setprototypeof@1.2.0","ISC","https://github.com/wesleytodd/setprototypeof" "shebang-command@2.0.0","MIT","https://github.com/kevva/shebang-command" "shebang-regex@3.0.0","MIT","https://github.com/sindresorhus/shebang-regex" -"side-channel@1.0.4","MIT","https://github.com/ljharb/side-channel" +"side-channel@1.0.6","MIT","https://github.com/ljharb/side-channel" "signal-exit@4.1.0","ISC","https://github.com/tapjs/signal-exit" "slash@2.0.0","MIT","https://github.com/sindresorhus/slash" "stats-lite@2.2.0","MIT","https://github.com/brycebaril/node-stats-lite" diff --git a/dependencies/index.html b/dependencies/index.html index ad284adf5..9a2fa3f83 100644 --- a/dependencies/index.html +++ b/dependencies/index.html @@ -7830,7 +7830,7 @@

Dependencies 28 -body-parser@1.20.2 +body-parser@1.20.3 MIT https://github.com/expressjs/body-parser @@ -7884,7 +7884,7 @@

Dependencies 37 -call-bind@1.0.2 +call-bind@1.0.7 MIT https://github.com/ljharb/call-bind @@ -8040,1170 +8040,1236 @@

Dependencies 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 -64 +65 depd@2.0.0 MIT https://github.com/dougwilson/nodejs-depd -65 +66 destroy@1.2.0 MIT https://github.com/stream-utils/destroy -66 +67 dreamopt@0.8.0 MIT https://github.com/andreyvit/dreamopt.js -67 +68 eastasianwidth@0.2.0 MIT https://github.com/komagata/eastasianwidth -68 +69 ee-first@1.1.1 MIT https://github.com/jonathanong/ee-first -69 +70 ejs@3.1.10 Apache-2.0 https://github.com/mde/ejs -70 +71 emoji-regex@8.0.0 MIT https://github.com/mathiasbynens/emoji-regex -71 +72 emoji-regex@9.2.2 MIT https://github.com/mathiasbynens/emoji-regex -72 +73 encodeurl@1.0.2 MIT https://github.com/pillarjs/encodeurl -73 +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 -74 +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 -75 +79 escape-html@1.0.3 MIT https://github.com/component/escape-html -76 +80 etag@1.8.1 MIT https://github.com/jshttp/etag -77 +81 event-target-shim@5.0.1 MIT https://github.com/mysticatea/event-target-shim -78 +82 events@3.3.0 MIT https://github.com/Gozala/events -79 -express@4.19.2 +83 +express@4.21.0 MIT https://github.com/expressjs/express -80 +84 extract-zip@2.0.1 BSD-2-Clause https://github.com/maxogden/extract-zip -81 +85 fast-fifo@1.3.2 MIT https://github.com/mafintosh/fast-fifo -82 +86 fd-slicer@1.1.0 MIT https://github.com/andrewrk/node-fd-slicer -83 +87 filelist@1.0.4 Apache-2.0 https://github.com/mde/filelist -84 +88 fill-range@7.0.1 MIT https://github.com/jonschlinkert/fill-range -85 +89 fill-range@7.1.1 MIT https://github.com/jonschlinkert/fill-range -86 -finalhandler@1.2.0 +90 +finalhandler@1.3.1 MIT https://github.com/pillarjs/finalhandler -87 +91 find-yarn-workspace-root@2.0.0 Apache-2.0 https://github.com/square/find-yarn-workspace-root -88 +92 follow-redirects@1.15.2 MIT https://github.com/follow-redirects/follow-redirects -89 +93 foreground-child@3.1.1 ISC https://github.com/tapjs/foreground-child -90 +94 form-data@4.0.0 MIT https://github.com/form-data/form-data -91 +95 forwarded@0.2.0 MIT https://github.com/jshttp/forwarded -92 +96 fresh@0.5.2 MIT https://github.com/jshttp/fresh -93 +97 friendly-node-cron@1.5.0 MIT https://github.com/FreaKzero/friendly-node-cron -94 +98 fs-extra@11.2.0 MIT https://github.com/jprichardson/node-fs-extra -95 +99 fs-extra@7.0.1 MIT https://github.com/jprichardson/node-fs-extra -96 +100 fs-extra@9.1.0 MIT https://github.com/jprichardson/node-fs-extra -97 +101 fs.realpath@1.0.0 ISC https://github.com/isaacs/fs.realpath -98 +102 function-bind@1.1.1 MIT https://github.com/Raynos/function-bind -99 +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 -100 +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 -101 +107 glob-parent@5.1.2 ISC https://github.com/gulpjs/glob-parent -102 +108 glob-to-regexp@0.3.0 BSD-2-Clause https://github.com/fitzgen/glob-to-regexp -103 +109 glob@10.4.1 ISC https://github.com/isaacs/node-glob -104 +110 glob@7.2.3 ISC https://github.com/isaacs/node-glob -105 +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 -106 +113 has-flag@4.0.0 MIT https://github.com/sindresorhus/has-flag -107 +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 -108 +117 has@1.0.3 MIT https://github.com/tarruda/has -109 +118 +hasown@2.0.2 +MIT +https://github.com/inspect-js/hasOwn + + +119 heap@0.2.7 MIT https://github.com/qiao/heap.js -110 +120 http-errors@2.0.0 MIT https://github.com/jshttp/http-errors -111 +121 iconv-lite@0.4.24 MIT https://github.com/ashtuchkin/iconv-lite -112 +122 ieee754@1.2.1 BSD-3-Clause https://github.com/feross/ieee754 -113 +123 inflight@1.0.6 ISC https://github.com/npm/inflight -114 +124 inherits@2.0.4 ISC https://github.com/isaacs/inherits -115 +125 ipaddr.js@1.9.1 MIT https://github.com/whitequark/ipaddr.js -116 +126 is-absolute@1.0.0 MIT https://github.com/jonschlinkert/is-absolute -117 +127 is-binary-path@2.1.0 MIT https://github.com/sindresorhus/is-binary-path -118 +128 is-docker@2.2.1 MIT https://github.com/sindresorhus/is-docker -119 +129 is-extglob@2.1.1 MIT https://github.com/jonschlinkert/is-extglob -120 +130 is-fullwidth-code-point@3.0.0 MIT https://github.com/sindresorhus/is-fullwidth-code-point -121 +131 is-glob@4.0.3 MIT https://github.com/micromatch/is-glob -122 +132 is-number@7.0.0 MIT https://github.com/jonschlinkert/is-number -123 +133 is-relative@1.0.0 MIT https://github.com/jonschlinkert/is-relative -124 +134 is-stream@2.0.1 MIT https://github.com/sindresorhus/is-stream -125 +135 is-unc-path@1.0.0 MIT https://github.com/jonschlinkert/is-unc-path -126 +136 is-windows@1.0.2 MIT https://github.com/jonschlinkert/is-windows -127 +137 is-wsl@2.2.0 MIT https://github.com/sindresorhus/is-wsl -128 +138 isarray@1.0.0 MIT https://github.com/juliangruber/isarray -129 +139 isexe@2.0.0 ISC https://github.com/isaacs/isexe -130 +140 isnumber@1.0.0 MIT https://github.com/brycebaril/node-isnumber -131 +141 jackspeak@3.4.0 BlueOak-1.0.0 https://github.com/isaacs/jackspeak -132 +142 jake@10.8.5 Apache-2.0 https://github.com/jakejs/jake -133 +143 js-ini@1.6.0 MIT https://github.com/Sdju/js-ini -134 +144 js-yaml@4.1.0 MIT https://github.com/nodeca/js-yaml -135 +145 json-diff@1.0.6 MIT https://github.com/andreyvit/json-diff -136 +146 json-stable-stringify@1.0.2 MIT https://github.com/ljharb/json-stable-stringify -137 +147 jsonfile@4.0.0 MIT https://github.com/jprichardson/node-jsonfile -138 +148 jsonfile@6.1.0 MIT https://github.com/jprichardson/node-jsonfile -139 +149 jsonify@0.0.1 Public Domain https://github.com/ljharb/jsonify -140 +150 klaw-sync@6.0.0 MIT https://github.com/manidlou/node-klaw-sync -141 +151 lazystream@1.0.1 MIT https://github.com/jpommerening/node-lazystream -142 +152 lnk@1.1.0 MIT https://github.com/schnittstabil/lnk -143 +153 lodash@4.17.21 MIT https://github.com/lodash/lodash -144 +154 logic-solver@2.0.1 MIT https://github.com/meteor/logic-solver -145 +155 lru-cache@10.2.2 ISC https://github.com/isaacs/node-lru-cache -146 +156 lru-cache@6.0.0 ISC https://github.com/isaacs/node-lru-cache -147 +157 media-typer@0.3.0 MIT https://github.com/jshttp/media-typer -148 -merge-descriptors@1.0.1 +158 +merge-descriptors@1.0.3 MIT -https://github.com/component/merge-descriptors +https://github.com/sindresorhus/merge-descriptors -149 +159 methods@1.1.2 MIT https://github.com/jshttp/methods -150 +160 micromatch@4.0.8 MIT https://github.com/micromatch/micromatch -151 +161 mime-db@1.52.0 MIT https://github.com/jshttp/mime-db -152 +162 mime-types@2.1.35 MIT https://github.com/jshttp/mime-types -153 +163 mime@1.6.0 MIT https://github.com/broofa/node-mime -154 +164 minimatch@3.1.2 ISC https://github.com/isaacs/minimatch -155 +165 minimatch@5.1.6 ISC https://github.com/isaacs/minimatch -156 +166 minimatch@9.0.4 ISC https://github.com/isaacs/minimatch -157 +167 minimist@1.2.8 MIT https://github.com/minimistjs/minimist -158 +168 minipass@7.0.3 ISC https://github.com/isaacs/minipass -159 +169 minipass@7.1.2 ISC https://github.com/isaacs/minipass -160 +170 mkdirp@0.5.6 MIT https://github.com/substack/node-mkdirp -161 +171 ms@2.0.0 MIT https://github.com/zeit/ms -162 +172 ms@2.1.2 MIT https://github.com/zeit/ms -163 +173 ms@2.1.3 MIT https://github.com/vercel/ms -164 +174 negotiator@0.6.3 MIT https://github.com/jshttp/negotiator -165 +175 node-cron@3.0.3 ISC https://github.com/merencia/node-cron -166 +176 node-nailgun-client@0.1.2 Apache-2.0 https://github.com/markushedvall/node-nailgun-client -167 +177 node-nailgun-server@0.1.4 Apache-2.0 https://github.com/markushedvall/node-nailgun-server -168 +178 node-plantuml@0.9.0 MIT https://github.com/markushedvall/node-plantuml -169 +179 normalize-path@3.0.0 MIT https://github.com/jonschlinkert/normalize-path -170 +180 object-assign@4.1.1 MIT https://github.com/sindresorhus/object-assign -171 -object-inspect@1.12.3 +181 +object-inspect@1.13.2 MIT https://github.com/inspect-js/object-inspect -172 +182 ohm-js@16.4.0 MIT https://github.com/harc/ohm -173 +183 on-finished@2.4.1 MIT https://github.com/jshttp/on-finished -174 +184 once@1.4.0 ISC https://github.com/isaacs/once -175 +185 open@7.4.2 MIT https://github.com/sindresorhus/open -176 +186 opentosca-vintner@0.1.7 Apache-2.0 https://github.com/OpenTOSCA/opentosca-vintner -177 +187 os-tmpdir@1.0.2 MIT https://github.com/sindresorhus/os-tmpdir -178 +188 papaparse@5.4.1 MIT https://github.com/mholt/PapaParse -179 +189 parseurl@1.3.3 MIT https://github.com/pillarjs/parseurl -180 +190 patch-package@8.0.0 MIT https://github.com/ds300/patch-package -181 +191 path-is-absolute@1.0.1 MIT https://github.com/sindresorhus/path-is-absolute -182 +192 path-key@3.1.1 MIT https://github.com/sindresorhus/path-key -183 +193 path-scurry@1.11.1 BlueOak-1.0.0 https://github.com/isaacs/path-scurry -184 -path-to-regexp@0.1.7 +194 +path-to-regexp@0.1.10 MIT -https://github.com/component/path-to-regexp +https://github.com/pillarjs/path-to-regexp -185 +195 pend@1.2.0 MIT https://github.com/andrewrk/node-pend -186 +196 picomatch@2.3.1 MIT https://github.com/micromatch/picomatch -187 +197 pify@2.3.0 MIT https://github.com/sindresorhus/pify -188 +198 plantuml-encoder@1.4.0 MIT https://github.com/markushedvall/plantuml-encoder -189 +199 prettier@2.8.7 MIT https://github.com/prettier/prettier -190 +200 process-nextick-args@2.0.1 MIT https://github.com/calvinmetcalf/process-nextick-args -191 +201 process@0.11.10 MIT https://github.com/shtylman/node-process -192 +202 proxy-addr@2.0.7 MIT https://github.com/jshttp/proxy-addr -193 +203 pump@3.0.0 MIT https://github.com/mafintosh/pump -194 -qs@6.11.0 +204 +qs@6.13.0 BSD-3-Clause https://github.com/ljharb/qs -195 +205 queue-tick@1.0.1 MIT https://github.com/mafintosh/queue-tick -196 +206 range-parser@1.2.1 MIT https://github.com/jshttp/range-parser -197 +207 raw-body@2.5.2 MIT https://github.com/stream-utils/raw-body -198 +208 readable-stream@2.3.8 MIT https://github.com/nodejs/readable-stream -199 +209 readable-stream@4.5.2 MIT https://github.com/nodejs/readable-stream -200 +210 readdir-enhanced@1.5.2 MIT https://github.com/bigstickcarpet/readdir-enhanced -201 +211 readdir-glob@1.1.3 Apache-2.0 https://github.com/Yqnn/node-readdir-glob -202 +212 readdirp@3.6.0 MIT https://github.com/paulmillr/readdirp -203 +213 regression@2.0.1 MIT https://github.com/Tom-Alexander/regression-js -204 +214 rimraf@2.7.1 ISC https://github.com/isaacs/rimraf -205 +215 safe-buffer@5.1.2 MIT https://github.com/feross/safe-buffer -206 +216 safe-buffer@5.2.1 MIT https://github.com/feross/safe-buffer -207 +217 safer-buffer@2.1.2 MIT https://github.com/ChALkeR/safer-buffer -208 +218 sax@1.2.4 ISC https://github.com/isaacs/sax-js -209 +219 semver@7.5.4 ISC https://github.com/npm/node-semver -210 -send@0.18.0 +220 +send@0.19.0 MIT https://github.com/pillarjs/send -211 -serve-static@1.15.0 +221 +serve-static@1.16.2 MIT https://github.com/expressjs/serve-static -212 +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 -213 +224 shebang-command@2.0.0 MIT https://github.com/kevva/shebang-command -214 +225 shebang-regex@3.0.0 MIT https://github.com/sindresorhus/shebang-regex -215 -side-channel@1.0.4 +226 +side-channel@1.0.6 MIT https://github.com/ljharb/side-channel -216 +227 signal-exit@4.1.0 ISC https://github.com/tapjs/signal-exit -217 +228 slash@2.0.0 MIT https://github.com/sindresorhus/slash -218 +229 stats-lite@2.2.0 MIT https://github.com/brycebaril/node-stats-lite -219 +230 statuses@2.0.1 MIT https://github.com/jshttp/statuses -220 +231 streamx@2.18.0 MIT https://github.com/mafintosh/streamx -221 +232 string-width@4.2.3 MIT https://github.com/sindresorhus/string-width -222 +233 string-width@5.1.2 MIT https://github.com/sindresorhus/string-width -223 +234 string_decoder@1.1.1 MIT https://github.com/nodejs/string_decoder -224 +235 string_decoder@1.3.0 MIT https://github.com/nodejs/string_decoder -225 +236 strip-ansi@6.0.1 MIT https://github.com/chalk/strip-ansi -226 +237 strip-ansi@7.1.0 MIT https://github.com/chalk/strip-ansi -227 +238 supports-color@7.2.0 MIT https://github.com/chalk/supports-color -228 +239 sync-directory@6.0.5 ISC https://github.com/hoperyy/sync-directory -229 +240 systeminformation@5.22.11 MIT https://github.com/sebhildebrandt/systeminformation -230 +241 tar-stream@3.1.7 MIT https://github.com/mafintosh/tar-stream -231 +242 text-decoder@1.1.0 Apache-2.0 https://github.com/holepunchto/text-decoder -232 +243 tmp@0.0.33 MIT https://github.com/raszi/node-tmp -233 +244 to-regex-range@5.0.1 MIT https://github.com/micromatch/to-regex-range -234 +245 toidentifier@1.0.1 MIT https://github.com/component/toidentifier -235 +246 tslib@2.5.0 0BSD https://github.com/Microsoft/tslib -236 +247 type-is@1.6.18 MIT https://github.com/jshttp/type-is -237 +248 unc-path-regex@0.1.2 MIT https://github.com/regexhq/unc-path-regex -238 +249 underscore@1.13.6 MIT https://github.com/jashkenas/underscore -239 +250 universalify@0.1.2 MIT https://github.com/RyanZim/universalify -240 +251 universalify@2.0.0 MIT https://github.com/RyanZim/universalify -241 +252 unpipe@1.0.0 MIT https://github.com/stream-utils/unpipe -242 +253 util-deprecate@1.0.2 MIT https://github.com/TooTallNate/util-deprecate -243 +254 utils-merge@1.0.1 MIT https://github.com/jaredhanson/utils-merge -244 +255 uuid@10.0.0 MIT https://github.com/uuidjs/uuid -245 +256 uuid@8.3.2 MIT https://github.com/uuidjs/uuid -246 +257 vary@1.1.2 MIT https://github.com/jshttp/vary -247 +258 which@2.0.2 ISC https://github.com/isaacs/node-which -248 +259 wordwrap@1.0.0 MIT https://github.com/substack/node-wordwrap -249 +260 wrap-ansi@7.0.0 MIT https://github.com/chalk/wrap-ansi -250 +261 wrap-ansi@8.1.0 MIT https://github.com/chalk/wrap-ansi -251 +262 wrappy@1.0.2 ISC https://github.com/npm/wrappy -252 +263 xml2js@0.6.2 MIT https://github.com/Leonidas-from-XIV/node-xml2js -253 +264 xmlbuilder@11.0.1 MIT https://github.com/oozcitak/xmlbuilder-js -254 +265 yallist@4.0.0 ISC https://github.com/isaacs/yallist -255 +266 yaml@2.3.2 ISC https://github.com/eemeli/yaml -256 +267 yauzl@2.10.0 MIT https://github.com/thejoshwolfe/yauzl -257 +268 zip-stream@6.0.1 MIT https://github.com/archiverjs/node-zip-stream diff --git a/search/search_index.json b/search/search_index.json index 8cec32a9a..d32c70d9f 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":"

This document holds colors, fonts, and logos.

","tags":["Misc"]},{"location":"branding/#colors","title":"Colors","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":"

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.2 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.2 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 delayed-stream@1.0.0 MIT https://github.com/felixge/node-delayed-stream 64 depd@2.0.0 MIT https://github.com/dougwilson/nodejs-depd 65 destroy@1.2.0 MIT https://github.com/stream-utils/destroy 66 dreamopt@0.8.0 MIT https://github.com/andreyvit/dreamopt.js 67 eastasianwidth@0.2.0 MIT https://github.com/komagata/eastasianwidth 68 ee-first@1.1.1 MIT https://github.com/jonathanong/ee-first 69 ejs@3.1.10 Apache-2.0 https://github.com/mde/ejs 70 emoji-regex@8.0.0 MIT https://github.com/mathiasbynens/emoji-regex 71 emoji-regex@9.2.2 MIT https://github.com/mathiasbynens/emoji-regex 72 encodeurl@1.0.2 MIT https://github.com/pillarjs/encodeurl 73 end-of-stream@1.4.4 MIT https://github.com/mafintosh/end-of-stream 74 es6-promise@4.2.8 MIT https://github.com/stefanpenner/es6-promise 75 escape-html@1.0.3 MIT https://github.com/component/escape-html 76 etag@1.8.1 MIT https://github.com/jshttp/etag 77 event-target-shim@5.0.1 MIT https://github.com/mysticatea/event-target-shim 78 events@3.3.0 MIT https://github.com/Gozala/events 79 express@4.19.2 MIT https://github.com/expressjs/express 80 extract-zip@2.0.1 BSD-2-Clause https://github.com/maxogden/extract-zip 81 fast-fifo@1.3.2 MIT https://github.com/mafintosh/fast-fifo 82 fd-slicer@1.1.0 MIT https://github.com/andrewrk/node-fd-slicer 83 filelist@1.0.4 Apache-2.0 https://github.com/mde/filelist 84 fill-range@7.0.1 MIT https://github.com/jonschlinkert/fill-range 85 fill-range@7.1.1 MIT https://github.com/jonschlinkert/fill-range 86 finalhandler@1.2.0 MIT https://github.com/pillarjs/finalhandler 87 find-yarn-workspace-root@2.0.0 Apache-2.0 https://github.com/square/find-yarn-workspace-root 88 follow-redirects@1.15.2 MIT https://github.com/follow-redirects/follow-redirects 89 foreground-child@3.1.1 ISC https://github.com/tapjs/foreground-child 90 form-data@4.0.0 MIT https://github.com/form-data/form-data 91 forwarded@0.2.0 MIT https://github.com/jshttp/forwarded 92 fresh@0.5.2 MIT https://github.com/jshttp/fresh 93 friendly-node-cron@1.5.0 MIT https://github.com/FreaKzero/friendly-node-cron 94 fs-extra@11.2.0 MIT https://github.com/jprichardson/node-fs-extra 95 fs-extra@7.0.1 MIT https://github.com/jprichardson/node-fs-extra 96 fs-extra@9.1.0 MIT https://github.com/jprichardson/node-fs-extra 97 fs.realpath@1.0.0 ISC https://github.com/isaacs/fs.realpath 98 function-bind@1.1.1 MIT https://github.com/Raynos/function-bind 99 get-intrinsic@1.2.0 MIT https://github.com/ljharb/get-intrinsic 100 get-stream@5.2.0 MIT https://github.com/sindresorhus/get-stream 101 glob-parent@5.1.2 ISC https://github.com/gulpjs/glob-parent 102 glob-to-regexp@0.3.0 BSD-2-Clause https://github.com/fitzgen/glob-to-regexp 103 glob@10.4.1 ISC https://github.com/isaacs/node-glob 104 glob@7.2.3 ISC https://github.com/isaacs/node-glob 105 graceful-fs@4.2.11 ISC https://github.com/isaacs/node-graceful-fs 106 has-flag@4.0.0 MIT https://github.com/sindresorhus/has-flag 107 has-symbols@1.0.3 MIT https://github.com/inspect-js/has-symbols 108 has@1.0.3 MIT https://github.com/tarruda/has 109 heap@0.2.7 MIT https://github.com/qiao/heap.js 110 http-errors@2.0.0 MIT https://github.com/jshttp/http-errors 111 iconv-lite@0.4.24 MIT https://github.com/ashtuchkin/iconv-lite 112 ieee754@1.2.1 BSD-3-Clause https://github.com/feross/ieee754 113 inflight@1.0.6 ISC https://github.com/npm/inflight 114 inherits@2.0.4 ISC https://github.com/isaacs/inherits 115 ipaddr.js@1.9.1 MIT https://github.com/whitequark/ipaddr.js 116 is-absolute@1.0.0 MIT https://github.com/jonschlinkert/is-absolute 117 is-binary-path@2.1.0 MIT https://github.com/sindresorhus/is-binary-path 118 is-docker@2.2.1 MIT https://github.com/sindresorhus/is-docker 119 is-extglob@2.1.1 MIT https://github.com/jonschlinkert/is-extglob 120 is-fullwidth-code-point@3.0.0 MIT https://github.com/sindresorhus/is-fullwidth-code-point 121 is-glob@4.0.3 MIT https://github.com/micromatch/is-glob 122 is-number@7.0.0 MIT https://github.com/jonschlinkert/is-number 123 is-relative@1.0.0 MIT https://github.com/jonschlinkert/is-relative 124 is-stream@2.0.1 MIT https://github.com/sindresorhus/is-stream 125 is-unc-path@1.0.0 MIT https://github.com/jonschlinkert/is-unc-path 126 is-windows@1.0.2 MIT https://github.com/jonschlinkert/is-windows 127 is-wsl@2.2.0 MIT https://github.com/sindresorhus/is-wsl 128 isarray@1.0.0 MIT https://github.com/juliangruber/isarray 129 isexe@2.0.0 ISC https://github.com/isaacs/isexe 130 isnumber@1.0.0 MIT https://github.com/brycebaril/node-isnumber 131 jackspeak@3.4.0 BlueOak-1.0.0 https://github.com/isaacs/jackspeak 132 jake@10.8.5 Apache-2.0 https://github.com/jakejs/jake 133 js-ini@1.6.0 MIT https://github.com/Sdju/js-ini 134 js-yaml@4.1.0 MIT https://github.com/nodeca/js-yaml 135 json-diff@1.0.6 MIT https://github.com/andreyvit/json-diff 136 json-stable-stringify@1.0.2 MIT https://github.com/ljharb/json-stable-stringify 137 jsonfile@4.0.0 MIT https://github.com/jprichardson/node-jsonfile 138 jsonfile@6.1.0 MIT https://github.com/jprichardson/node-jsonfile 139 jsonify@0.0.1 Public Domain https://github.com/ljharb/jsonify 140 klaw-sync@6.0.0 MIT https://github.com/manidlou/node-klaw-sync 141 lazystream@1.0.1 MIT https://github.com/jpommerening/node-lazystream 142 lnk@1.1.0 MIT https://github.com/schnittstabil/lnk 143 lodash@4.17.21 MIT https://github.com/lodash/lodash 144 logic-solver@2.0.1 MIT https://github.com/meteor/logic-solver 145 lru-cache@10.2.2 ISC https://github.com/isaacs/node-lru-cache 146 lru-cache@6.0.0 ISC https://github.com/isaacs/node-lru-cache 147 media-typer@0.3.0 MIT https://github.com/jshttp/media-typer 148 merge-descriptors@1.0.1 MIT https://github.com/component/merge-descriptors 149 methods@1.1.2 MIT https://github.com/jshttp/methods 150 micromatch@4.0.8 MIT https://github.com/micromatch/micromatch 151 mime-db@1.52.0 MIT https://github.com/jshttp/mime-db 152 mime-types@2.1.35 MIT https://github.com/jshttp/mime-types 153 mime@1.6.0 MIT https://github.com/broofa/node-mime 154 minimatch@3.1.2 ISC https://github.com/isaacs/minimatch 155 minimatch@5.1.6 ISC https://github.com/isaacs/minimatch 156 minimatch@9.0.4 ISC https://github.com/isaacs/minimatch 157 minimist@1.2.8 MIT https://github.com/minimistjs/minimist 158 minipass@7.0.3 ISC https://github.com/isaacs/minipass 159 minipass@7.1.2 ISC https://github.com/isaacs/minipass 160 mkdirp@0.5.6 MIT https://github.com/substack/node-mkdirp 161 ms@2.0.0 MIT https://github.com/zeit/ms 162 ms@2.1.2 MIT https://github.com/zeit/ms 163 ms@2.1.3 MIT https://github.com/vercel/ms 164 negotiator@0.6.3 MIT https://github.com/jshttp/negotiator 165 node-cron@3.0.3 ISC https://github.com/merencia/node-cron 166 node-nailgun-client@0.1.2 Apache-2.0 https://github.com/markushedvall/node-nailgun-client 167 node-nailgun-server@0.1.4 Apache-2.0 https://github.com/markushedvall/node-nailgun-server 168 node-plantuml@0.9.0 MIT https://github.com/markushedvall/node-plantuml 169 normalize-path@3.0.0 MIT https://github.com/jonschlinkert/normalize-path 170 object-assign@4.1.1 MIT https://github.com/sindresorhus/object-assign 171 object-inspect@1.12.3 MIT https://github.com/inspect-js/object-inspect 172 ohm-js@16.4.0 MIT https://github.com/harc/ohm 173 on-finished@2.4.1 MIT https://github.com/jshttp/on-finished 174 once@1.4.0 ISC https://github.com/isaacs/once 175 open@7.4.2 MIT https://github.com/sindresorhus/open 176 opentosca-vintner@0.1.7 Apache-2.0 https://github.com/OpenTOSCA/opentosca-vintner 177 os-tmpdir@1.0.2 MIT https://github.com/sindresorhus/os-tmpdir 178 papaparse@5.4.1 MIT https://github.com/mholt/PapaParse 179 parseurl@1.3.3 MIT https://github.com/pillarjs/parseurl 180 patch-package@8.0.0 MIT https://github.com/ds300/patch-package 181 path-is-absolute@1.0.1 MIT https://github.com/sindresorhus/path-is-absolute 182 path-key@3.1.1 MIT https://github.com/sindresorhus/path-key 183 path-scurry@1.11.1 BlueOak-1.0.0 https://github.com/isaacs/path-scurry 184 path-to-regexp@0.1.7 MIT https://github.com/component/path-to-regexp 185 pend@1.2.0 MIT https://github.com/andrewrk/node-pend 186 picomatch@2.3.1 MIT https://github.com/micromatch/picomatch 187 pify@2.3.0 MIT https://github.com/sindresorhus/pify 188 plantuml-encoder@1.4.0 MIT https://github.com/markushedvall/plantuml-encoder 189 prettier@2.8.7 MIT https://github.com/prettier/prettier 190 process-nextick-args@2.0.1 MIT https://github.com/calvinmetcalf/process-nextick-args 191 process@0.11.10 MIT https://github.com/shtylman/node-process 192 proxy-addr@2.0.7 MIT https://github.com/jshttp/proxy-addr 193 pump@3.0.0 MIT https://github.com/mafintosh/pump 194 qs@6.11.0 BSD-3-Clause https://github.com/ljharb/qs 195 queue-tick@1.0.1 MIT https://github.com/mafintosh/queue-tick 196 range-parser@1.2.1 MIT https://github.com/jshttp/range-parser 197 raw-body@2.5.2 MIT https://github.com/stream-utils/raw-body 198 readable-stream@2.3.8 MIT https://github.com/nodejs/readable-stream 199 readable-stream@4.5.2 MIT https://github.com/nodejs/readable-stream 200 readdir-enhanced@1.5.2 MIT https://github.com/bigstickcarpet/readdir-enhanced 201 readdir-glob@1.1.3 Apache-2.0 https://github.com/Yqnn/node-readdir-glob 202 readdirp@3.6.0 MIT https://github.com/paulmillr/readdirp 203 regression@2.0.1 MIT https://github.com/Tom-Alexander/regression-js 204 rimraf@2.7.1 ISC https://github.com/isaacs/rimraf 205 safe-buffer@5.1.2 MIT https://github.com/feross/safe-buffer 206 safe-buffer@5.2.1 MIT https://github.com/feross/safe-buffer 207 safer-buffer@2.1.2 MIT https://github.com/ChALkeR/safer-buffer 208 sax@1.2.4 ISC https://github.com/isaacs/sax-js 209 semver@7.5.4 ISC https://github.com/npm/node-semver 210 send@0.18.0 MIT https://github.com/pillarjs/send 211 serve-static@1.15.0 MIT https://github.com/expressjs/serve-static 212 setprototypeof@1.2.0 ISC https://github.com/wesleytodd/setprototypeof 213 shebang-command@2.0.0 MIT https://github.com/kevva/shebang-command 214 shebang-regex@3.0.0 MIT https://github.com/sindresorhus/shebang-regex 215 side-channel@1.0.4 MIT https://github.com/ljharb/side-channel 216 signal-exit@4.1.0 ISC https://github.com/tapjs/signal-exit 217 slash@2.0.0 MIT https://github.com/sindresorhus/slash 218 stats-lite@2.2.0 MIT https://github.com/brycebaril/node-stats-lite 219 statuses@2.0.1 MIT https://github.com/jshttp/statuses 220 streamx@2.18.0 MIT https://github.com/mafintosh/streamx 221 string-width@4.2.3 MIT https://github.com/sindresorhus/string-width 222 string-width@5.1.2 MIT https://github.com/sindresorhus/string-width 223 string_decoder@1.1.1 MIT https://github.com/nodejs/string_decoder 224 string_decoder@1.3.0 MIT https://github.com/nodejs/string_decoder 225 strip-ansi@6.0.1 MIT https://github.com/chalk/strip-ansi 226 strip-ansi@7.1.0 MIT https://github.com/chalk/strip-ansi 227 supports-color@7.2.0 MIT https://github.com/chalk/supports-color 228 sync-directory@6.0.5 ISC https://github.com/hoperyy/sync-directory 229 systeminformation@5.22.11 MIT https://github.com/sebhildebrandt/systeminformation 230 tar-stream@3.1.7 MIT https://github.com/mafintosh/tar-stream 231 text-decoder@1.1.0 Apache-2.0 https://github.com/holepunchto/text-decoder 232 tmp@0.0.33 MIT https://github.com/raszi/node-tmp 233 to-regex-range@5.0.1 MIT https://github.com/micromatch/to-regex-range 234 toidentifier@1.0.1 MIT https://github.com/component/toidentifier 235 tslib@2.5.0 0BSD https://github.com/Microsoft/tslib 236 type-is@1.6.18 MIT https://github.com/jshttp/type-is 237 unc-path-regex@0.1.2 MIT https://github.com/regexhq/unc-path-regex 238 underscore@1.13.6 MIT https://github.com/jashkenas/underscore 239 universalify@0.1.2 MIT https://github.com/RyanZim/universalify 240 universalify@2.0.0 MIT https://github.com/RyanZim/universalify 241 unpipe@1.0.0 MIT https://github.com/stream-utils/unpipe 242 util-deprecate@1.0.2 MIT https://github.com/TooTallNate/util-deprecate 243 utils-merge@1.0.1 MIT https://github.com/jaredhanson/utils-merge 244 uuid@10.0.0 MIT https://github.com/uuidjs/uuid 245 uuid@8.3.2 MIT https://github.com/uuidjs/uuid 246 vary@1.1.2 MIT https://github.com/jshttp/vary 247 which@2.0.2 ISC https://github.com/isaacs/node-which 248 wordwrap@1.0.0 MIT https://github.com/substack/node-wordwrap 249 wrap-ansi@7.0.0 MIT https://github.com/chalk/wrap-ansi 250 wrap-ansi@8.1.0 MIT https://github.com/chalk/wrap-ansi 251 wrappy@1.0.2 ISC https://github.com/npm/wrappy 252 xml2js@0.6.2 MIT https://github.com/Leonidas-from-XIV/node-xml2js 253 xmlbuilder@11.0.1 MIT https://github.com/oozcitak/xmlbuilder-js 254 yallist@4.0.0 ISC https://github.com/isaacs/yallist 255 yaml@2.3.2 ISC https://github.com/eemeli/yaml 256 yauzl@2.10.0 MIT https://github.com/thejoshwolfe/yauzl 257 zip-stream@6.0.1 MIT https://github.com/archiverjs/node-zip-stream

We fixed the following issues by patching the dependencies.

  1. dreamopt@0.8.0 is licensed under MIT, see issue #2.
  2. glob-to-regexp@0.3.0 is licensed under BSD-2-Clause, see pull request #16.
  3. We moved the optional dependency @types/yauzl of extract-zip@2.0.1 to the development dependencies.
","tags":["Vintner"]},{"location":"faq/","title":"FAQ","text":"","tags":["Misc"]},{"location":"faq/#is-vintner-an-orchestrator","title":"Is Vintner an Orchestrator?","text":"

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.txt
First 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 x64
curl -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.

Inside the container, the following directories are of interest.

","tags":["Vintner","Docker"]},{"location":"installation/#executing-a-command","title":"Executing a Command","text":"

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.

Linux x64Linux arm64Alpine x64Windows x64
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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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\"

CLIcURLJavaScriptPythonKotlin
vintner 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 ...

CLIcURLJavaScriptPythonKotlin
vintner 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\"

CLIcURLJavaScriptPythonKotlin
vintner 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

cURLJavaScriptPythonKotlin
curl --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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

cURLJavaScriptPythonKotlin
curl --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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner setup code 
","tags":["Vintner"]},{"location":"interface/#vintner-setup-init","title":"vintner setup init","text":"

initialises the filesystem

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner setup open 
","tags":["Vintner"]},{"location":"interface/#vintner-setup-path","title":"vintner setup path","text":"

returns the path to the home directory

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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":"","tags":["Vintner","xOpera","Unfurl"]},{"location":"publications/","title":"Publications","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":"","tags":["Misc"]},{"location":"resources/#introductions","title":"Introductions","text":"","tags":["Misc"]},{"location":"resources/#orchestrators","title":"Orchestrators","text":"","tags":["Misc"]},{"location":"resources/#other-interesting-tools","title":"Other Interesting Tools","text":"","tags":["Misc"]},{"location":"resources/#tosca-repositories","title":"TOSCA Repositories","text":"","tags":["Misc"]},{"location":"resources/#other-resources","title":"Other Resources","text":"","tags":["Misc"]},{"location":"uninstallation/","title":"Uninstallation","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)Docker
vintner 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:

","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement-responsibilities","title":"Enforcement Responsibilities","text":"

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.

","tags":["Contributing"]},{"location":"contributing/development/#squash-and-merge","title":"Squash and Merge","text":"

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.

","tags":["Contributing"]},{"location":"contributing/development/#lint","title":"Lint","text":"

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/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.

","tags":["Contributing"]},{"location":"contributing/documentation/#mkdocs","title":"MkDocs","text":"

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)

","tags":["Contributing"]},{"location":"contributing/documentation/#casts","title":"Casts","text":"

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.

","tags":["Contributing"]},{"location":"contributing/documentation/#export","title":"Export","text":"

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":"","tags":["Contributing"]},{"location":"contributing/notes/","title":"Notes","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

  1. Instance directory is created.
  2. Extracted CSAR (Template) is copied into instance template directory.
  3. Instance info is updated
","tags":["Contributing"]},{"location":"contributing/notes/#resolve-the-variability-of-an-instance","title":"Resolve the Variability of an Instance","text":"

vintner instances resolve

  1. Variability inputs are stored in the instance template directory.
  2. Variability in variable service template is resolved based on given variability inputs.
  3. Variability-resolved service template is stored in instance template directory.
","tags":["Contributing"]},{"location":"contributing/notes/#deploy-an-instance","title":"Deploy an Instance","text":"

vintner instances deploy

  1. Deployment inputs are copied to the service inputs directory.
  2. Deployment command is sent to orchestrator. Variability-resolved service template is used.
","tags":["Contributing"]},{"location":"contributing/notes/#continue-an-instance-deployment","title":"Continue an Instance Deployment","text":"

vintner instances continue

  1. Continue deployment command is sent to the orchestrator. Variability-resolve service templated is used. For example, to rerun a failed deployment.
","tags":["Contributing"]},{"location":"contributing/notes/#swap-an-instance-template","title":"Swap an Instance Template","text":"

vintner instances swap

  1. New template is copied into (new) instance template directory
  2. Instance info is updated
","tags":["Contributing"]},{"location":"contributing/notes/#update-an-instance","title":"Update an Instance","text":"

vintner instances update

  1. Deployment inputs are copied to the service inputs directory.
  2. Instance info is updated.
  3. Update command is sent to orchestrator. Variability-resolved service template is used.

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

  1. Sensor data is collected and stored as variability inputs.
  2. Variability is resolved based on the new variability inputs.
  3. Instance is updated based on the new variability-resolved topology template.
  4. Instance info is updated.

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

  1. Undeployment command is sent to orchestrator.
","tags":["Contributing"]},{"location":"contributing/notes/#delete-an-instance","title":"Delete an Instance","text":"

vintner instances delete

  1. Instance directory is deleted.

Note, this does not undeploy the instance.

","tags":["Contributing"]},{"location":"contributing/notes/#conventions","title":"Conventions","text":"","tags":["Contributing"]},{"location":"contributing/notes/#general-helpful-tools-on-linux","title":"General Helpful Tools on Linux","text":"
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.

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":"
  1. Step-by-step guide
  2. Zenodo
  3. Integration tests
  4. Entry in Publications
  5. Git tag
  6. Add used links
","tags":["Contributing"]},{"location":"contributing/notes/#used-links","title":"Used Links","text":"

The following links are used in publications.

","tags":["Contributing"]},{"location":"contributing/notes/#typical-reasons-for-unsat","title":"Typical Reasons for UNSAT","text":"
  1. Technology constraint; can be disabled by technology_constraint: false
  2. Artifact constraint; can be disabled by required_artifact_constraint: false
  3. Required incoming relation constraint; can be disabled by required_incoming_relation_constraint: false
  4. Due to some bug a node type or artifact type is not defined but a corresponding error is not thrown.
","tags":["Contributing"]},{"location":"contributing/notes/#limitations","title":"Limitations","text":"

We briefly discuss limitations of our prototypical implementation.

  1. We expect that each relationship templates is used exactly once.
  2. We expect that relationship at requirement assignments is a string.
  3. We expect that names of hosting relations match /^(.*_)?host(_.*)?$/ since we do not implement the TOSCA type system.
  4. We expect that names of connection relations match /^(.*_)?connection(_.*)?$/ since we do not implement the TOSCA type system.
  5. We only support simple consumers, i.e., directly accessed by properties.
  6. We only support simple producers, i.e., directly accessing the property of a node, using Unfurl 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.
  7. We only support Boolean variability inputs in variability input constraints.
  8. We do not support default expressions of variability inputs in variability input constraints.
","tags":["Contributing"]},{"location":"contributing/release/","title":"Release","text":"

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/#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/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.

","tags":["Contributing"]},{"location":"contributing/setup/#using-tasks","title":"Using Tasks","text":"

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.

Environment Description TASK_BINARY The absolute path of ./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:

","tags":["Contributing"]},{"location":"contributing/setup/#repository","title":"Repository","text":"

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.

","tags":["Contributing"]},{"location":"contributing/setup/#signed-commits","title":"Signed Commits","text":"

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.

","tags":["Contributing"]},{"location":"edmm/","title":"EDMM Compliance Specification 1.0 Release Candidate","text":"

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":"
  1. Must use only features as defined by TOSCA Light extended by Variability4TOSCA.
","tags":["EDMM","Specification"]},{"location":"edmm/#node-types","title":"Node Types","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.

  1. A built-in and abstract node type is a normative type, which cannot be instantiated since it is missing, e.g., its management operations or deployment artifact.
  2. A built-in and concrete node type is a normative type, which can be instantiated.
  3. A custom and abstract type is a user-defined type, which cannot be instantiated since it is missing, e.g., its management operations or deployment artifact.
  4. A custom and concrete type is a user-defined type, which can be instantiated.
","tags":["EDMM","Specification"]},{"location":"edmm/#management-operations","title":"Management Operations","text":"
  1. A node type might define the create, configure, create, stop, and delete operation of the Management interface using management as interface name.
  2. A management operation is an inline bash script, which is executed in the root of the application directory.
  3. A built-in node type defines its management operations in its node type, e.g., node.service.application.
  4. A custom and abstract node type defines its management operations in its node type.
  5. A custom and concrete node type defines its management operations in its node template, e.g., shop.component derived from node.application.
","tags":["EDMM","Specification"]},{"location":"edmm/#implementations","title":"Implementations","text":"
  1. A node type 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.
  2. A node type implementation is generated and not manually defined.
  3. A node type implementation might call operations of the Management interface.
  4. A node type implementation represent the EDMM-DTSM mapping.
","tags":["EDMM","Specification"]},{"location":"edmm/#property-assignments","title":"Property Assignments","text":"
  1. A built-in node type can define property assignments.
  2. A custom and abstract node type can define property assignments.
  3. A custom and concrete node type must not define property assignments.
  4. Only use strings as data types.
  5. Always quote string values.
","tags":["EDMM","Specification"]},{"location":"edmm/#attributes","title":"Attributes","text":"

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":"
  1. A software.application node template hosted on a remote.machine node template has its own dedicated application directory.
  2. The .vintner directory is a reserved directory in the application directory.
","tags":["EDMM","Specification"]},{"location":"edmm/#deployment-artifacts","title":"Deployment Artifacts","text":"
  1. A node template can have conditional deployment artifacts.
  2. A node type cannot have conditional deployment artifacts.
  3. A custom node type cannot have deployment artifacts.
  4. A deployment artifact must be named by its artifact type but any . replaced with _.
","tags":["EDMM","Specification"]},{"location":"edmm/#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":["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 Description vintner_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.

QueryResult
vintner 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.

QueryResult
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.

QueryResult
vintner 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.

QueryResult
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.

QueryResult
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.

QueryResult
vintner 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.

QueryResult
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.

Symbol Meaning Description name Literal Used to access an element at the current position by its name. . Path Separator Mapping step. * Wildcard Matches any child element. SELF Current Element Matches the element that contains the query (inside templates only). [Condition] Filter Evaluates the predicate inside the brackets for every current element. [Integer] Array Access Returns the element at the specified position. GROUP(name) Group Members Returns the set of nodes that belong to the group with the specified name. POLICY(name) Policy Targets Returns the set of nodes that are targeted by the policy with the specified name. @ Attributes Shortcut for attributes. # Properties Shortcut for properties. $ Requirements Shortcut for requirements. % Capabilities Shortcut for capabilities.

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 expression

Here 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.

"},{"location":"queries4tosca/tests/test-all/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-array-access/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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/#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.

"},{"location":"queries4tosca/tests/test-boolean-and/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-boolean-or/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-equals/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-existence/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-negation/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-nested/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-regex/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-group/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-length-any/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-length-range/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-next/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-previous/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-rel-filter/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-single/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-node-template/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-policy/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-resolve-chain/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-chain/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-loop/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-loop/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-self/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-self/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-simple/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-simple/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-result-structure-complex/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-result-structure-simple/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-shortcut-property/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

File Description <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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#features","title":"Features","text":"

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.

FeatureIDE Extended XMLYAML
<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.

FeatureIDE Extended XMLYAML
<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}.

FeatureIDE Extended XMLYAML
<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}.

FeatureIDE Extended XMLYAML
<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.

File Description 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 to test.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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#example","title":"Example","text":"

The following service template contains two conditional nodes. A variability inputs decides which node should be present.

/my-testing-csar/service-template.yaml
tosca_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.yaml
name: 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.yaml
mode: one\n

We expect the following service template.

/my-testing-csar/my-test/expected.yaml
tosca_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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#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 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#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 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.

Thus, 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#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, 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.

Thus, 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#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 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#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 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.

  1. (Critical) Custom module vs battle-proven module
  2. (Critical) Imperative vs declarative technology
  3. (Critical) Imperative flow of declarative tasks vs pure declarative tasks (e.g., Ansible Playbook Tasks vs Terraform Module)
  4. Generic vs specialized/ native technology, e.g., Ansible vs Docker to start docker container (up to date modules, bug fixes ...)
  5. Depth of technology toolchain
  6. Number of workarounds
  7. Number of tasks/ resources/ artifacts/ manifests to be defined
  8. Length of the template
  9. Usage of deprecated or not recommended features
  10. More specialized node type, e.g., software.application vs service.application.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-dockerengine","title":"Component \"docker.engine\"","text":"

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#service-template","title":"Service Template","text":"

A service template must have the TOSCA definitions version tosca_variability_1_0. Such a service template is also called variable service template.

Keyname Mandatory Type Description tosca_definitions_version true String The required TOSCA definitions version. Must be 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.

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#rc-v2","title":"RC v2","text":"

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 using has_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 pattern element 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 pattern element 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 pattern element 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 pattern element 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.

Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. members false List(String | Tuple(String, String) | Tuple(String, Number)) An optional list of node templates names or requirement assignment names/ index of a node template. 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. 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 pattern 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 pattern element 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 pattern element 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 pattern element 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 pattern element 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 pattern element 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 are true. 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 use node_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:

  1. Ensure that TOSCA definitions version is tosca_variability_1_0.
  2. Retrieve variability inputs assignments.
  3. Check the presence of all elements.
  4. Remove all elements, e.g., node templates or artifacts, which are not present.
  5. Remove all group members which are not present from group template.
  6. Remove all policy targets which are not present from policy template.
  7. Remove all variability groups.
  8. Remove all non-standard elements, e.g., variability definition, variability groups, or conditions at node templates.
  9. Transform all lists introduced in this document, such as property lists, to maps as defined in TOSCA.
  10. Set the TOSCA definitions version to tosca_simple_yaml_1_3.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#retrieve-variability-inputs-assignments","title":"Retrieve Variability Inputs Assignments","text":"

Variability inputs can be assigned either directly or indirectly using (possibly multiple) variability presets. Therefore, conduct the following steps:

  1. Merge all variability presets following the order in which they have been collected.
  2. Merge directly assigned variability inputs.

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:

  1. Collect all conditions which are assigned to the element via conditions.
  2. Collect all conditions which are assigned to variability groups via conditions which the element is member of.
  3. (Optional) Assign default conditions if no conditions have been collected yet.
  4. (Optional) Assign pruning conditions.
  5. Evaluate assigned conditions.

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:

  1. Ensure that each relation source of a present relation is present.
  2. Ensure that each relation target of a present relation is present.
  3. Ensure that every present node has at maximum one present hosting relation.
  4. Ensure that the node of each present artifact is present.
  5. Ensure that present artifacts have unique names within their node.
  6. Ensure that the node of each present property is present.
  7. Ensure that present properties have unique names within their node.
  8. Ensure that the container of each present type is present.
  9. Ensure that each present type container has exactly one present type.
  10. Ensure that every present node has a present hosting relation if the node had at least one conditional relation in the variable
  11. Ensure that every present node has a present incoming relation if the node had at least one incoming relation in the variable service template.
  12. Ensure that every present node has a present deployment artifact if the node had at least one deployment artifact in the variable service template.

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-display-system","title":"Element Display System","text":"

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/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":["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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-india/#variable-service-template","title":"Variable Service 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_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":""},{"location":"variability4tosca/tests/test-groups-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\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-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\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-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:\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#variable-service-template","title":"Variable Service 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:\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#variable-service-template","title":"Variable Service 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_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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-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: 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":""},{"location":"variability4tosca/tests/test-policies-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\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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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: 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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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:\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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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:\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":""},{"location":"variability4tosca/tests/test-pruning-bravo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-bravo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-charlie-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:\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":""},{"location":"variability4tosca/tests/test-pruning-charlie-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:\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":""},{"location":"variability4tosca/tests/test-pruning-delta-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:\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":""},{"location":"variability4tosca/tests/test-pruning-delta-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:\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":""},{"location":"variability4tosca/tests/test-pruning-echo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-echo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-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:\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":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-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:\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":""},{"location":"variability4tosca/tests/test-pruning-hotel-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:\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":""},{"location":"variability4tosca/tests/test-pruning-hotel-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:\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":""},{"location":"variability4tosca/tests/test-pruning-india-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:\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":""},{"location":"variability4tosca/tests/test-pruning-india-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:\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":""},{"location":"variability4tosca/tests/test-pruning-juliett-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:\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":""},{"location":"variability4tosca/tests/test-pruning-juliett-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:\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":""},{"location":"variability4tosca/tests/test-pruning-kilo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-kilo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-lima-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:\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":""},{"location":"variability4tosca/tests/test-pruning-lima-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:\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":""},{"location":"variability4tosca/tests/test-pruning-mike-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:\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":""},{"location":"variability4tosca/tests/test-pruning-mike-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-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:\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":"","tags":["Misc"]},{"location":"tags/#closer-2024","title":"CLOSER 2024","text":"","tags":["Misc"]},{"location":"tags/#contributing","title":"Contributing","text":"","tags":["Misc"]},{"location":"tags/#coopis-2023","title":"CoopIS 2023","text":"","tags":["Misc"]},{"location":"tags/#docker","title":"Docker","text":"","tags":["Misc"]},{"location":"tags/#edmm","title":"EDMM","text":"","tags":["Misc"]},{"location":"tags/#experimental","title":"Experimental","text":"","tags":["Misc"]},{"location":"tags/#guide","title":"Guide","text":"","tags":["Misc"]},{"location":"tags/#misc","title":"Misc","text":"","tags":["Misc"]},{"location":"tags/#normative","title":"Normative","text":"","tags":["Misc"]},{"location":"tags/#profile","title":"Profile","text":"","tags":["Misc"]},{"location":"tags/#publication","title":"Publication","text":"","tags":["Misc"]},{"location":"tags/#queries4tosca","title":"Queries4TOSCA","text":"","tags":["Misc"]},{"location":"tags/#sofdcar","title":"SofDCar","text":"","tags":["Misc"]},{"location":"tags/#specification","title":"Specification","text":"","tags":["Misc"]},{"location":"tags/#ucc-2023","title":"UCC 2023","text":"","tags":["Misc"]},{"location":"tags/#unfurl","title":"Unfurl","text":"","tags":["Misc"]},{"location":"tags/#variability4tosca","title":"Variability4TOSCA","text":"","tags":["Misc"]},{"location":"tags/#vintner","title":"Vintner","text":"","tags":["Misc"]},{"location":"tags/#zenodo","title":"Zenodo","text":"","tags":["Misc"]},{"location":"tags/#xopera","title":"xOpera","text":"","tags":["Misc"]}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"branding/","title":"Branding","text":"

This document holds colors, fonts, and logos.

","tags":["Misc"]},{"location":"branding/#colors","title":"Colors","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":"

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-stream

We fixed the following issues by patching the dependencies.

  1. dreamopt@0.8.0 is licensed under MIT, see issue #2.
  2. glob-to-regexp@0.3.0 is licensed under BSD-2-Clause, see pull request #16.
  3. We moved the optional dependency @types/yauzl of extract-zip@2.0.1 to the development dependencies.
","tags":["Vintner"]},{"location":"faq/","title":"FAQ","text":"","tags":["Misc"]},{"location":"faq/#is-vintner-an-orchestrator","title":"Is Vintner an Orchestrator?","text":"

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.txt
First 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 x64
curl -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.

Inside the container, the following directories are of interest.

","tags":["Vintner","Docker"]},{"location":"installation/#executing-a-command","title":"Executing a Command","text":"

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.

Linux x64Linux arm64Alpine x64Windows x64
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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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\"

CLIcURLJavaScriptPythonKotlin
vintner 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 ...

CLIcURLJavaScriptPythonKotlin
vintner 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\"

CLIcURLJavaScriptPythonKotlin
vintner 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

cURLJavaScriptPythonKotlin
curl --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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

cURLJavaScriptPythonKotlin
curl --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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner setup code 
","tags":["Vintner"]},{"location":"interface/#vintner-setup-init","title":"vintner setup init","text":"

initialises the filesystem

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner setup open 
","tags":["Vintner"]},{"location":"interface/#vintner-setup-path","title":"vintner setup path","text":"

returns the path to the home directory

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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)

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLI
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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

CLIcURLJavaScriptPythonKotlin
vintner 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":"","tags":["Vintner","xOpera","Unfurl"]},{"location":"publications/","title":"Publications","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":"","tags":["Misc"]},{"location":"resources/#introductions","title":"Introductions","text":"","tags":["Misc"]},{"location":"resources/#orchestrators","title":"Orchestrators","text":"","tags":["Misc"]},{"location":"resources/#other-interesting-tools","title":"Other Interesting Tools","text":"","tags":["Misc"]},{"location":"resources/#tosca-repositories","title":"TOSCA Repositories","text":"","tags":["Misc"]},{"location":"resources/#other-resources","title":"Other Resources","text":"","tags":["Misc"]},{"location":"uninstallation/","title":"Uninstallation","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)Docker
vintner 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:

","tags":["Contributing"]},{"location":"contributing/code-of-conduct/#enforcement-responsibilities","title":"Enforcement Responsibilities","text":"

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.

","tags":["Contributing"]},{"location":"contributing/development/#squash-and-merge","title":"Squash and Merge","text":"

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.

","tags":["Contributing"]},{"location":"contributing/development/#lint","title":"Lint","text":"

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/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.

","tags":["Contributing"]},{"location":"contributing/documentation/#mkdocs","title":"MkDocs","text":"

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)

","tags":["Contributing"]},{"location":"contributing/documentation/#casts","title":"Casts","text":"

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.

","tags":["Contributing"]},{"location":"contributing/documentation/#export","title":"Export","text":"

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":"","tags":["Contributing"]},{"location":"contributing/notes/","title":"Notes","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

  1. Instance directory is created.
  2. Extracted CSAR (Template) is copied into instance template directory.
  3. Instance info is updated
","tags":["Contributing"]},{"location":"contributing/notes/#resolve-the-variability-of-an-instance","title":"Resolve the Variability of an Instance","text":"

vintner instances resolve

  1. Variability inputs are stored in the instance template directory.
  2. Variability in variable service template is resolved based on given variability inputs.
  3. Variability-resolved service template is stored in instance template directory.
","tags":["Contributing"]},{"location":"contributing/notes/#deploy-an-instance","title":"Deploy an Instance","text":"

vintner instances deploy

  1. Deployment inputs are copied to the service inputs directory.
  2. Deployment command is sent to orchestrator. Variability-resolved service template is used.
","tags":["Contributing"]},{"location":"contributing/notes/#continue-an-instance-deployment","title":"Continue an Instance Deployment","text":"

vintner instances continue

  1. Continue deployment command is sent to the orchestrator. Variability-resolve service templated is used. For example, to rerun a failed deployment.
","tags":["Contributing"]},{"location":"contributing/notes/#swap-an-instance-template","title":"Swap an Instance Template","text":"

vintner instances swap

  1. New template is copied into (new) instance template directory
  2. Instance info is updated
","tags":["Contributing"]},{"location":"contributing/notes/#update-an-instance","title":"Update an Instance","text":"

vintner instances update

  1. Deployment inputs are copied to the service inputs directory.
  2. Instance info is updated.
  3. Update command is sent to orchestrator. Variability-resolved service template is used.

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

  1. Sensor data is collected and stored as variability inputs.
  2. Variability is resolved based on the new variability inputs.
  3. Instance is updated based on the new variability-resolved topology template.
  4. Instance info is updated.

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

  1. Undeployment command is sent to orchestrator.
","tags":["Contributing"]},{"location":"contributing/notes/#delete-an-instance","title":"Delete an Instance","text":"

vintner instances delete

  1. Instance directory is deleted.

Note, this does not undeploy the instance.

","tags":["Contributing"]},{"location":"contributing/notes/#conventions","title":"Conventions","text":"","tags":["Contributing"]},{"location":"contributing/notes/#general-helpful-tools-on-linux","title":"General Helpful Tools on Linux","text":"
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.

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":"
  1. Step-by-step guide
  2. Zenodo
  3. Integration tests
  4. Entry in Publications
  5. Git tag
  6. Add used links
","tags":["Contributing"]},{"location":"contributing/notes/#used-links","title":"Used Links","text":"

The following links are used in publications.

","tags":["Contributing"]},{"location":"contributing/notes/#typical-reasons-for-unsat","title":"Typical Reasons for UNSAT","text":"
  1. Technology constraint; can be disabled by technology_constraint: false
  2. Artifact constraint; can be disabled by required_artifact_constraint: false
  3. Required incoming relation constraint; can be disabled by required_incoming_relation_constraint: false
  4. Due to some bug a node type or artifact type is not defined but a corresponding error is not thrown.
","tags":["Contributing"]},{"location":"contributing/notes/#limitations","title":"Limitations","text":"

We briefly discuss limitations of our prototypical implementation.

  1. We expect that each relationship templates is used exactly once.
  2. We expect that relationship at requirement assignments is a string.
  3. We expect that names of hosting relations match /^(.*_)?host(_.*)?$/ since we do not implement the TOSCA type system.
  4. We expect that names of connection relations match /^(.*_)?connection(_.*)?$/ since we do not implement the TOSCA type system.
  5. We only support simple consumers, i.e., directly accessed by properties.
  6. We only support simple producers, i.e., directly accessing the property of a node, using Unfurl 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.
  7. We only support Boolean variability inputs in variability input constraints.
  8. We do not support default expressions of variability inputs in variability input constraints.
","tags":["Contributing"]},{"location":"contributing/release/","title":"Release","text":"

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/#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/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.

","tags":["Contributing"]},{"location":"contributing/setup/#using-tasks","title":"Using Tasks","text":"

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.

Environment Description TASK_BINARY The absolute path of ./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:

","tags":["Contributing"]},{"location":"contributing/setup/#repository","title":"Repository","text":"

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.

","tags":["Contributing"]},{"location":"contributing/setup/#signed-commits","title":"Signed Commits","text":"

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.

","tags":["Contributing"]},{"location":"edmm/","title":"EDMM Compliance Specification 1.0 Release Candidate","text":"

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":"
  1. Must use only features as defined by TOSCA Light extended by Variability4TOSCA.
","tags":["EDMM","Specification"]},{"location":"edmm/#node-types","title":"Node Types","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.

  1. A built-in and abstract node type is a normative type, which cannot be instantiated since it is missing, e.g., its management operations or deployment artifact.
  2. A built-in and concrete node type is a normative type, which can be instantiated.
  3. A custom and abstract type is a user-defined type, which cannot be instantiated since it is missing, e.g., its management operations or deployment artifact.
  4. A custom and concrete type is a user-defined type, which can be instantiated.
","tags":["EDMM","Specification"]},{"location":"edmm/#management-operations","title":"Management Operations","text":"
  1. A node type might define the create, configure, create, stop, and delete operation of the Management interface using management as interface name.
  2. A management operation is an inline bash script, which is executed in the root of the application directory.
  3. A built-in node type defines its management operations in its node type, e.g., node.service.application.
  4. A custom and abstract node type defines its management operations in its node type.
  5. A custom and concrete node type defines its management operations in its node template, e.g., shop.component derived from node.application.
","tags":["EDMM","Specification"]},{"location":"edmm/#implementations","title":"Implementations","text":"
  1. A node type 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.
  2. A node type implementation is generated and not manually defined.
  3. A node type implementation might call operations of the Management interface.
  4. A node type implementation represent the EDMM-DTSM mapping.
","tags":["EDMM","Specification"]},{"location":"edmm/#property-assignments","title":"Property Assignments","text":"
  1. A built-in node type can define property assignments.
  2. A custom and abstract node type can define property assignments.
  3. A custom and concrete node type must not define property assignments.
  4. Only use strings as data types.
  5. Always quote string values.
","tags":["EDMM","Specification"]},{"location":"edmm/#attributes","title":"Attributes","text":"

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":"
  1. A software.application node template hosted on a remote.machine node template has its own dedicated application directory.
  2. The .vintner directory is a reserved directory in the application directory.
","tags":["EDMM","Specification"]},{"location":"edmm/#deployment-artifacts","title":"Deployment Artifacts","text":"
  1. A node template can have conditional deployment artifacts.
  2. A node type cannot have conditional deployment artifacts.
  3. A custom node type cannot have deployment artifacts.
  4. A deployment artifact must be named by its artifact type but any . replaced with _.
","tags":["EDMM","Specification"]},{"location":"edmm/#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":["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 Description vintner_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.

QueryResult
vintner 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.

QueryResult
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.

QueryResult
vintner 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.

QueryResult
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.

QueryResult
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.

QueryResult
vintner 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.

QueryResult
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.

Symbol Meaning Description name Literal Used to access an element at the current position by its name. . Path Separator Mapping step. * Wildcard Matches any child element. SELF Current Element Matches the element that contains the query (inside templates only). [Condition] Filter Evaluates the predicate inside the brackets for every current element. [Integer] Array Access Returns the element at the specified position. GROUP(name) Group Members Returns the set of nodes that belong to the group with the specified name. POLICY(name) Policy Targets Returns the set of nodes that are targeted by the policy with the specified name. @ Attributes Shortcut for attributes. # Properties Shortcut for properties. $ Requirements Shortcut for requirements. % Capabilities Shortcut for capabilities.

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 expression

Here 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.

"},{"location":"queries4tosca/tests/test-all/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-array-access/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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/#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.

"},{"location":"queries4tosca/tests/test-boolean-and/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-boolean-or/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-equals/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-existence/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-negation/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-nested/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-filter-regex/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-group/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-length-any/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-length-range/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-next/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-previous/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-rel-filter/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-match-single/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-node-template/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-policy/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-resolve-chain/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-chain/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-loop/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-loop/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-self/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-self/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-resolve-simple/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/resolve-simple/template.yaml
tosca_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.

"},{"location":"queries4tosca/tests/test-result-structure-complex/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-result-structure-simple/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

"},{"location":"queries4tosca/tests/test-shortcut-property/#service-template","title":"Service Template","text":"

The following service template is used.

tests/query/template.yaml
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-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.

File Description <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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/feature-ide/#features","title":"Features","text":"

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.

FeatureIDE Extended XMLYAML
<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.

FeatureIDE Extended XMLYAML
<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}.

FeatureIDE Extended XMLYAML
<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}.

FeatureIDE Extended XMLYAML
<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.

File Description 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 to test.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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/testing/#example","title":"Example","text":"

The following service template contains two conditional nodes. A variability inputs decides which node should be present.

/my-testing-csar/service-template.yaml
tosca_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.yaml
name: 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.yaml
mode: one\n

We expect the following service template.

/my-testing-csar/my-test/expected.yaml
tosca_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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CoopIS 2023","Unfurl"]},{"location":"variability4tosca/guides/artifacts/#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 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","Unfurl"]},{"location":"variability4tosca/guides/aware/#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 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.

Thus, 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","CLOSER 2024","xOpera"]},{"location":"variability4tosca/guides/modes/#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, 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.

Thus, 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#requirements","title":"Requirements","text":"

We need to fulfill the following requirements to follow this step-by-step guide.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","UCC 2023","xOpera"]},{"location":"variability4tosca/guides/pruning/#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 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.

","tags":["Variability4TOSCA","Guide","Publication","Zenodo","Algorithms 2022","xOpera"]},{"location":"variability4tosca/motivation/#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 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.

  1. (Critical) Custom module vs battle-proven module
  2. (Critical) Imperative vs declarative technology
  3. (Critical) Imperative flow of declarative tasks vs pure declarative tasks (e.g., Ansible Playbook Tasks vs Terraform Module)
  4. Generic vs specialized/ native technology, e.g., Ansible vs Docker to start docker container (up to date modules, bug fixes ...)
  5. Depth of technology toolchain
  6. Number of workarounds
  7. Number of tasks/ resources/ artifacts/ manifests to be defined
  8. Length of the template
  9. Usage of deprecated or not recommended features
  10. More specialized node type, e.g., software.application vs service.application.
","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#component-dockerengine","title":"Component \"docker.engine\"","text":"

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#service-template","title":"Service Template","text":"

A service template must have the TOSCA definitions version tosca_variability_1_0. Such a service template is also called variable service template.

Keyname Mandatory Type Description tosca_definitions_version true String The required TOSCA definitions version. Must be 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.

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#rc-v2","title":"RC v2","text":"

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 using has_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 pattern element 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 pattern element 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 pattern element 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 pattern element 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.

Keyname Mandatory Type Description type true String | List(Map(String, TypeAssignment)) The type or a list of conditional type assignments. members false List(String | Tuple(String, String) | Tuple(String, Number)) An optional list of node templates names or requirement assignment names/ index of a node template. 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. 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 pattern 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 pattern element 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 pattern element 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 pattern element 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 pattern element 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 pattern element 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 are true. 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 use node_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:

  1. Ensure that TOSCA definitions version is tosca_variability_1_0.
  2. Retrieve variability inputs assignments.
  3. Check the presence of all elements.
  4. Remove all elements, e.g., node templates or artifacts, which are not present.
  5. Remove all group members which are not present from group template.
  6. Remove all policy targets which are not present from policy template.
  7. Remove all variability groups.
  8. Remove all non-standard elements, e.g., variability definition, variability groups, or conditions at node templates.
  9. Transform all lists introduced in this document, such as property lists, to maps as defined in TOSCA.
  10. Set the TOSCA definitions version to tosca_simple_yaml_1_3.
","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#retrieve-variability-inputs-assignments","title":"Retrieve Variability Inputs Assignments","text":"

Variability inputs can be assigned either directly or indirectly using (possibly multiple) variability presets. Therefore, conduct the following steps:

  1. Merge all variability presets following the order in which they have been collected.
  2. Merge directly assigned variability inputs.

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:

  1. Collect all conditions which are assigned to the element via conditions.
  2. Collect all conditions which are assigned to variability groups via conditions which the element is member of.
  3. (Optional) Assign default conditions if no conditions have been collected yet.
  4. (Optional) Assign pruning conditions.
  5. Evaluate assigned conditions.

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:

  1. Ensure that each relation source of a present relation is present.
  2. Ensure that each relation target of a present relation is present.
  3. Ensure that every present node has at maximum one present hosting relation.
  4. Ensure that the node of each present artifact is present.
  5. Ensure that present artifacts have unique names within their node.
  6. Ensure that the node of each present property is present.
  7. Ensure that present properties have unique names within their node.
  8. Ensure that the container of each present type is present.
  9. Ensure that each present type container has exactly one present type.
  10. Ensure that every present node has a present hosting relation if the node had at least one conditional relation in the variable
  11. Ensure that every present node has a present incoming relation if the node had at least one incoming relation in the variable service template.
  12. Ensure that every present node has a present deployment artifact if the node had at least one deployment artifact in the variable service template.

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#element-display-system","title":"Element Display System","text":"

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.

","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/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":["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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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\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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-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_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":""},{"location":"variability4tosca/tests/test-circles-india/#variable-service-template","title":"Variable Service 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_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":""},{"location":"variability4tosca/tests/test-groups-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\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-motivation-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\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-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:\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-both/#variable-service-template","title":"Variable Service 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:\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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-preserved/#variable-service-template","title":"Variable Service 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_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":""},{"location":"variability4tosca/tests/test-hosting-aware-pruning-transitive-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: 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":""},{"location":"variability4tosca/tests/test-policies-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\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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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: 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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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:\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":""},{"location":"variability4tosca/tests/test-pruning-alpha-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:\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":""},{"location":"variability4tosca/tests/test-pruning-bravo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-bravo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-charlie-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:\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":""},{"location":"variability4tosca/tests/test-pruning-charlie-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:\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":""},{"location":"variability4tosca/tests/test-pruning-delta-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:\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":""},{"location":"variability4tosca/tests/test-pruning-delta-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:\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":""},{"location":"variability4tosca/tests/test-pruning-echo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-echo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-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:\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":""},{"location":"variability4tosca/tests/test-pruning-foxtrott-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:\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":""},{"location":"variability4tosca/tests/test-pruning-hotel-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:\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":""},{"location":"variability4tosca/tests/test-pruning-hotel-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:\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":""},{"location":"variability4tosca/tests/test-pruning-india-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:\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":""},{"location":"variability4tosca/tests/test-pruning-india-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:\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":""},{"location":"variability4tosca/tests/test-pruning-juliett-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:\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":""},{"location":"variability4tosca/tests/test-pruning-juliett-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:\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":""},{"location":"variability4tosca/tests/test-pruning-kilo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-kilo-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:\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":""},{"location":"variability4tosca/tests/test-pruning-lima-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:\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":""},{"location":"variability4tosca/tests/test-pruning-lima-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:\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":""},{"location":"variability4tosca/tests/test-pruning-mike-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:\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":""},{"location":"variability4tosca/tests/test-pruning-mike-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-relation-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoing-target-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:\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":""},{"location":"variability4tosca/tests/test-pruning-outgoingnaive-target-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-agent-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-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:\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":""},{"location":"variability4tosca/tests/test-scenario-worker-worker-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:\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":"","tags":["Misc"]},{"location":"tags/#closer-2024","title":"CLOSER 2024","text":"","tags":["Misc"]},{"location":"tags/#contributing","title":"Contributing","text":"","tags":["Misc"]},{"location":"tags/#coopis-2023","title":"CoopIS 2023","text":"","tags":["Misc"]},{"location":"tags/#docker","title":"Docker","text":"","tags":["Misc"]},{"location":"tags/#edmm","title":"EDMM","text":"","tags":["Misc"]},{"location":"tags/#experimental","title":"Experimental","text":"","tags":["Misc"]},{"location":"tags/#guide","title":"Guide","text":"","tags":["Misc"]},{"location":"tags/#misc","title":"Misc","text":"","tags":["Misc"]},{"location":"tags/#normative","title":"Normative","text":"","tags":["Misc"]},{"location":"tags/#profile","title":"Profile","text":"","tags":["Misc"]},{"location":"tags/#publication","title":"Publication","text":"","tags":["Misc"]},{"location":"tags/#queries4tosca","title":"Queries4TOSCA","text":"","tags":["Misc"]},{"location":"tags/#sofdcar","title":"SofDCar","text":"","tags":["Misc"]},{"location":"tags/#specification","title":"Specification","text":"","tags":["Misc"]},{"location":"tags/#ucc-2023","title":"UCC 2023","text":"","tags":["Misc"]},{"location":"tags/#unfurl","title":"Unfurl","text":"","tags":["Misc"]},{"location":"tags/#variability4tosca","title":"Variability4TOSCA","text":"","tags":["Misc"]},{"location":"tags/#vintner","title":"Vintner","text":"","tags":["Misc"]},{"location":"tags/#zenodo","title":"Zenodo","text":"","tags":["Misc"]},{"location":"tags/#xopera","title":"xOpera","text":"","tags":["Misc"]}]} \ No newline at end of file