diff --git a/search/search_index.json b/search/search_index.json index 793cd0da9..fbe314469 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.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\",\"latex\",\"csv\"], 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/development/#night","title":"Night","text":"

The Night workflow is scheduled for every tuesday at 420. This workflow ensures that the latest release is correctly signed and can be executed. Moreover, integration tests are executed, which use xOpera, Unfurl, and GCP.

","tags":["Contributing"]},{"location":"contributing/documentation/","title":"Documentation","text":"

This document holds instructions on writing the documentation.

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

We follow the following guidelines when writing documentation.

","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/#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.
","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 C1.

Figure C1: TOSCA Vintner Core Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact","title":"artifact","text":"

The \"root\" artifact type manages the root artifact type all other artifact types inherit from.

artifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#sourcearchive","title":"source.archive","text":"

The \"source.archive\" artifact type manages a generic archive that holds distribution files of a component.

source.archive:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\ndescription: extra options when extracting the archive\nentry_schema:\ntype: string\nrequired: false\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#systempackage","title":"system.package","text":"

The \"system.package\" artifact type manages a package that is installed via a system package manager. It expects the package name in the \"file\" key.

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":"

The \"container.image\" artifact type manages a generic container image. It expects the image reference in the \"file\" key.

container.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machineimage","title":"machine.image","text":"

The \"machine.image\" artifact type manages a generic machine image. It expects the image reference in the \"file\" key.

machine.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbmsimage","title":"dbms.image","text":"

The \"dbms.image\" artifact type manages a generic DBMS image. It expects the image reference in the \"file\" key.

dbms.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cacheimage","title":"cache.image","text":"

The \"cache.image\" artifact type manages a generic cache image. It expects the image reference in the \"file\" key.

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

Figure C2: TOSCA Vintner Core Interface Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface","title":"interface","text":"

The \"interface\" interface type manages the root interface type all other interface types inherit from.

interface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#management","title":"management","text":"

The \"management\" interface type manages the standard lifecycle management of components.

management:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: create lifecycle management operation, i.e., an inline-bash script\nconfigure:\ndescription: configure lifecycle management operation, i.e., an inline-bash script\nstart:\ndescription: start lifecycle management operation, i.e., an inline-bash script\nstop:\ndescription: stop lifecycle management operation, i.e., an inline-bash script\ndelete:\ndescription: delete lifecycle management operation, i.e., an inline-bash script\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 C3.

Figure C3: TOSCA Vintner Core Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node","title":"node","text":"

The abstract \"node\" node type defines the root node type all other node types inherit from.

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":"

The abstract \"cloud.provider\" node type defines an abstract cloud provider, which is capable of hosting cloud services.

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":"

The abstract \"cloud.service\" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.

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":"

The abstract \"software.application\" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.

software.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the application\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":"

The abstract \"service.application\" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.

service.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndescription: the programming/ platform language of the application, e.g., node22\napplication_port:\ntype: string\ndescription: the port the application listens on, e.g., 3000\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\ndescription: the protocol the application uses, e.g., http\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the application can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareruntime","title":"software.runtime","text":"

The abstract \"software.runtime\" node type defines a generic software runtime.

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":"

The abstract \"container.runtime\" node type defines a generic container runtime.

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":"

The abstract \"machine\" node type defines a generic computing machine.

machine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the machine can be publicly reached, i.e., the IP or a domain name\nmanagement_address:\ntype: string\ndescription: the address under which the machine can be privately reached, i.e., the IP or a domain name\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#localmachine","title":"local.machine","text":"

The \"local.machine\" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.

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":"

The \"remote.machine\" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.

remote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nports:\ntype: list\ndescription: ports to open\nentry_schema:\ntype: string\nflavor:\ntype: string\ndescription: flavor of the machine, i.e., cpu, memory, disk size encoded as string\ndefault: m1.medium\nnetwork:\ntype: string\ndescription: network to connect to\nssh_user:\ntype: string\ndescription: ssh user to connect to the machine\nssh_key_name:\ntype: string\ndescription: ssh key name to connect to the machine\nssh_key_file:\ntype: string\ndescription: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#virtualmachine","title":"virtual.machine","text":"

The \"virtual.machine\" node type manages a virtual machine.

virtual.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#physicalmachine","title":"physical.machine","text":"

The \"physical.machine\" node type manages a physical machine.

physical.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#database","title":"database","text":"

The abstract \"database\" node type defines a generic database. It requires a DBMS to run.

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":"

The abstract \"relational.database\" node type defines a generic relational database. It requires a relational DBMS to run.

relational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbms","title":"dbms","text":"

The abstract \"dbms\" node type defines a generic DBMS.

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":"

The abstract \"relational.dbms\" node type defines a generic relational DBMS.

relational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cache","title":"cache","text":"

The abstract \"cache\" node type defines a generic caching service.

cache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ndescription: name of the cache\ncache_port:\ntype: string\ndescription: port the cache listens on\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the cache can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#storage","title":"storage","text":"

The abstract \"storage\" node type defines a generic storage service.

storage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#blockstorage","title":"block.storage","text":"

The abstract \"block.storage\" node type defines a generic block storage.

block.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#objectstorage","title":"object.storage","text":"

The abstract \"object.storage\" node type defines a generic object storage.

object.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\ndescription: name of the storage\nstorage_dialect:\ntype: string\ndescription: dialect of the storage, e.g., s3\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":"

The abstract \"file.storage\" node type defines a generic file storage.

file.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ingress","title":"ingress","text":"

The \"ingress\" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.

ingress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the upstream application\napplication_port:\ntype: string\ndescription: port the upstream application listens on\napplication_protocol:\ntype: string\ndescription: protocol the upstream application uses\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name\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 E1.

Figure E1: Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerimage","title":"docker.image","text":"

The \"docker.image\" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the \"file\" key.

docker.image:\nderived_from: container.image\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ziparchive","title":"zip.archive","text":"

The \"zip.archive\" artifact type manages a ZIP archive, which contains the distribution files of a component.

zip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tararchive","title":"tar.archive","text":"

The \"tar.archive\" artifact type manages a TAR archive, which contains the distribution files of a component

tar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#aptpackage","title":"apt.package","text":"

The \"apt.package\" artifact type manages a package that is installed via the apt package manager.

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

Figure E2: Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsruntime","title":"nodejs.runtime","text":"

The \"nodejs.runtime\" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components

nodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\ndescription: the name of the application\nartifacts:\napt_package:\ntype: apt.package\ndescription: the apt package to install Node.js\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsserviceapplication","title":"nodejs.service.application","text":"

The \"nodejs.service.application\" node type manages a Node.js service application.

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":"

The \"reactjs.service.application\" node type manages a React.js service application.

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":"

The \"python.runtime\" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonserviceapplication","title":"python.service.application","text":"

The \"python.service.application\" node type manages a Python service application.

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":"

The \"go.service.application\" node type manages a Go service application.

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":"

The \"java.runtime\" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaserviceapplication","title":"java.service.application","text":"

The \"java.service.application\" node type manages a Java service application.

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":"

The \"dotnet.runtime\" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#csharpserviceapplication","title":"csharp.service.application","text":"

The \"csharp.service.application\" node type manages a C# service application.

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":"

The \"binary.service.application\" node type manages a binary service application.

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":"

The abstract \"gcp.provider\" node type defines a Google Cloud Platform (GCP) project.

gcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ndescription: the region of the GCP project\ngcp_service_account_file:\ntype: string\ndescription: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator\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":"

The abstract \"gcp.service\" node type defines a Google Cloud Platform (GCP) service.

gcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ndescription: the API of the GCP service\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudrun","title":"gcp.cloudrun","text":"

The \"gcp.cloudrun\" node type manages a the GCP CloudRun service.

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":"

The \"gcp.cloudsql\" node type manages a the GCP CloudSQL service.

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":"

The \"gcp.appengine\" node type manages a the GCP AppEngine service.

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":"

The \"gcp.appenginereporting\" node type manages a the GCP AppEngine Reporting service.

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":"

The \"gcp.cloudbuild\" node type manages a the GCP CloudBuild service.

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":"

The \"gcp.kubernetesengine\" node type manages a the GCP Kubernetes Engine service.

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":"

The \"gcp.cloudstorage\" node type manages a the GCP CloudStorage service.

gcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\nattributes:\nstorage_dialect:\ntype: string\ndefault: gcp\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpmemorystore","title":"gcp.memorystore","text":"

The \"gcp.memorystore\" node type manages a the GCP Memorystore service.

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":"

The \"docker.engine\" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen 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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#kubernetescluster","title":"kubernetes.cluster","text":"

The abstract \"kubernetes.cluster\" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.

kubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\ndescription: the host of the Kubernetes API\nk8s_ca_cert_file:\ntype: string\ndescription: the CA certificate file of the Kubernetes API\nk8s_client_cert_file:\ntype: string\ndescription: the client certificate file to connect to the Kubernetes API\nk8s_client_key_file:\ntype: string\ndescription: the client key file to connect to the Kubernetes API\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":"

The abstract \"openstack.provider\" node type defines an OpenStack project.

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\ndescription: the region of the OpenStack project\nos_auth_type:\ntype: string\ndescription: the authentication type of the OpenStack project\nos_auth_url:\ntype: string\ndescription: the authentication URL of the OpenStack project\nos_identity_api_version:\ntype: string\ndescription: the identity API version of the OpenStack project\nos_interface:\ntype: string\ndescription: the interface of the OpenStack project\nos_application_credential_id:\ntype: string\ndescription: the application credential ID to authenticate at the OpenStack project\nos_application_credential_secret:\ntype: string\ndescription: the application credential secret to authenticate at the OpenStack project\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldbms","title":"mysql.dbms","text":"

The \"mysql.dbms\" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.

mysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\ndescription: the name of the DBMS\napplication_name:\ntype: string\ndescription: the name of the DBMS\ndbms_password:\ntype: string\ndescription: the root password of the DBMS\ndbms_ssl_mode:\ntype: string\ndefault: None\ndescription: the SSL mode of the DBMS\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\nmanagement_address:\ntype: string\ndescription: the management address of the DBMS\nmanagement_port:\ntype: string\ndescription: the management port of the DBMS\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":"

The \"mysql.database\" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.

mysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndescription: the name of the database\ndatabase_user:\ntype: string\ndescription: the user of the database\ndatabase_password:\ntype: string\ndescription: the password for the database user\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\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":"

The \"minio.server\" node type manages a MinIO server.

minio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\ndescription: the access key of the MinIO server\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\ndescription: the secret key of the MinIO server\nattributes:\nstorage_dialect:\ntype: string\ndefault: minio\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#redisserver","title":"redis.server","text":"

The \"redis.server\" node type manages a Redis server.

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\ndescription: The \"root\" artifact type manages the root artifact type all other artifact types inherit from.\nmetadata:\nvintner_normative: 'true'\nsource.archive:\nderived_from: artifact\ndescription: The \"source.archive\" artifact type manages a generic archive that holds distribution files of a component.\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\ndescription: extra options when extracting the archive\nentry_schema:\ntype: string\nrequired: false\nsystem.package:\nderived_from: artifact\ndescription: The \"system.package\" artifact type manages a package that is installed via a system package manager. It expects the package name in the \"file\" key.\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: The \"container.image\" artifact type manages a generic container image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\nmachine.image:\nderived_from: artifact\ndescription: The \"machine.image\" artifact type manages a generic machine image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ndbms.image:\nderived_from: artifact\ndescription: The \"dbms.image\" artifact type manages a generic DBMS image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ncache.image:\nderived_from: artifact\ndescription: The \"cache.image\" artifact type manages a generic cache image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ninterface_types:\ninterface:\nderived_from: tosca.interfaces.Root\ndescription: The \"interface\" interface type manages the root interface type all other interface types inherit from.\nmetadata:\nvintner_normative: 'true'\nmanagement:\nderived_from: interface\ndescription: The \"management\" interface type manages the standard lifecycle management of components.\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: create lifecycle management operation, i.e., an inline-bash script\nconfigure:\ndescription: configure lifecycle management operation, i.e., an inline-bash script\nstart:\ndescription: start lifecycle management operation, i.e., an inline-bash script\nstop:\ndescription: stop lifecycle management operation, i.e., an inline-bash script\ndelete:\ndescription: delete lifecycle management operation, i.e., an inline-bash script\nnode_types:\nnode:\nderived_from: tosca.nodes.Root\ndescription: The abstract \"node\" node type defines the root node type all other node types inherit from.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncloud.provider:\nderived_from: node\ndescription: The abstract \"cloud.provider\" node type defines an abstract cloud provider, which is capable of hosting cloud services.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncloud.service:\nderived_from: node\ndescription: The abstract \"cloud.service\" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.\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\ndescription: The abstract \"software.application\" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the application\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\nservice.application:\nderived_from: software.application\ndescription: The abstract \"service.application\" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndescription: the programming/ platform language of the application, e.g., node22\napplication_port:\ntype: string\ndescription: the port the application listens on, e.g., 3000\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\ndescription: the protocol the application uses, e.g., http\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the application can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated\nsoftware.runtime:\nderived_from: software.application\ndescription: The abstract \"software.runtime\" node type defines a generic software runtime.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncontainer.runtime:\nderived_from: software.runtime\ndescription: The abstract \"container.runtime\" node type defines a generic container runtime.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nmachine:\nderived_from: node\ndescription: The abstract \"machine\" node type defines a generic computing machine.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the machine can be publicly reached, i.e., the IP or a domain name\nmanagement_address:\ntype: string\ndescription: the address under which the machine can be privately reached, i.e., the IP or a domain name\nlocal.machine:\nderived_from: machine\ndescription: The \"local.machine\" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nremote.machine:\nderived_from: machine\ndescription: The \"remote.machine\" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nports:\ntype: list\ndescription: ports to open\nentry_schema:\ntype: string\nflavor:\ntype: string\ndescription: flavor of the machine, i.e., cpu, memory, disk size encoded as string\ndefault: m1.medium\nnetwork:\ntype: string\ndescription: network to connect to\nssh_user:\ntype: string\ndescription: ssh user to connect to the machine\nssh_key_name:\ntype: string\ndescription: ssh key name to connect to the machine\nssh_key_file:\ntype: string\ndescription: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvirtual.machine:\nderived_from: remote.machine\ndescription: The \"virtual.machine\" node type manages a virtual machine.\nphysical.machine:\nderived_from: remote.machine\ndescription: The \"physical.machine\" node type manages a physical machine.\ndatabase:\nderived_from: node\ndescription: The abstract \"database\" node type defines a generic database. It requires a DBMS to run.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nrelational.database:\nderived_from: database\ndescription: The abstract \"relational.database\" node type defines a generic relational database. It requires a relational DBMS to run.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ndbms:\nderived_from: software.application\ndescription: The abstract \"dbms\" node type defines a generic DBMS.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrelational.dbms:\nderived_from: dbms\ndescription: The abstract \"relational.dbms\" node type defines a generic relational DBMS.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncache:\nderived_from: software.application\ndescription: The abstract \"cache\" node type defines a generic caching service.\nproperties:\ncache_name:\ntype: string\ndescription: name of the cache\ncache_port:\ntype: string\ndescription: port the cache listens on\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the cache can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated\nstorage:\nderived_from: node\ndescription: The abstract \"storage\" node type defines a generic storage service.\nmetadata:\nvintner_normative: 'true'\nblock.storage:\nderived_from: storage\ndescription: The abstract \"block.storage\" node type defines a generic block storage.\nmetadata:\nvintner_normative: 'true'\nobject.storage:\nderived_from: storage\ndescription: The abstract \"object.storage\" node type defines a generic object storage.\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\ndescription: name of the storage\nstorage_dialect:\ntype: string\ndescription: dialect of the storage, e.g., s3\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\ndescription: The abstract \"file.storage\" node type defines a generic file storage.\nmetadata:\nvintner_normative: 'true'\ningress:\nderived_from: node\ndescription: The \"ingress\" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the upstream application\napplication_port:\ntype: string\ndescription: port the upstream application listens on\napplication_protocol:\ntype: string\ndescription: protocol the upstream application uses\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name\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: The \"docker.image\" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\nzip.archive:\nderived_from: source.archive\ndescription: The \"zip.archive\" artifact type manages a ZIP archive, which contains the distribution files of a component.\nmetadata:\nvintner_normative: 'true'\ntar.archive:\nderived_from: source.archive\ndescription: The \"tar.archive\" artifact type manages a TAR archive, which contains the distribution files of a component\nmetadata:\nvintner_normative: 'true'\napt.package:\nderived_from: system.package\ndescription: The \"apt.package\" artifact type manages a package that is installed via the apt package manager.\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\ndescription: The \"nodejs.runtime\" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\ndescription: the name of the application\nartifacts:\napt_package:\ntype: apt.package\ndescription: the apt package to install Node.js\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nnodejs.service.application:\nderived_from: service.application\ndescription: The \"nodejs.service.application\" node type manages a Node.js 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\ndescription: The \"reactjs.service.application\" node type manages a React.js service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\npython.runtime:\nderived_from: software.runtime\ndescription: The \"python.runtime\" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\npython.service.application:\nderived_from: service.application\ndescription: The \"python.service.application\" node type manages a Python 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\ndescription: The \"go.service.application\" node type manages a Go service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\njava.runtime:\nderived_from: software.runtime\ndescription: The \"java.runtime\" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\njava.service.application:\nderived_from: service.application\ndescription: The \"java.service.application\" node type manages a Java service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\ndotnet.runtime:\nderived_from: software.runtime\ndescription: The \"dotnet.runtime\" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncsharp.service.application:\nderived_from: service.application\ndescription: The \"csharp.service.application\" node type manages a C# service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\nbinary.service.application:\nderived_from: service.application\ndescription: The \"binary.service.application\" node type manages a binary service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\ngcp.provider:\nderived_from: cloud.provider\ndescription: The abstract \"gcp.provider\" node type defines a Google Cloud Platform (GCP) project.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ndescription: the region of the GCP project\ngcp_service_account_file:\ntype: string\ndescription: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\ngcp.service:\nderived_from: cloud.service\ndescription: The abstract \"gcp.service\" node type defines a Google Cloud Platform (GCP) service.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ndescription: the API of the GCP service\ngcp.cloudrun:\nderived_from: gcp.service\ndescription: The \"gcp.cloudrun\" node type manages a the GCP CloudRun service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\ngcp.cloudsql:\nderived_from: gcp.service\ndescription: The \"gcp.cloudsql\" node type manages a the GCP CloudSQL service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\ngcp.appengine:\nderived_from: gcp.service\ndescription: The \"gcp.appengine\" node type manages a the GCP AppEngine 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\ndescription: The \"gcp.appenginereporting\" node type manages a the GCP AppEngine Reporting service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\ngcp.cloudbuild:\nderived_from: gcp.service\ndescription: The \"gcp.cloudbuild\" node type manages a the GCP CloudBuild service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\ngcp.kubernetesengine:\nderived_from: gcp.service\ndescription: The \"gcp.kubernetesengine\" node type manages a the GCP Kubernetes Engine service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\ngcp.cloudstorage:\nderived_from: gcp.service\ndescription: The \"gcp.cloudstorage\" node type manages a the GCP CloudStorage service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\nattributes:\nstorage_dialect:\ntype: string\ndefault: gcp\ngcp.memorystore:\nderived_from: gcp.service\ndescription: The \"gcp.memorystore\" node type manages a the GCP Memorystore service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\ndocker.engine:\nderived_from: container.runtime\ndescription: The \"docker.engine\" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen 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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nkubernetes.cluster:\nderived_from: cloud.service\ndescription: The abstract \"kubernetes.cluster\" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\ndescription: the host of the Kubernetes API\nk8s_ca_cert_file:\ntype: string\ndescription: the CA certificate file of the Kubernetes API\nk8s_client_cert_file:\ntype: string\ndescription: the client certificate file to connect to the Kubernetes API\nk8s_client_key_file:\ntype: string\ndescription: the client key file to connect to the Kubernetes API\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nopenstack.provider:\nderived_from: cloud.provider\ndescription: The abstract \"openstack.provider\" node type defines an OpenStack project.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\ndescription: the region of the OpenStack project\nos_auth_type:\ntype: string\ndescription: the authentication type of the OpenStack project\nos_auth_url:\ntype: string\ndescription: the authentication URL of the OpenStack project\nos_identity_api_version:\ntype: string\ndescription: the identity API version of the OpenStack project\nos_interface:\ntype: string\ndescription: the interface of the OpenStack project\nos_application_credential_id:\ntype: string\ndescription: the application credential ID to authenticate at the OpenStack project\nos_application_credential_secret:\ntype: string\ndescription: the application credential secret to authenticate at the OpenStack project\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nmysql.dbms:\nderived_from: relational.dbms\ndescription: The \"mysql.dbms\" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\ndescription: the name of the DBMS\napplication_name:\ntype: string\ndescription: the name of the DBMS\ndbms_password:\ntype: string\ndescription: the root password of the DBMS\ndbms_ssl_mode:\ntype: string\ndefault: None\ndescription: the SSL mode of the DBMS\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\nmanagement_address:\ntype: string\ndescription: the management address of the DBMS\nmanagement_port:\ntype: string\ndescription: the management port of the DBMS\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nmysql.database:\nderived_from: relational.database\ndescription: The \"mysql.database\" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndescription: the name of the database\ndatabase_user:\ntype: string\ndescription: the user of the database\ndatabase_password:\ntype: string\ndescription: the password for the database user\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nminio.server:\nderived_from: service.application\ndescription: The \"minio.server\" node type manages a MinIO server.\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\ndescription: the access key of the MinIO server\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\ndescription: the secret key of the MinIO server\nattributes:\nstorage_dialect:\ntype: string\ndefault: minio\nredis.server:\nderived_from: cache\ndescription: The \"redis.server\" node type manages a Redis server.\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 C1.

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

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

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

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

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

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

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

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

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

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

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

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

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":"

Hidden Information

The document does not specify quality assignments at this stage.

Quick Tip #1

Elements in graphs can be clicked to open their type definition!

Quick Tip #2

You can query technology rules for your deployment scenario using vintner utils scenarios!

This document specifies the deployment technology rules. The specification is under active development and is not backwards compatible with any previous versions.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technologies","title":"Deployment Technologies","text":"

Technology rules are defined in the context of the following deployment technologies.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#ansible","title":"Ansible","text":"

Ansible is an automation tool primarily used for configuration management, application deployment, and task automation. It allows system administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#terraform","title":"Terraform","text":"

Terraform is an infrastructure as code (IaC) tool that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL), Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#kubernetes","title":"Kubernetes","text":"

Kubernetes is a system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#docker-compose","title":"Docker Compose","text":"

Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It allows the management of services, networks, and volumes, in a declarative manner. Compose is particularly suited for single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#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

","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

","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)

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","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. mandatory false String | List(String) Mandatory variability inputs. optional false String | List(String) Any other variability input. choices false List(String) Requires none, one, or multiple of referenced variability input. alternatives false List(String) Requires exactly one of the referenced variability input. requires false String | List(String) (Cross-tree) Implies/ requires another variability input. excludes false String | List(String) (Cross-tree) Excludes another 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_condition_mode false List(container | consuming, -) container-consuming Configure the default condition for properties. 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. required_technology_check false Boolean true Enable in the enricher if technology is required when enriching technologies","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/#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. unique_relation_constraint false Boolean false Enable the constraint regarding unique relation 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\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\nunique_relation_constraint: true\nrequired_artifact_constraint: true\nrelation_default_implied: 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 (container) 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. Property (consuming) true false Check if the consumed property or input is present.","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. managed false Boolean Enable if node is managed (default is true).

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_condition_mode false container | consuming | container-consuming 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.

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 an odd number of arguments is true. exo List(BooleanExpression) Boolean Evaluates if exactly one value is true. implies Tuple(BooleanExpression, BooleanExpression) Boolean Evaluates if first value implies the second value. amo List(BooleanExpression) Boolean Evaluates if at most one value is true.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#arithmetic-operators","title":"Arithmetic Operators","text":"

The following arithmetic operators can be used inside a variability expression.

Keyname Input Output Description add List(NumericExpression) Numeric Sums up given values. sub List(NumericExpression) Numeric Subtracts values from the first one. mul List(NumericExpression) Numeric Multiplies given values. div List(NumericExpression) Numeric Divides values from the first one. mod Tuple(NumericExpression, NumericExpression) Numeric Divides values and returns the remainder.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#presence-operators","title":"Presence Operators","text":"

The following presence operators can be used inside a logic expression.

Keyname Input Output Description variability_input String Any Returns the value of a variability input. logic_expression String Boolean Returns the value of the Logic Expression. value_expression String Any Returns the value of the Value Expression. node_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if node is present. host_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any host of the node is present. Note, an error will be thrown later when consistency is checked if there are multiple hosting relations present. has_source Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any source of any incoming relation of the node template is present. has_incoming_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship. has_incoming_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship in a naive way that will result in a circle considering the default condition of relations. has_outgoing_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship. has_outgoing_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship in a naive way that will result in a circle considering the default condition of relations. has_artifact Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present. has_artifact_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present in a naive way that will result in a circle considering the default condition of artifacts. relation_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number) Boolean Returns if relation is present. artifact_presence Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is present. is_managed SELF | Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is managed by a deployment technology. policy_presence Policy: String | Number Boolean Returns if policy is present. group_presence Group: String Boolean Returns if group is present. input_presence Input: String | Number Boolean Returns if input is present. is_consumed Input: String | Number Boolean Returns if input is consumed by a property. output_presence Output: String | Number Boolean Returns if output is present. is_produced Output: String | Number Boolean Returns if output is produced by a property. source_presence SELF | CONTAINER Boolean Returns if source node of relation is present. Can only be used inside a relation. Otherwise 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 \"exo\": all false -> false 53 Operator \"exo\": One ture -> true 54 Operator \"exo\": all true -> false 55 Operator \"implies\": false false -> true 56 Operator \"implies\": false true -> true 57 Operator \"implies\": true false -> false 58 Operator \"implies\": true true -> true 59 Operator \"not\" Evaluates to \"false\" 60 Operator \"not\" Evaluates to \"true\" 61 Operator \"or\" Evaluates to \"False\" (Empty) 62 Operator \"or\" Evaluates to \"False\" 63 Operator \"or\" Evaluates to \"true\" 64 Operator \"or\" Evaluates to \"true\" (All \"true\") 65 circles-alpha 66 circles-bravo 67 circles-charlie 68 circles-delta 69 circles-echo 70 circles-golf 71 circles-hotel 72 circles-india 73 consistency-throw-hosting-relation-missing 74 consistency-throw-hosting-relation-missing-constraint 75 consistency-throw-multiple-hosting-relations 76 consistency-throw-multiple-hosting-relations-constraint 77 consistency-throw-relation-source-missing 78 consistency-throw-relation-target-missing 79 Operator \"equal\" Evaluates to \"false\" 80 Operator \"equal\" Evaluates to \"true\" 81 Operator \"greater_or_equal\" Evaluates to \"true\" (Greater) 82 Operator \"greater_or_equal\" Evaluates to \"true\" (Equal) 83 Operator \"greater_or_equal\" Evaluates to \"false\" (Less) 84 Operator \"greater\" Evaluates to \"false\" (Equal) 85 Operator \"greater\" Evaluates to \"true\" (Greater) 86 Operator \"greater\" Evaluates to \"false\" (Less) 87 Operator \"in_range\" Evaluates to \"false\" 88 Operator \"in_range\" Evaluates to \"true\" 89 Operator \"length\" Evaluates to \"false\" 90 Operator \"length\" Evaluates to \"true\" 91 Operator \"less_or_equal\" Evaluates to \"true\" (Equal) 92 Operator \"less_or_equal\" Evaluates to \"false\" (Greater) 93 Operator \"less_or_equal\" Evaluates to \"true\" (Less) 94 Operator \"less\" Evaluates to \"false\" (Equal) 95 Operator \"less\" Evaluates to \"false\" (Greater) 96 Operator \"less\" Evaluates to \"true\" (Less) 97 Operator \"max_length\" Evaluates to \"true\" (Equal) 98 Operator \"max_length\" Evaluates to \"false\" (Greater) 99 Operator \"max_length\" Evaluates to \"true\" (Less) 100 Operator \"min_length\" Evaluates to \"true\" (Equal) 101 Operator \"min_length\" Evaluates to \"true\" (Greater) 102 Operator \"min_length\" Evaluates to \"false\" (Less) 103 Operator \"valid_values\" Evaluates to \"false\" 104 Operator \"valid_values\" Evaluates to \"true\" 105 date-operators-after-false 106 date-operators-after-or-same-false 107 date-operators-after-or-same-true 108 date-operators-after-true 109 date-operators-before-false 110 date-operators-before-or-same-false 111 date-operators-before-or-same-true 112 date-operators-before-true 113 date-operators-same-false 114 date-operators-same-true 115 date-operators-within-false 116 date-operators-within-true 117 Conditional Group 118 groups-default-condition 119 groups-default-condition-nothing 120 groups-group-presence-absent 121 groups-group-presence-present 122 groups-prune 123 hosting-aware-pruning-constraints-elastic 124 hosting-aware-pruning-constraints-static 125 hosting-aware-pruning-fig-10-broken 126 hosting-aware-pruning-fig-10-fixed 127 hosting-aware-pruning-host-elastic 128 hosting-aware-pruning-host-static 129 hosting-aware-pruning-motivation-elastic 130 hosting-aware-pruning-motivation-static 131 hosting-aware-pruning-provider-elastic 132 hosting-aware-pruning-provider-static 133 hosting-aware-pruning-transitive-ambiguous 134 hosting-aware-pruning-transitive-both 135 hosting-aware-pruning-transitive-preserved 136 hosting-aware-pruning-transitive-unexpected 137 implications-constraints 138 implications-implied-left 139 implications-implied-right 140 implications-implies-left 141 implications-implies-right 142 implications-incoming-left 143 implications-incoming-right 144 implications-motivating-scenario-cloud 145 implications-motivating-scenario-static 146 implications-requires 147 implications-unexpected 148 implications-naive-constraints 149 implications-naive-implied-left 150 implications-naive-implied-right 151 implications-naive-implies-left 152 implications-naive-implies-right 153 implications-naive-incoming-left 154 implications-naive-incoming-right 155 implications-naive-motivating-scenario-cloud 156 implications-naive-motivating-scenario-static 157 implications-naive-naive 158 implications-naive-naive-another 159 implications-naive-naive-another-no-optimization 160 implications-naive-naive-another-not 161 implications-naive-naive-not 162 implications-naive-requires 163 implications-naive-unexpected 164 implied-default-fixed-left 165 implied-default-fixed-right 166 implied-default-manual-left 167 implied-default-manual-right 168 implied-host-broken 169 implied-host-fixed-left 170 implied-host-fixed-right 171 implied-host-manual-left 172 implied-host-manual-right 173 import-conditional 174 import-empty 175 import-get-import-absent 176 import-get-import-present 177 inputs-conditional 178 inputs-conditional-list 179 inputs-default-alternative 180 inputs-input-presence-absent 181 inputs-input-presence-present 182 inputs-pruning-consumed 183 inputs-pruning-consumed-still 184 inputs-pruning-consumed-v3 185 inputs-pruning-no-consumer 186 inputs-pruning-not-consumed-anymore 187 inputs-pruning-not-consumed-anymore-v3 188 inputs-unique-input-constraint-sat 189 inputs-unique-input-constraint-sat-other 190 inputs-unique-input-constraint-sat-pruning-consumed 191 inputs-unique-input-constraint-sat-pruning-consumed-default 192 inputs-unique-input-constraint-unsat 193 nodes-conditional 194 nodes-conditional-type 195 nodes-conditional-type-default 196 nodes-default-false-false 197 nodes-default-false-true 198 nodes-default-host-absent 199 nodes-default-host-present 200 nodes-default-true-false 201 nodes-default-true-true 202 nodes-host-presence-absent 203 nodes-host-presence-false-false 204 nodes-host-presence-present 205 nodes-host-presence-true-false 206 nodes-host-presence-true-true 207 nodes-host-presence-true-true-constraint 208 nodes-node-presence-absent 209 nodes-node-presence-present 210 nodes-required-incoming-relation-constraint-sat 211 nodes-required-incoming-relation-constraint-unsat 212 nodes-type-specific 213 Benchmark 214 Operator \"concat\" 215 Get Variability Expression 216 Operator \"concat\" 217 other-logic-expression-false 218 other-logic-expression-true 219 other-logic-value-expression 220 other-nothing 221 other-preset 222 other-presets 223 other-throw-CONTAINER 224 other-throw-SELF 225 other-throw-not-unique 226 Operator \"concat\" 227 Get Variability Expression 228 Get Variability Input 229 other-version 230 other-weight 231 outputs-conditional 232 outputs-conditional-list 233 outputs-default 234 outputs-input-presence-absent 235 outputs-input-presence-present 236 outputs-pruning-not-produced-anymore-unfurl-1 237 outputs-pruning-not-produced-anymore-unfurl-2 238 outputs-pruning-not-produced-anymore-xopera 239 outputs-pruning-not-produced-anymore-xopera-v3 240 outputs-pruning-produced-unfurl 241 outputs-pruning-produced-unfurl-attribute 242 outputs-pruning-produced-unfurl-attribute-not 243 outputs-unique-output-constraint-sat 244 outputs-unique-output-constraint-sat-default 245 outputs-unique-output-constraint-sat-other 246 outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera 247 outputs-unique-output-constraint-sat-pruning-produced-xopera 248 outputs-unique-output-constraint-unsat 249 persistent-persistent 250 persistent-persistent-false 251 persistent-persistent-throw 252 persistent-persistent-undefined 253 policies-conditional 254 policies-default-condition 255 policies-default-condition-nothing 256 Policy Targets Absent Members 257 Policy Targets Absent Nodes 258 Policy Has No Targets 259 Policy Targets Present Member 260 Policy Targets One Present Node 261 Policy Targets Present Nodes 262 policies-policy-presence-absent 263 policies-policy-presence-present 264 Policy Pruning 265 properties-artifact-container-presence-absent 266 properties-artifact-container-presence-present 267 properties-conditional 268 properties-default-alternative 269 properties-default-alternative-false 270 properties-default-condition 271 properties-expression 272 properties-list 273 properties-list-another 274 properties-map 275 properties-map-another 276 properties-node-container-presence-absent 277 properties-node-container-presence-present 278 properties-node-node-presence-CONTAINER-absent 279 properties-node-node-presence-CONTAINER-present 280 properties-node-property-presence-number-absent 281 properties-node-property-presence-number-present 282 properties-properties 283 properties-relation-container-presence-absent 284 properties-relation-container-presence-present 285 properties-throw-ambiguous-property 286 properties-throw-missing-property-container 287 properties-throw-multiple-default 288 properties-unique-property-constraint-sat 289 properties-unique-property-constraint-unsat 290 pruning-alpha-default 291 pruning-alpha-default-naive 292 pruning-alpha-pruning 293 pruning-artifact-default-alpha 294 pruning-artifact-default-bravo 295 pruning-artifact-default-charlie 296 pruning-artifact-default-delta 297 pruning-artifact-default-naive 298 pruning-bravo-default 299 pruning-bravo-pruning 300 pruning-charlie-default 301 pruning-charlie-pruning 302 pruning-delta-default 303 pruning-delta-pruning 304 pruning-echo-default 305 pruning-echo-pruning 306 pruning-foxtrott-default 307 pruning-foxtrott-pruning 308 pruning-hotel-default 309 pruning-hotel-pruning 310 pruning-incoming-artifact-pruning-alpha 311 pruning-incoming-artifact-pruning-bravo 312 pruning-incoming-artifact-pruning-charlie 313 pruning-incoming-artifact-pruning-delta 314 pruning-incoming-artifact-pruning-echo 315 pruning-incoming-artifact-pruning-foxtrott 316 pruning-incoming-artifact-pruning-golf 317 pruning-incoming-artifact-pruning-hotel 318 pruning-incoming-artifact-pruning-naive-alpha 319 pruning-incoming-artifact-pruning-naive-bravo 320 pruning-india-default 321 pruning-india-pruning 322 pruning-juliett-default 323 pruning-juliett-pruning 324 pruning-kilo-default 325 pruning-kilo-pruning 326 pruning-lima-default 327 pruning-lima-pruning 328 pruning-mike-default 329 pruning-mike-pruning 330 pruning-outgoing-relation-absent 331 pruning-outgoing-relation-present 332 pruning-outgoing-target-absent 333 pruning-outgoing-target-present 334 pruning-outgoingnaive-target-present 335 pruning-pruning 336 pruning-pruning-false-false 337 pruning-pruning-false-true 338 pruning-pruning-true-false 339 pruning-pruning-true-true 340 Relation Pruning 341 relationships-ambigous-disabled 342 relationships-ambigous-throw 343 relationships-conditional 344 relationships-throw-multiple 345 relationships-throw-undefined 346 relationships-throw-unused 347 relationships-type-specific 348 requirement-assignment-conditional 349 requirement-assignment-default-alternative 350 requirement-assignment-default-alternative-false 351 requirement-assignment-default-condition 352 requirement-assignment-default-condition-throw-source 353 requirement-assignment-default-condition-throw-target 354 requirement-assignment-one-hosting-relation 355 requirement-assignment-relation-presence-index-absent 356 requirement-assignment-relation-presence-name-absent 357 requirement-assignment-source-presence-absent 358 requirement-assignment-source-presence-present 359 requirement-assignment-target-presence-absent 360 requirement-assignment-target-presence-present 361 requirement-assignment-throw-multiple-defaults 362 Scenario \"Alpha\" 363 scenario-worker-agent-false 364 scenario-worker-agent-true 365 scenario-worker-worker-false 366 scenario-worker-worker-true 367 technologies-ambiguous 368 technologies-ambiguous-disabled 369 technologies-conditional 370 technologies-constraint 371 technologies-constraint-disabled 372 technologies-default-multiple 373 technologies-default-true 374 technologies-expected 375 technologies-expected-disabled 376 technologies-lowercase 377 technologies-missing 378 technologies-missing-disabled 379 technologies-optimization 380 technologies-optimization-double 381 technologies-optimization-order 382 technologies-optimization-unsat 383 technologies-optimization-weight 384 technologies-pruning 385 technologies-pruning-disabled 386 technologies-rules 387 technologies-rules-v3 388 technologies-throw-required 389 technologies-unique 390 technologies-unique-disabled 391 variability-inputs-no-constraints 392 variability-inputs-requires 393 variability-inputs-requires-throw 394 variability-inputs-requires-throw-falsy 395 variability-inputs-requires-throw-truthy","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:\ntype: first.artifact.type\nfile: first_artifact_file\nconditions: false\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/","title":"artifacts-required-artifact-constraint-sat-pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: true\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/","title":"artifacts-required-artifact-constraint-sat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/","title":"artifacts-required-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Could not solve\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/","title":"artifacts-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Artifact \"artifact_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/","title":"artifacts-throw-ambiguous-default","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Artifact \"artifact_one_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/","title":"artifacts-throw-missing-artifact-container","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Container of artifact \"artifact_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/","title":"artifacts-unique-artifact-constraint-sat-none","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#description","title":"Description","text":"

Unique artifact constraints is SAT since no artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nchecks: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/","title":"artifacts-unique-artifact-constraint-sat-one","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#description","title":"Description","text":"

Unique artifact constraints is SAT since one artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/","title":"artifacts-unique-artifact-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#description","title":"Description","text":"

Unique artifact constraints is SAT since the other one artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/","title":"artifacts-unique-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#description","title":"Description","text":"

Unique artifact constraints is UNSAT since two artifacts with same name of same container are present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Could not solve\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/","title":"Operator \"and\" Evaluates to \"True\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/","title":"Operator \"and\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- false\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/","title":"Operator \"and\" Evaluates to \"false\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/","title":"Operator \"and\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/","title":"Operator \"and\" Evaluates to \"true\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/","title":"Operator \"exo\": all false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/","title":"Operator \"exo\": all true -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/","title":"Operator \"exo\": One ture -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/","title":"Operator \"implies\": false false -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/","title":"Operator \"implies\": false true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/","title":"Operator \"implies\": true false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/","title":"Operator \"implies\": true true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/","title":"Operator \"not\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/","title":"Operator \"not\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/","title":"Operator \"or\" Evaluates to \"False\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/","title":"Operator \"or\" Evaluates to \"False\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/","title":"Operator \"or\" Evaluates to \"true\" (All \"true\")","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/","title":"Operator \"or\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- true\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-circles-alpha/","title":"circles-alpha","text":""},{"location":"variability4tosca/tests/test-circles-alpha/#description","title":"Description","text":""},{"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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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-v3/","title":"inputs-pruning-consumed-v3","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-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:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nmanaged: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-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\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:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nmanaged: false\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\nvalue: one-value\n- two:\ntype: string\nconditions: false\nvalue: two-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\ntwo:\ntype: string\nconditions: false\nvalue: two-value\nthree:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: b\nconditions: false\nvalue: one-other-value\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\nvalue: one-value\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\nvalue: some-value\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\nvalue: some-value\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\nvalue: some-value\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\ntechnology_constraint: 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\nvalue: one-value\n- one:\ntype: string_b\ndefault_alternative: true\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-other-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: string_b\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-other-value\nthree:\ntype: string\nvalue: three-value\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\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- some_property: some_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\nvalue: one-value\n- one:\ntype: string_b\nconditions: false\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: string_b\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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-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-ambigous-disabled/","title":"relationships-ambigous-disabled","text":""},{"location":"variability4tosca/tests/test-relationships-ambigous-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_rc_3\ntopology_template:\nvariability:\noptions:\nunique_relation_constraint: false\nnode_templates:\none:\ntype: one\npersistent: true\nmanaged: false\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nmanaged: false\nthree:\ntype: three\nmanaged: false\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-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:\none:\ntype: one\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-throw/","title":"relationships-ambigous-throw","text":""},{"location":"variability4tosca/tests/test-relationships-ambigous-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_rc_3\ntopology_template:\nnode_templates:\none:\ntype: one\npersistent: true\nmanaged: false\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nmanaged: false\nthree:\ntype: three\nmanaged: false\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-throw/#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-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\nrequired_technology_check: 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-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":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/","title":"variability-inputs-requires-throw-falsy","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/#variable-service-template","title":"Variable 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\nrequires: second\nsecond:\ntype: boolean\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/#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-requires-throw-truthy/","title":"variability-inputs-requires-throw-truthy","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-truthy/#variable-service-template","title":"Variable 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: 'yes'\nrequires: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-truthy/#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-requires-throw/","title":"variability-inputs-requires-throw","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-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:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nrequires: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw/#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-requires/","title":"variability-inputs-requires","text":""},{"location":"variability4tosca/tests/test-variability-inputs-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:\nfirst:\ntype: boolean\ndefault: true\nrequires: second\nsecond:\ntype: boolean\ndefault: true\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires/#variability-resolved-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\",\"latex\",\"csv\"], 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/development/#night","title":"Night","text":"

The Night workflow is scheduled for every tuesday at 420. This workflow ensures that the latest release is correctly signed and can be executed. Moreover, integration tests are executed, which use xOpera, Unfurl, and GCP.

","tags":["Contributing"]},{"location":"contributing/documentation/","title":"Documentation","text":"

This document holds instructions on writing the documentation.

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

We follow the following guidelines when writing documentation.

","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/#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.
","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 C1.

Figure C1: TOSCA Vintner Core Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#artifact","title":"artifact","text":"

The \"root\" artifact type manages the root artifact type all other artifact types inherit from.

artifact:\nderived_from: tosca.artifacts.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#sourcearchive","title":"source.archive","text":"

The \"source.archive\" artifact type manages a generic archive that holds distribution files of a component.

source.archive:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\ndescription: extra options when extracting the archive\nentry_schema:\ntype: string\nrequired: false\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#systempackage","title":"system.package","text":"

The \"system.package\" artifact type manages a package that is installed via a system package manager. It expects the package name in the \"file\" key.

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":"

The \"container.image\" artifact type manages a generic container image. It expects the image reference in the \"file\" key.

container.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#machineimage","title":"machine.image","text":"

The \"machine.image\" artifact type manages a generic machine image. It expects the image reference in the \"file\" key.

machine.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbmsimage","title":"dbms.image","text":"

The \"dbms.image\" artifact type manages a generic DBMS image. It expects the image reference in the \"file\" key.

dbms.image:\nderived_from: artifact\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cacheimage","title":"cache.image","text":"

The \"cache.image\" artifact type manages a generic cache image. It expects the image reference in the \"file\" key.

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

Figure C2: TOSCA Vintner Core Interface Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#interface","title":"interface","text":"

The \"interface\" interface type manages the root interface type all other interface types inherit from.

interface:\nderived_from: tosca.interfaces.Root\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#management","title":"management","text":"

The \"management\" interface type manages the standard lifecycle management of components.

management:\nderived_from: interface\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: create lifecycle management operation, i.e., an inline-bash script\nconfigure:\ndescription: configure lifecycle management operation, i.e., an inline-bash script\nstart:\ndescription: start lifecycle management operation, i.e., an inline-bash script\nstop:\ndescription: stop lifecycle management operation, i.e., an inline-bash script\ndelete:\ndescription: delete lifecycle management operation, i.e., an inline-bash script\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 C3.

Figure C3: TOSCA Vintner Core Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#node","title":"node","text":"

The abstract \"node\" node type defines the root node type all other node types inherit from.

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":"

The abstract \"cloud.provider\" node type defines an abstract cloud provider, which is capable of hosting cloud services.

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":"

The abstract \"cloud.service\" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.

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":"

The abstract \"software.application\" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.

software.application:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the application\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":"

The abstract \"service.application\" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.

service.application:\nderived_from: software.application\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndescription: the programming/ platform language of the application, e.g., node22\napplication_port:\ntype: string\ndescription: the port the application listens on, e.g., 3000\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\ndescription: the protocol the application uses, e.g., http\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the application can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#softwareruntime","title":"software.runtime","text":"

The abstract \"software.runtime\" node type defines a generic software runtime.

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":"

The abstract \"container.runtime\" node type defines a generic container runtime.

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":"

The abstract \"machine\" node type defines a generic computing machine.

machine:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the machine can be publicly reached, i.e., the IP or a domain name\nmanagement_address:\ntype: string\ndescription: the address under which the machine can be privately reached, i.e., the IP or a domain name\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#localmachine","title":"local.machine","text":"

The \"local.machine\" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.

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":"

The \"remote.machine\" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.

remote.machine:\nderived_from: machine\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nports:\ntype: list\ndescription: ports to open\nentry_schema:\ntype: string\nflavor:\ntype: string\ndescription: flavor of the machine, i.e., cpu, memory, disk size encoded as string\ndefault: m1.medium\nnetwork:\ntype: string\ndescription: network to connect to\nssh_user:\ntype: string\ndescription: ssh user to connect to the machine\nssh_key_name:\ntype: string\ndescription: ssh key name to connect to the machine\nssh_key_file:\ntype: string\ndescription: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#virtualmachine","title":"virtual.machine","text":"

The \"virtual.machine\" node type manages a virtual machine.

virtual.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#physicalmachine","title":"physical.machine","text":"

The \"physical.machine\" node type manages a physical machine.

physical.machine:\nderived_from: remote.machine\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#database","title":"database","text":"

The abstract \"database\" node type defines a generic database. It requires a DBMS to run.

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":"

The abstract \"relational.database\" node type defines a generic relational database. It requires a relational DBMS to run.

relational.database:\nderived_from: database\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dbms","title":"dbms","text":"

The abstract \"dbms\" node type defines a generic DBMS.

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":"

The abstract \"relational.dbms\" node type defines a generic relational DBMS.

relational.dbms:\nderived_from: dbms\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#cache","title":"cache","text":"

The abstract \"cache\" node type defines a generic caching service.

cache:\nderived_from: software.application\nproperties:\ncache_name:\ntype: string\ndescription: name of the cache\ncache_port:\ntype: string\ndescription: port the cache listens on\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the cache can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#storage","title":"storage","text":"

The abstract \"storage\" node type defines a generic storage service.

storage:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#blockstorage","title":"block.storage","text":"

The abstract \"block.storage\" node type defines a generic block storage.

block.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#objectstorage","title":"object.storage","text":"

The abstract \"object.storage\" node type defines a generic object storage.

object.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\ndescription: name of the storage\nstorage_dialect:\ntype: string\ndescription: dialect of the storage, e.g., s3\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":"

The abstract \"file.storage\" node type defines a generic file storage.

file.storage:\nderived_from: storage\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ingress","title":"ingress","text":"

The \"ingress\" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.

ingress:\nderived_from: node\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the upstream application\napplication_port:\ntype: string\ndescription: port the upstream application listens on\napplication_protocol:\ntype: string\ndescription: protocol the upstream application uses\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name\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 E1.

Figure E1: Artifact Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#dockerimage","title":"docker.image","text":"

The \"docker.image\" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the \"file\" key.

docker.image:\nderived_from: container.image\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#ziparchive","title":"zip.archive","text":"

The \"zip.archive\" artifact type manages a ZIP archive, which contains the distribution files of a component.

zip.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#tararchive","title":"tar.archive","text":"

The \"tar.archive\" artifact type manages a TAR archive, which contains the distribution files of a component

tar.archive:\nderived_from: source.archive\nmetadata:\nvintner_normative: 'true'\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#aptpackage","title":"apt.package","text":"

The \"apt.package\" artifact type manages a package that is installed via the apt package manager.

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

Figure E2: Node Types","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsruntime","title":"nodejs.runtime","text":"

The \"nodejs.runtime\" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components

nodejs.runtime:\nderived_from: software.runtime\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\ndescription: the name of the application\nartifacts:\napt_package:\ntype: apt.package\ndescription: the apt package to install Node.js\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#nodejsserviceapplication","title":"nodejs.service.application","text":"

The \"nodejs.service.application\" node type manages a Node.js service application.

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":"

The \"reactjs.service.application\" node type manages a React.js service application.

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":"

The \"python.runtime\" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#pythonserviceapplication","title":"python.service.application","text":"

The \"python.service.application\" node type manages a Python service application.

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":"

The \"go.service.application\" node type manages a Go service application.

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":"

The \"java.runtime\" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#javaserviceapplication","title":"java.service.application","text":"

The \"java.service.application\" node type manages a Java service application.

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":"

The \"dotnet.runtime\" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.

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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#csharpserviceapplication","title":"csharp.service.application","text":"

The \"csharp.service.application\" node type manages a C# service application.

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":"

The \"binary.service.application\" node type manages a binary service application.

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":"

The abstract \"gcp.provider\" node type defines a Google Cloud Platform (GCP) project.

gcp.provider:\nderived_from: cloud.provider\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ndescription: the region of the GCP project\ngcp_service_account_file:\ntype: string\ndescription: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator\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":"

The abstract \"gcp.service\" node type defines a Google Cloud Platform (GCP) service.

gcp.service:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ndescription: the API of the GCP service\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpcloudrun","title":"gcp.cloudrun","text":"

The \"gcp.cloudrun\" node type manages a the GCP CloudRun service.

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":"

The \"gcp.cloudsql\" node type manages a the GCP CloudSQL service.

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":"

The \"gcp.appengine\" node type manages a the GCP AppEngine service.

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":"

The \"gcp.appenginereporting\" node type manages a the GCP AppEngine Reporting service.

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":"

The \"gcp.cloudbuild\" node type manages a the GCP CloudBuild service.

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":"

The \"gcp.kubernetesengine\" node type manages a the GCP Kubernetes Engine service.

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":"

The \"gcp.cloudstorage\" node type manages a the GCP CloudStorage service.

gcp.cloudstorage:\nderived_from: gcp.service\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\nattributes:\nstorage_dialect:\ntype: string\ndefault: gcp\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#gcpmemorystore","title":"gcp.memorystore","text":"

The \"gcp.memorystore\" node type manages a the GCP Memorystore service.

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":"

The \"docker.engine\" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen 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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#kubernetescluster","title":"kubernetes.cluster","text":"

The abstract \"kubernetes.cluster\" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.

kubernetes.cluster:\nderived_from: cloud.service\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\ndescription: the host of the Kubernetes API\nk8s_ca_cert_file:\ntype: string\ndescription: the CA certificate file of the Kubernetes API\nk8s_client_cert_file:\ntype: string\ndescription: the client certificate file to connect to the Kubernetes API\nk8s_client_key_file:\ntype: string\ndescription: the client key file to connect to the Kubernetes API\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":"

The abstract \"openstack.provider\" node type defines an OpenStack project.

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\ndescription: the region of the OpenStack project\nos_auth_type:\ntype: string\ndescription: the authentication type of the OpenStack project\nos_auth_url:\ntype: string\ndescription: the authentication URL of the OpenStack project\nos_identity_api_version:\ntype: string\ndescription: the identity API version of the OpenStack project\nos_interface:\ntype: string\ndescription: the interface of the OpenStack project\nos_application_credential_id:\ntype: string\ndescription: the application credential ID to authenticate at the OpenStack project\nos_application_credential_secret:\ntype: string\ndescription: the application credential secret to authenticate at the OpenStack project\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#mysqldbms","title":"mysql.dbms","text":"

The \"mysql.dbms\" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.

mysql.dbms:\nderived_from: relational.dbms\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\ndescription: the name of the DBMS\napplication_name:\ntype: string\ndescription: the name of the DBMS\ndbms_password:\ntype: string\ndescription: the root password of the DBMS\ndbms_ssl_mode:\ntype: string\ndefault: None\ndescription: the SSL mode of the DBMS\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\nmanagement_address:\ntype: string\ndescription: the management address of the DBMS\nmanagement_port:\ntype: string\ndescription: the management port of the DBMS\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":"

The \"mysql.database\" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.

mysql.database:\nderived_from: relational.database\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndescription: the name of the database\ndatabase_user:\ntype: string\ndescription: the user of the database\ndatabase_password:\ntype: string\ndescription: the password for the database user\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\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":"

The \"minio.server\" node type manages a MinIO server.

minio.server:\nderived_from: service.application\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\ndescription: the access key of the MinIO server\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\ndescription: the secret key of the MinIO server\nattributes:\nstorage_dialect:\ntype: string\ndefault: minio\n
","tags":["Vintner","Normative","Profile","Specification"]},{"location":"normative/#redisserver","title":"redis.server","text":"

The \"redis.server\" node type manages a Redis server.

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\ndescription: The \"root\" artifact type manages the root artifact type all other artifact types inherit from.\nmetadata:\nvintner_normative: 'true'\nsource.archive:\nderived_from: artifact\ndescription: The \"source.archive\" artifact type manages a generic archive that holds distribution files of a component.\nmetadata:\nvintner_normative: 'true'\nproperties:\nextra_opts:\ntype: list\ndescription: extra options when extracting the archive\nentry_schema:\ntype: string\nrequired: false\nsystem.package:\nderived_from: artifact\ndescription: The \"system.package\" artifact type manages a package that is installed via a system package manager. It expects the package name in the \"file\" key.\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: The \"container.image\" artifact type manages a generic container image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\nmachine.image:\nderived_from: artifact\ndescription: The \"machine.image\" artifact type manages a generic machine image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ndbms.image:\nderived_from: artifact\ndescription: The \"dbms.image\" artifact type manages a generic DBMS image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ncache.image:\nderived_from: artifact\ndescription: The \"cache.image\" artifact type manages a generic cache image. It expects the image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\ninterface_types:\ninterface:\nderived_from: tosca.interfaces.Root\ndescription: The \"interface\" interface type manages the root interface type all other interface types inherit from.\nmetadata:\nvintner_normative: 'true'\nmanagement:\nderived_from: interface\ndescription: The \"management\" interface type manages the standard lifecycle management of components.\nmetadata:\nvintner_normative: 'true'\noperations:\ncreate:\ndescription: create lifecycle management operation, i.e., an inline-bash script\nconfigure:\ndescription: configure lifecycle management operation, i.e., an inline-bash script\nstart:\ndescription: start lifecycle management operation, i.e., an inline-bash script\nstop:\ndescription: stop lifecycle management operation, i.e., an inline-bash script\ndelete:\ndescription: delete lifecycle management operation, i.e., an inline-bash script\nnode_types:\nnode:\nderived_from: tosca.nodes.Root\ndescription: The abstract \"node\" node type defines the root node type all other node types inherit from.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncloud.provider:\nderived_from: node\ndescription: The abstract \"cloud.provider\" node type defines an abstract cloud provider, which is capable of hosting cloud services.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncloud.service:\nderived_from: node\ndescription: The abstract \"cloud.service\" node type defines an generic cloud service, which is hosted on a cloud provider and which is hosting an instance of a cloud service offering.\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\ndescription: The abstract \"software.application\" node type defines a generic software application. It requires a hosting and its lifecycle is managed by the management interface.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the application\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\ninterfaces:\nmanagement:\ntype: management\nservice.application:\nderived_from: software.application\ndescription: The abstract \"service.application\" node type defines a generic software application, which provides a service. It is not normative how this component is implemented. This could be implemented by a Kubernetes Deployment Resource along with a Kubernetes Service Resource on Kubernetes or by a Systemd Service Unit on a virtual machine.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndescription: the programming/ platform language of the application, e.g., node22\napplication_port:\ntype: string\ndescription: the port the application listens on, e.g., 3000\nmetadata:\nvintner_name: PORT\napplication_protocol:\ntype: string\ndescription: the protocol the application uses, e.g., http\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the application can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the application can be reached, i.e., the protocol, IP and port concatenated\nsoftware.runtime:\nderived_from: software.application\ndescription: The abstract \"software.runtime\" node type defines a generic software runtime.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncontainer.runtime:\nderived_from: software.runtime\ndescription: The abstract \"container.runtime\" node type defines a generic container runtime.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nmachine:\nderived_from: node\ndescription: The abstract \"machine\" node type defines a generic computing machine.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the machine can be publicly reached, i.e., the IP or a domain name\nmanagement_address:\ntype: string\ndescription: the address under which the machine can be privately reached, i.e., the IP or a domain name\nlocal.machine:\nderived_from: machine\ndescription: The \"local.machine\" node type manages a local machine, i.e., localhost. It is capable of hosting, e.g., software components.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nremote.machine:\nderived_from: machine\ndescription: The \"remote.machine\" node type manages a remote machine, i.e., a machine that is not localhost. It is capable of hosting, e.g., software components.\nmetadata:\nvintner_normative: 'true'\nproperties:\nmachine_name:\ntype: string\ndescription: name of the machine\nports:\ntype: list\ndescription: ports to open\nentry_schema:\ntype: string\nflavor:\ntype: string\ndescription: flavor of the machine, i.e., cpu, memory, disk size encoded as string\ndefault: m1.medium\nnetwork:\ntype: string\ndescription: network to connect to\nssh_user:\ntype: string\ndescription: ssh user to connect to the machine\nssh_key_name:\ntype: string\ndescription: ssh key name to connect to the machine\nssh_key_file:\ntype: string\ndescription: ssh key file to connect to the machine, i.e., the absolute path to the ssh key file on the filesystem of the orchestrator\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nvirtual.machine:\nderived_from: remote.machine\ndescription: The \"virtual.machine\" node type manages a virtual machine.\nphysical.machine:\nderived_from: remote.machine\ndescription: The \"physical.machine\" node type manages a physical machine.\ndatabase:\nderived_from: node\ndescription: The abstract \"database\" node type defines a generic database. It requires a DBMS to run.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nrelational.database:\nderived_from: database\ndescription: The abstract \"relational.database\" node type defines a generic relational database. It requires a relational DBMS to run.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ndbms:\nderived_from: software.application\ndescription: The abstract \"dbms\" node type defines a generic DBMS.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nrelational.dbms:\nderived_from: dbms\ndescription: The abstract \"relational.dbms\" node type defines a generic relational DBMS.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\ncache:\nderived_from: software.application\ndescription: The abstract \"cache\" node type defines a generic caching service.\nproperties:\ncache_name:\ntype: string\ndescription: name of the cache\ncache_port:\ntype: string\ndescription: port the cache listens on\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the cache can be reached, i.e., the IP or a domain name\napplication_endpoint:\ntype: string\ndescription: the endpoint under which the cache can be reached, i.e., the protocol, IP and port concatenated\nstorage:\nderived_from: node\ndescription: The abstract \"storage\" node type defines a generic storage service.\nmetadata:\nvintner_normative: 'true'\nblock.storage:\nderived_from: storage\ndescription: The abstract \"block.storage\" node type defines a generic block storage.\nmetadata:\nvintner_normative: 'true'\nobject.storage:\nderived_from: storage\ndescription: The abstract \"object.storage\" node type defines a generic object storage.\nmetadata:\nvintner_normative: 'true'\nproperties:\nstorage_name:\ntype: string\ndescription: name of the storage\nstorage_dialect:\ntype: string\ndescription: dialect of the storage, e.g., s3\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\ndescription: The abstract \"file.storage\" node type defines a generic file storage.\nmetadata:\nvintner_normative: 'true'\ningress:\nderived_from: node\ndescription: The \"ingress\" node type manages a generic ingress service, which is a reverse proxy that exposes an upstream application. It is not normative how this component is implemented. This could be implemented by an Ingress resource on Kubernetes or by a reverse proxy, such as NGINX or Caddy, on a virtual machine.\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndescription: name of the upstream application\napplication_port:\ntype: string\ndescription: port the upstream application listens on\napplication_protocol:\ntype: string\ndescription: protocol the upstream application uses\nattributes:\napplication_address:\ntype: string\ndescription: the address under which the upstream application is exposed by the ingress, i.e., the IP or a domain name\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: The \"docker.image\" artifact type manages a concrete Docker Image. It expects the Docker Image reference in the \"file\" key.\nmetadata:\nvintner_normative: 'true'\nzip.archive:\nderived_from: source.archive\ndescription: The \"zip.archive\" artifact type manages a ZIP archive, which contains the distribution files of a component.\nmetadata:\nvintner_normative: 'true'\ntar.archive:\nderived_from: source.archive\ndescription: The \"tar.archive\" artifact type manages a TAR archive, which contains the distribution files of a component\nmetadata:\nvintner_normative: 'true'\napt.package:\nderived_from: system.package\ndescription: The \"apt.package\" artifact type manages a package that is installed via the apt package manager.\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\ndescription: The \"nodejs.runtime\" node type manages the Node.js runtime, which is a software runtime that runs on a machine. It is capable of hosting Node.js components\nmetadata:\nvintner_normative: 'true'\nproperties:\napplication_name:\ntype: string\ndefault: nodejs\ndescription: the name of the application\nartifacts:\napt_package:\ntype: apt.package\ndescription: the apt package to install Node.js\nfile: nodejs\nproperties:\nscript: https://deb.nodesource.com/setup_18.x\nattributes:\nmanagement_address:\ntype: string\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nnodejs.service.application:\nderived_from: service.application\ndescription: The \"nodejs.service.application\" node type manages a Node.js 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\ndescription: The \"reactjs.service.application\" node type manages a React.js service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: nodejs18\npython.runtime:\nderived_from: software.runtime\ndescription: The \"python.runtime\" node type manages the Python runtime, which is a software runtime that runs on a machine. It is capable of hosting Python components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\npython.service.application:\nderived_from: service.application\ndescription: The \"python.service.application\" node type manages a Python 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\ndescription: The \"go.service.application\" node type manages a Go service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: go122\njava.runtime:\nderived_from: software.runtime\ndescription: The \"java.runtime\" node type manages the Java runtime, which is a software runtime that runs on a machine. It is capable of hosting Java components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\njava.service.application:\nderived_from: service.application\ndescription: The \"java.service.application\" node type manages a Java service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: java21\ndotnet.runtime:\nderived_from: software.runtime\ndescription: The \"dotnet.runtime\" node type manages the .NET runtime, which is a software runtime that runs on a machine. It is capable of hosting .NET components.\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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ncsharp.service.application:\nderived_from: service.application\ndescription: The \"csharp.service.application\" node type manages a C# service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: dotnet8\nbinary.service.application:\nderived_from: service.application\ndescription: The \"binary.service.application\" node type manages a binary service application.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\napplication_language:\ntype: string\ndefault: binary\ngcp.provider:\nderived_from: cloud.provider\ndescription: The abstract \"gcp.provider\" node type defines a Google Cloud Platform (GCP) project.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_region:\ntype: string\ndescription: the region of the GCP project\ngcp_service_account_file:\ntype: string\ndescription: the service account file of the GCP project, i.e., the absolute path to the serivce account file on the filesystem of the orchestrator\ngcp_project:\ntype: string\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\ngcp.service:\nderived_from: cloud.service\ndescription: The abstract \"gcp.service\" node type defines a Google Cloud Platform (GCP) service.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: gcp\ngcp_service:\ntype: string\ndescription: the API of the GCP service\ngcp.cloudrun:\nderived_from: gcp.service\ndescription: The \"gcp.cloudrun\" node type manages a the GCP CloudRun service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: run.googleapis.com\ngcp.cloudsql:\nderived_from: gcp.service\ndescription: The \"gcp.cloudsql\" node type manages a the GCP CloudSQL service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: sqladmin.googleapis.com\ngcp.appengine:\nderived_from: gcp.service\ndescription: The \"gcp.appengine\" node type manages a the GCP AppEngine 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\ndescription: The \"gcp.appenginereporting\" node type manages a the GCP AppEngine Reporting service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: appenginereporting.googleapis.com\ngcp.cloudbuild:\nderived_from: gcp.service\ndescription: The \"gcp.cloudbuild\" node type manages a the GCP CloudBuild service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: cloudbuild.googleapis.com\ngcp.kubernetesengine:\nderived_from: gcp.service\ndescription: The \"gcp.kubernetesengine\" node type manages a the GCP Kubernetes Engine service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: container.googleapis.com\ngcp.cloudstorage:\nderived_from: gcp.service\ndescription: The \"gcp.cloudstorage\" node type manages a the GCP CloudStorage service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: storage.googleapis.com\nattributes:\nstorage_dialect:\ntype: string\ndefault: gcp\ngcp.memorystore:\nderived_from: gcp.service\ndescription: The \"gcp.memorystore\" node type manages a the GCP Memorystore service.\nmetadata:\nvintner_normative: 'true'\nproperties:\ngcp_service:\ntype: string\ndefault: redis.googleapis.com\ndocker.engine:\nderived_from: container.runtime\ndescription: The \"docker.engine\" node type manages the Docker Engine, which is a software runtime that runs on a machine. It is capable of hosting Docker containers. It is configured to listen 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\ndescription: the management address of the host\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nkubernetes.cluster:\nderived_from: cloud.service\ndescription: The abstract \"kubernetes.cluster\" node type describes a Kubernetes cluster. It is typically hosted on a cloud provider.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: kubernetes\nk8s_host:\ntype: string\ndescription: the host of the Kubernetes API\nk8s_ca_cert_file:\ntype: string\ndescription: the CA certificate file of the Kubernetes API\nk8s_client_cert_file:\ntype: string\ndescription: the client certificate file to connect to the Kubernetes API\nk8s_client_key_file:\ntype: string\ndescription: the client key file to connect to the Kubernetes API\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nopenstack.provider:\nderived_from: cloud.provider\ndescription: The abstract \"openstack.provider\" node type defines an OpenStack project.\nmetadata:\nvintner_normative: 'true'\nvintner_abstract: 'true'\nproperties:\n_hosting:\ntype: string\ndefault: openstack\nos_region_name:\ntype: string\ndescription: the region of the OpenStack project\nos_auth_type:\ntype: string\ndescription: the authentication type of the OpenStack project\nos_auth_url:\ntype: string\ndescription: the authentication URL of the OpenStack project\nos_identity_api_version:\ntype: string\ndescription: the identity API version of the OpenStack project\nos_interface:\ntype: string\ndescription: the interface of the OpenStack project\nos_application_credential_id:\ntype: string\ndescription: the application credential ID to authenticate at the OpenStack project\nos_application_credential_secret:\ntype: string\ndescription: the application credential secret to authenticate at the OpenStack project\ninterfaces:\nStandard:\noperations:\ncreate: exit 0\ndelete: exit 0\nmysql.dbms:\nderived_from: relational.dbms\ndescription: The \"mysql.dbms\" node type manages a MySQL DBMS, which is capable of hosting MySQL databases.\nmetadata:\nvintner_normative: 'true'\nproperties:\ndbms_name:\ntype: string\ndescription: the name of the DBMS\napplication_name:\ntype: string\ndescription: the name of the DBMS\ndbms_password:\ntype: string\ndescription: the root password of the DBMS\ndbms_ssl_mode:\ntype: string\ndefault: None\ndescription: the SSL mode of the DBMS\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\nmanagement_address:\ntype: string\ndescription: the management address of the DBMS\nmanagement_port:\ntype: string\ndescription: the management port of the DBMS\ncapabilities:\nhost:\ntype: tosca.capabilities.Compute\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nmysql.database:\nderived_from: relational.database\ndescription: The \"mysql.database\" node type manages a MySQL database, which is hosted on a MySQL and which can be accessed by other components.\nmetadata:\nvintner_normative: 'true'\nproperties:\ndatabase_name:\ntype: string\ndescription: the name of the database\ndatabase_user:\ntype: string\ndescription: the user of the database\ndatabase_password:\ntype: string\ndescription: the password for the database user\nattributes:\napplication_address:\ntype: string\ndescription: the application address of the DBMS\napplication_port:\ntype: string\ndescription: the application port of the DBMS\ncapabilities:\ndatabase:\ntype: tosca.capabilities.Endpoint.Database\nrequirements:\n- host:\ncapability: tosca.capabilities.Compute\nrelationship: tosca.relationships.HostedOn\nminio.server:\nderived_from: service.application\ndescription: The \"minio.server\" node type manages a MinIO server.\nmetadata:\nvintner_normative: 'true'\nproperties:\naccess_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_USER\ndescription: the access key of the MinIO server\nsecret_key:\ntype: string\nmetadata:\nvintner_name: MINIO_ROOT_PASSWORD\ndescription: the secret key of the MinIO server\nattributes:\nstorage_dialect:\ntype: string\ndefault: minio\nredis.server:\nderived_from: cache\ndescription: The \"redis.server\" node type manages a Redis server.\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 C1.

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

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

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

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

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

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

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

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

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

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

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

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

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":"

Hidden Information

The document does not specify quality assignments at this stage.

Quick Tip #1

Elements in graphs can be clicked to open their type definition!

Quick Tip #2

You can query technology rules for your deployment scenario using vintner utils scenarios!

This document specifies the deployment technology rules. The specification is under active development and is not backwards compatible with any previous versions.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#deployment-technologies","title":"Deployment Technologies","text":"

Technology rules are defined in the context of the following deployment technologies.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#ansible","title":"Ansible","text":"

Ansible is an automation tool primarily used for configuration management, application deployment, and task automation. It allows system administrators and DevOps teams to manage software on servers using SSH, without the need for agents on target nodes. Ansible uses simple, human-readable YAML files called playbooks to define tasks and configurations, enabling consistent management of IT environments across multiple servers. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#terraform","title":"Terraform","text":"

Terraform is an infrastructure as code (IaC) tool that allows users to define, provision, and manage cloud infrastructure in a consistent, automated, and reproducible way. Using a declarative configuration language called HashiCorp Configuration Language (HCL), Terraform enables users to define infrastructure components such as virtual machines, networks, and storage in human-readable configuration files. It supports a wide range of cloud providers, including AWS, Azure, Google Cloud, and many others, allowing for seamless multi-cloud management. By applying these configurations, Terraform creates and manages the defined resources through APIs. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#kubernetes","title":"Kubernetes","text":"

Kubernetes is a system for automating the deployment, scaling, and management of containerized applications, offering production-grade container orchestration. It provides a platform for running and managing applications in clusters of servers, ensuring high availability, scalability, and efficient resource utilization. Kubernetes allows users to define the desired state of their applications using declarative manifests, which specify the configuration, deployment, and management of containerized workloads. By continuously monitoring and adjusting the cluster to match these desired states, Kubernetes simplifies the application deployment process, supports automated rollouts and rollbacks, and ensures the self-healing of applications. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#docker-compose","title":"Docker Compose","text":"

Docker Compose is a tool that enables the definition and running of multi-container applications on a Docker Engine, using a single YAML configuration file. It allows the management of services, networks, and volumes, in a declarative manner. Compose is particularly suited for single-host deployments, providing a consistent environment across various stages of the application lifecycle. However, it is limited to working within the Docker ecosystem. Find out more.

","tags":["Vintner","Specification"]},{"location":"variability4tosca/rules/#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

","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

","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)

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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

","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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Graph component(virtual.machine)artifact(machine.image)host 1(openstack.provider)host","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. mandatory false String | List(String) Mandatory variability inputs. optional false String | List(String) Any other variability input. choices false List(String) Requires none, one, or multiple of referenced variability input. alternatives false List(String) Requires exactly one of the referenced variability input. requires false String | List(String) (Cross-tree) Implies/ requires another variability input. excludes false String | List(String) (Cross-tree) Excludes another 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_condition_mode false List(container | consuming, -) container-consuming Configure the default condition for properties. 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. required_technology_check false Boolean true Enable in the enricher if technology is required when enriching technologies","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/#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. unique_relation_constraint false Boolean false Enable the constraint regarding unique relation 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\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\nunique_relation_constraint: true\nrelation_default_implied: 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 (container) 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. Property (consuming) true false Check if the consumed property or input is present.","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. managed false Boolean Enable if node is managed (default is true).

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_condition_mode false container | consuming | container-consuming 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.

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 an odd number of arguments is true. exo List(BooleanExpression) Boolean Evaluates if exactly one value is true. implies Tuple(BooleanExpression, BooleanExpression) Boolean Evaluates if first value implies the second value. amo List(BooleanExpression) Boolean Evaluates if at most one value is true.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#arithmetic-operators","title":"Arithmetic Operators","text":"

The following arithmetic operators can be used inside a variability expression.

Keyname Input Output Description add List(NumericExpression) Numeric Sums up given values. sub List(NumericExpression) Numeric Subtracts values from the first one. mul List(NumericExpression) Numeric Multiplies given values. div List(NumericExpression) Numeric Divides values from the first one. mod Tuple(NumericExpression, NumericExpression) Numeric Divides values and returns the remainder.","tags":["Variability4TOSCA","Specification"]},{"location":"variability4tosca/specification/#presence-operators","title":"Presence Operators","text":"

The following presence operators can be used inside a logic expression.

Keyname Input Output Description variability_input String Any Returns the value of a variability input. logic_expression String Boolean Returns the value of the Logic Expression. value_expression String Any Returns the value of the Value Expression. node_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if node is present. host_presence Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any host of the node is present. Note, an error will be thrown later when consistency is checked if there are multiple hosting relations present. has_source Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any source of any incoming relation of the node template is present. has_incoming_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship. has_incoming_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is target of at least one present incoming relationship in a naive way that will result in a circle considering the default condition of relations. has_outgoing_relation Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship. has_outgoing_relation_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if the node template is source of at least one present outgoing relationship in a naive way that will result in a circle considering the default condition of relations. has_artifact Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present. has_artifact_naive Node: String | SELF | CONTAINER | SOURCE | TARGET Boolean Returns if any artifact of the node template is present in a naive way that will result in a circle considering the default condition of artifacts. relation_presence Tuple(Node: String | SELF | CONTAINER, Relation: String | Number) Boolean Returns if relation is present. artifact_presence Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is present. is_managed SELF | Tuple(Node: String | SELF | CONTAINER, Artifact: String | Number) Boolean Returns if artifact is managed by a deployment technology. policy_presence Policy: String | Number Boolean Returns if policy is present. group_presence Group: String Boolean Returns if group is present. input_presence Input: String | Number Boolean Returns if input is present. is_consumed Input: String | Number Boolean Returns if input is consumed by a property. output_presence Output: String | Number Boolean Returns if output is present. is_produced Output: String | Number Boolean Returns if output is produced by a property. source_presence SELF | CONTAINER Boolean Returns if source node of relation is present. Can only be used inside a relation. Otherwise 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 \"exo\": all false -> false 53 Operator \"exo\": One ture -> true 54 Operator \"exo\": all true -> false 55 Operator \"implies\": false false -> true 56 Operator \"implies\": false true -> true 57 Operator \"implies\": true false -> false 58 Operator \"implies\": true true -> true 59 Operator \"not\" Evaluates to \"false\" 60 Operator \"not\" Evaluates to \"true\" 61 Operator \"or\" Evaluates to \"False\" (Empty) 62 Operator \"or\" Evaluates to \"False\" 63 Operator \"or\" Evaluates to \"true\" 64 Operator \"or\" Evaluates to \"true\" (All \"true\") 65 circles-alpha 66 circles-bravo 67 circles-charlie 68 circles-delta 69 circles-echo 70 circles-golf 71 circles-hotel 72 circles-india 73 consistency-throw-hosting-relation-missing 74 consistency-throw-hosting-relation-missing-constraint 75 consistency-throw-multiple-hosting-relations 76 consistency-throw-multiple-hosting-relations-constraint 77 consistency-throw-relation-source-missing 78 consistency-throw-relation-target-missing 79 Operator \"equal\" Evaluates to \"false\" 80 Operator \"equal\" Evaluates to \"true\" 81 Operator \"greater_or_equal\" Evaluates to \"true\" (Greater) 82 Operator \"greater_or_equal\" Evaluates to \"true\" (Equal) 83 Operator \"greater_or_equal\" Evaluates to \"false\" (Less) 84 Operator \"greater\" Evaluates to \"false\" (Equal) 85 Operator \"greater\" Evaluates to \"true\" (Greater) 86 Operator \"greater\" Evaluates to \"false\" (Less) 87 Operator \"in_range\" Evaluates to \"false\" 88 Operator \"in_range\" Evaluates to \"true\" 89 Operator \"length\" Evaluates to \"false\" 90 Operator \"length\" Evaluates to \"true\" 91 Operator \"less_or_equal\" Evaluates to \"true\" (Equal) 92 Operator \"less_or_equal\" Evaluates to \"false\" (Greater) 93 Operator \"less_or_equal\" Evaluates to \"true\" (Less) 94 Operator \"less\" Evaluates to \"false\" (Equal) 95 Operator \"less\" Evaluates to \"false\" (Greater) 96 Operator \"less\" Evaluates to \"true\" (Less) 97 Operator \"max_length\" Evaluates to \"true\" (Equal) 98 Operator \"max_length\" Evaluates to \"false\" (Greater) 99 Operator \"max_length\" Evaluates to \"true\" (Less) 100 Operator \"min_length\" Evaluates to \"true\" (Equal) 101 Operator \"min_length\" Evaluates to \"true\" (Greater) 102 Operator \"min_length\" Evaluates to \"false\" (Less) 103 Operator \"valid_values\" Evaluates to \"false\" 104 Operator \"valid_values\" Evaluates to \"true\" 105 date-operators-after-false 106 date-operators-after-or-same-false 107 date-operators-after-or-same-true 108 date-operators-after-true 109 date-operators-before-false 110 date-operators-before-or-same-false 111 date-operators-before-or-same-true 112 date-operators-before-true 113 date-operators-same-false 114 date-operators-same-true 115 date-operators-within-false 116 date-operators-within-true 117 Conditional Group 118 groups-default-condition 119 groups-default-condition-nothing 120 groups-group-presence-absent 121 groups-group-presence-present 122 groups-prune 123 hosting-aware-pruning-constraints-elastic 124 hosting-aware-pruning-constraints-static 125 hosting-aware-pruning-fig-10-broken 126 hosting-aware-pruning-fig-10-fixed 127 hosting-aware-pruning-host-elastic 128 hosting-aware-pruning-host-static 129 hosting-aware-pruning-motivation-elastic 130 hosting-aware-pruning-motivation-static 131 hosting-aware-pruning-provider-elastic 132 hosting-aware-pruning-provider-static 133 hosting-aware-pruning-transitive-ambiguous 134 hosting-aware-pruning-transitive-both 135 hosting-aware-pruning-transitive-preserved 136 hosting-aware-pruning-transitive-unexpected 137 implications-constraints 138 implications-implied-left 139 implications-implied-right 140 implications-implies-left 141 implications-implies-right 142 implications-incoming-left 143 implications-incoming-right 144 implications-motivating-scenario-cloud 145 implications-motivating-scenario-static 146 implications-requires 147 implications-unexpected 148 implications-naive-constraints 149 implications-naive-implied-left 150 implications-naive-implied-right 151 implications-naive-implies-left 152 implications-naive-implies-right 153 implications-naive-incoming-left 154 implications-naive-incoming-right 155 implications-naive-motivating-scenario-cloud 156 implications-naive-motivating-scenario-static 157 implications-naive-naive 158 implications-naive-naive-another 159 implications-naive-naive-another-no-optimization 160 implications-naive-naive-another-not 161 implications-naive-naive-not 162 implications-naive-requires 163 implications-naive-unexpected 164 implied-default-fixed-left 165 implied-default-fixed-right 166 implied-default-manual-left 167 implied-default-manual-right 168 implied-host-broken 169 implied-host-fixed-left 170 implied-host-fixed-right 171 implied-host-manual-left 172 implied-host-manual-right 173 import-conditional 174 import-empty 175 import-get-import-absent 176 import-get-import-present 177 inputs-conditional 178 inputs-conditional-list 179 inputs-default-alternative 180 inputs-input-presence-absent 181 inputs-input-presence-present 182 inputs-pruning-consumed 183 inputs-pruning-consumed-still 184 inputs-pruning-consumed-v3 185 inputs-pruning-no-consumer 186 inputs-pruning-not-consumed-anymore 187 inputs-pruning-not-consumed-anymore-v3 188 inputs-unique-input-constraint-sat 189 inputs-unique-input-constraint-sat-other 190 inputs-unique-input-constraint-sat-pruning-consumed 191 inputs-unique-input-constraint-sat-pruning-consumed-default 192 inputs-unique-input-constraint-unsat 193 nodes-conditional 194 nodes-conditional-type 195 nodes-conditional-type-default 196 nodes-default-false-false 197 nodes-default-false-true 198 nodes-default-host-absent 199 nodes-default-host-present 200 nodes-default-true-false 201 nodes-default-true-true 202 nodes-host-presence-absent 203 nodes-host-presence-false-false 204 nodes-host-presence-present 205 nodes-host-presence-true-false 206 nodes-host-presence-true-true 207 nodes-host-presence-true-true-constraint 208 nodes-node-presence-absent 209 nodes-node-presence-present 210 nodes-required-incoming-relation-constraint-sat 211 nodes-required-incoming-relation-constraint-unsat 212 nodes-type-specific 213 Benchmark 214 Operator \"concat\" 215 Get Variability Expression 216 Operator \"concat\" 217 other-logic-expression-false 218 other-logic-expression-true 219 other-logic-value-expression 220 other-nothing 221 other-preset 222 other-presets 223 other-throw-CONTAINER 224 other-throw-SELF 225 other-throw-not-unique 226 Operator \"concat\" 227 Get Variability Expression 228 Get Variability Input 229 other-version 230 other-weight 231 outputs-conditional 232 outputs-conditional-list 233 outputs-default 234 outputs-input-presence-absent 235 outputs-input-presence-present 236 outputs-pruning-not-produced-anymore-unfurl-1 237 outputs-pruning-not-produced-anymore-unfurl-2 238 outputs-pruning-not-produced-anymore-xopera 239 outputs-pruning-not-produced-anymore-xopera-v3 240 outputs-pruning-produced-unfurl 241 outputs-pruning-produced-unfurl-attribute 242 outputs-pruning-produced-unfurl-attribute-not 243 outputs-unique-output-constraint-sat 244 outputs-unique-output-constraint-sat-default 245 outputs-unique-output-constraint-sat-other 246 outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera 247 outputs-unique-output-constraint-sat-pruning-produced-xopera 248 outputs-unique-output-constraint-unsat 249 persistent-persistent 250 persistent-persistent-false 251 persistent-persistent-throw 252 persistent-persistent-undefined 253 policies-conditional 254 policies-default-condition 255 policies-default-condition-nothing 256 Policy Targets Absent Members 257 Policy Targets Absent Nodes 258 Policy Has No Targets 259 Policy Targets Present Member 260 Policy Targets One Present Node 261 Policy Targets Present Nodes 262 policies-policy-presence-absent 263 policies-policy-presence-present 264 Policy Pruning 265 properties-artifact-container-presence-absent 266 properties-artifact-container-presence-present 267 properties-conditional 268 properties-default-alternative 269 properties-default-alternative-false 270 properties-default-condition 271 properties-expression 272 properties-list 273 properties-list-another 274 properties-map 275 properties-map-another 276 properties-node-container-presence-absent 277 properties-node-container-presence-present 278 properties-node-node-presence-CONTAINER-absent 279 properties-node-node-presence-CONTAINER-present 280 properties-node-property-presence-number-absent 281 properties-node-property-presence-number-present 282 properties-properties 283 properties-relation-container-presence-absent 284 properties-relation-container-presence-present 285 properties-throw-ambiguous-property 286 properties-throw-missing-property-container 287 properties-throw-multiple-default 288 properties-unique-property-constraint-sat 289 properties-unique-property-constraint-unsat 290 pruning-alpha-default 291 pruning-alpha-default-naive 292 pruning-alpha-pruning 293 pruning-artifact-default-alpha 294 pruning-artifact-default-bravo 295 pruning-artifact-default-charlie 296 pruning-artifact-default-delta 297 pruning-artifact-default-naive 298 pruning-bravo-default 299 pruning-bravo-pruning 300 pruning-charlie-default 301 pruning-charlie-pruning 302 pruning-delta-default 303 pruning-delta-pruning 304 pruning-echo-default 305 pruning-echo-pruning 306 pruning-foxtrott-default 307 pruning-foxtrott-pruning 308 pruning-hotel-default 309 pruning-hotel-pruning 310 pruning-incoming-artifact-pruning-alpha 311 pruning-incoming-artifact-pruning-bravo 312 pruning-incoming-artifact-pruning-charlie 313 pruning-incoming-artifact-pruning-delta 314 pruning-incoming-artifact-pruning-echo 315 pruning-incoming-artifact-pruning-foxtrott 316 pruning-incoming-artifact-pruning-golf 317 pruning-incoming-artifact-pruning-hotel 318 pruning-incoming-artifact-pruning-naive-alpha 319 pruning-incoming-artifact-pruning-naive-bravo 320 pruning-india-default 321 pruning-india-pruning 322 pruning-juliett-default 323 pruning-juliett-pruning 324 pruning-kilo-default 325 pruning-kilo-pruning 326 pruning-lima-default 327 pruning-lima-pruning 328 pruning-mike-default 329 pruning-mike-pruning 330 pruning-outgoing-relation-absent 331 pruning-outgoing-relation-present 332 pruning-outgoing-target-absent 333 pruning-outgoing-target-present 334 pruning-outgoingnaive-target-present 335 pruning-pruning 336 pruning-pruning-false-false 337 pruning-pruning-false-true 338 pruning-pruning-true-false 339 pruning-pruning-true-true 340 Relation Pruning 341 relationships-ambigous-disabled 342 relationships-ambigous-throw 343 relationships-conditional 344 relationships-throw-multiple 345 relationships-throw-undefined 346 relationships-throw-unused 347 relationships-type-specific 348 requirement-assignment-conditional 349 requirement-assignment-default-alternative 350 requirement-assignment-default-alternative-false 351 requirement-assignment-default-condition 352 requirement-assignment-default-condition-throw-source 353 requirement-assignment-default-condition-throw-target 354 requirement-assignment-one-hosting-relation 355 requirement-assignment-relation-presence-index-absent 356 requirement-assignment-relation-presence-name-absent 357 requirement-assignment-source-presence-absent 358 requirement-assignment-source-presence-present 359 requirement-assignment-target-presence-absent 360 requirement-assignment-target-presence-present 361 requirement-assignment-throw-multiple-defaults 362 Scenario \"Alpha\" 363 scenario-worker-agent-false 364 scenario-worker-agent-true 365 scenario-worker-worker-false 366 scenario-worker-worker-true 367 technologies-ambiguous 368 technologies-ambiguous-disabled 369 technologies-conditional 370 technologies-constraint 371 technologies-constraint-disabled 372 technologies-default-multiple 373 technologies-default-true 374 technologies-expected 375 technologies-expected-disabled 376 technologies-lowercase 377 technologies-missing 378 technologies-missing-disabled 379 technologies-optimization 380 technologies-optimization-double 381 technologies-optimization-order 382 technologies-optimization-unsat 383 technologies-optimization-weight 384 technologies-pruning 385 technologies-pruning-disabled 386 technologies-rules 387 technologies-rules-v3 388 technologies-throw-required 389 technologies-unique 390 technologies-unique-disabled 391 variability-inputs-no-constraints 392 variability-inputs-requires 393 variability-inputs-requires-throw 394 variability-inputs-requires-throw-falsy 395 variability-inputs-requires-throw-truthy","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:\ntype: first.artifact.type\nfile: first_artifact_file\nconditions: false\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\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:\ntype: first.artifact.type\nfile: first_artifact_file\n- second_artifact:\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:\ntype: first.artifact.type\nfile: first_artifact_file\nhost:\ntype: host\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/","title":"artifacts-required-artifact-constraint-sat-pruning","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nartifact_pruning: true\ntype_default_condition: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: true\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat-pruning/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/","title":"artifacts-required-artifact-constraint-sat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-sat/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/","title":"artifacts-required-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nrequired_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-required-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Could not solve\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/","title":"artifacts-throw-ambiguous-artifact","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-artifact/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Artifact \"artifact_one@1\" of node \"node_one\" is ambiguous\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/","title":"artifacts-throw-ambiguous-default","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one_one:\ntype: artifact_a\ndefault_alternative: true\n- artifact_one_one:\ntype: artifact_b\ndefault_alternative: true\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-ambiguous-default/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Artifact \"artifact_one_one@0\" of node \"node_one\" has multiple defaults\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/","title":"artifacts-throw-missing-artifact-container","text":""},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nconditions: false\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-throw-missing-artifact-container/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Container of artifact \"artifact_one@0\" of node \"node_one\" does not exist\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/","title":"artifacts-unique-artifact-constraint-sat-none","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#description","title":"Description","text":"

Unique artifact constraints is SAT since no artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nchecks: false\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-none/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/","title":"artifacts-unique-artifact-constraint-sat-one","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#description","title":"Description","text":"

Unique artifact constraints is SAT since one artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\nconditions: false\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-one/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_a\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/","title":"artifacts-unique-artifact-constraint-sat-other","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#description","title":"Description","text":"

Unique artifact constraints is SAT since the other one artifact is present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_pruning: true\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\nconditions: false\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-sat-other/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\nnode_one:\ntype: node\nartifacts:\nartifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/","title":"artifacts-unique-artifact-constraint-unsat","text":""},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#description","title":"Description","text":"

Unique artifact constraints is UNSAT since two artifacts with same name of same container are present.

"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\nunique_artifact_constraint: true\nnode_templates:\nnode_one:\ntype: node\nartifacts:\n- artifact_one:\ntype: artifact_a\n- artifact_one:\ntype: artifact_b\n
"},{"location":"variability4tosca/tests/test-artifacts-unique-artifact-constraint-unsat/#expected-error","title":"Expected Error","text":"

The following error is expected to be thrown, when resolving variability.

Could not solve\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/","title":"Operator \"and\" Evaluates to \"True\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/","title":"Operator \"and\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- false\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/","title":"Operator \"and\" Evaluates to \"false\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/","title":"Operator \"and\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-nested-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/","title":"Operator \"and\" Evaluates to \"true\" (Nested)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nand:\n- and:\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-and-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/","title":"Operator \"exo\": all false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-false-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/","title":"Operator \"exo\": all true -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/","title":"Operator \"exo\": One ture -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nexo:\n- true\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-exo-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/","title":"Operator \"implies\": false false -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-false-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/","title":"Operator \"implies\": false true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- false\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-false-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/","title":"Operator \"implies\": true false -> false","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-false-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/","title":"Operator \"implies\": true true -> true","text":""},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nimplies:\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-implies-true-true-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/","title":"Operator \"not\" Evaluates to \"false\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/","title":"Operator \"not\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nnot: false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-not-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/","title":"Operator \"or\" Evaluates to \"False\" (Empty)","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor: []\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-empty/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/","title":"Operator \"or\" Evaluates to \"False\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#description","title":"Description","text":"

Assigns \"false\" to the property \"value\" of the node \"container\" since the expression evaluates to \"false\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- false\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-false/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/","title":"Operator \"or\" Evaluates to \"true\" (All \"true\")","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- true\n- true\n- true\n- true\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true-all/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/","title":"Operator \"or\" Evaluates to \"true\"","text":""},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#description","title":"Description","text":"

Assigns \"true\" to the property \"value\" of the node \"container\" since the expression evaluates to \"true\".

"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variable-service-template","title":"Variable Service Template","text":"

The variability of the following variable service template shall be resolved.

tosca_definitions_version: tosca_variability_1_0\ntopology_template:\nvariability:\noptions:\ntype_default_condition: true\nnode_templates:\ncontainer:\ntype: container\nconditions:\nor:\n- false\n- true\n- false\n- false\n
"},{"location":"variability4tosca/tests/test-boolean-operators-or-true/#variability-resolved-service-template","title":"Variability-Resolved Service Template","text":"

The following variability-resolved service template is expected.

tosca_definitions_version: tosca_simple_yaml_1_3\ntopology_template:\nnode_templates:\ncontainer:\ntype: container\n
"},{"location":"variability4tosca/tests/test-circles-alpha/","title":"circles-alpha","text":""},{"location":"variability4tosca/tests/test-circles-alpha/#description","title":"Description","text":""},{"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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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\ntechnology_constraint: 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-v3/","title":"inputs-pruning-consumed-v3","text":""},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-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:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: true\nmanaged: false\nproperties:\nsome_property:\nget_input: some_input\n
"},{"location":"variability4tosca/tests/test-inputs-pruning-consumed-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\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:\ninputs:\nsome_input:\ntype: string\nnode_templates:\ncontainer:\ntype: container\nconditions: false\npersistent: true\nmanaged: false\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\nvalue: one-value\n- two:\ntype: string\nconditions: false\nvalue: two-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\ntwo:\ntype: string\nconditions: false\nvalue: two-value\nthree:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: b\nconditions: false\nvalue: one-other-value\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\nvalue: one-value\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\nvalue: some-value\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\nvalue: some-value\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\nvalue: some-value\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\ntechnology_constraint: 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\nvalue: one-value\n- one:\ntype: string_b\ndefault_alternative: true\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-other-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: string_b\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-other-value\nthree:\ntype: string\nvalue: three-value\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\nnode_templates:\ncontainer:\ntype: container\nproperties:\n- some_property: some_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\nvalue: one-value\n- one:\ntype: string_b\nconditions: false\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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\nvalue: one-value\nthree:\ntype: string\nvalue: three-value\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\nvalue: one-value\n- one:\ntype: string_b\nvalue: one-other-value\n- three:\ntype: string\nconditions: true\nvalue: three-value\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-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-ambigous-disabled/","title":"relationships-ambigous-disabled","text":""},{"location":"variability4tosca/tests/test-relationships-ambigous-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_rc_3\ntopology_template:\nvariability:\noptions:\nunique_relation_constraint: false\nnode_templates:\none:\ntype: one\npersistent: true\nmanaged: false\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nmanaged: false\nthree:\ntype: three\nmanaged: false\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-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:\none:\ntype: one\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nthree:\ntype: three\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-throw/","title":"relationships-ambigous-throw","text":""},{"location":"variability4tosca/tests/test-relationships-ambigous-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_rc_3\ntopology_template:\nnode_templates:\none:\ntype: one\npersistent: true\nmanaged: false\nrequirements:\n- ambiguous_relation: two\n- ambiguous_relation: three\ntwo:\ntype: two\nmanaged: false\nthree:\ntype: three\nmanaged: false\n
"},{"location":"variability4tosca/tests/test-relationships-ambigous-throw/#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-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\nrequired_technology_check: 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-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":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/","title":"variability-inputs-requires-throw-falsy","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/#variable-service-template","title":"Variable 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\nrequires: second\nsecond:\ntype: boolean\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-falsy/#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-requires-throw-truthy/","title":"variability-inputs-requires-throw-truthy","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-truthy/#variable-service-template","title":"Variable 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: 'yes'\nrequires: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw-truthy/#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-requires-throw/","title":"variability-inputs-requires-throw","text":""},{"location":"variability4tosca/tests/test-variability-inputs-requires-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:\ninputs:\nfirst:\ntype: boolean\ndefault: true\nrequires: second\nsecond:\ntype: boolean\ndefault: false\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires-throw/#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-requires/","title":"variability-inputs-requires","text":""},{"location":"variability4tosca/tests/test-variability-inputs-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:\nfirst:\ntype: boolean\ndefault: true\nrequires: second\nsecond:\ntype: boolean\ndefault: true\n
"},{"location":"variability4tosca/tests/test-variability-inputs-requires/#variability-resolved-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 diff --git a/variability4tosca/specification/index.html b/variability4tosca/specification/index.html index 0343313a6..932042334 100644 --- a/variability4tosca/specification/index.html +++ b/variability4tosca/specification/index.html @@ -9996,8 +9996,7 @@

RC v3& 16 17 18 -19 -20
mode: semantic-loose
+19
mode: semantic-loose
 node_default_condition_mode: incomingnaive-artifact-host
 optimization_topology: min
 optimization_topology_unique: true
@@ -10011,12 +10010,11 @@ 

RC v3& unique_input_constraint: true unique_output_constraint: true unique_relation_constraint: true -required_artifact_constraint: true -relation_default_implied: true -checks: false -enrich_technologies: true -enrich_implementations: true -artifact_default_condition_mode: container-managed +relation_default_implied: true +checks: false +enrich_technologies: true +enrich_implementations: true +artifact_default_condition_mode: container-managed

Default Conditions

There are element-generic default conditions and type-specific default conditions.