From f917a99d241222b1749876cfb5a8bf21c3f97dc1 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Sat, 8 May 2021 12:25:37 +0200 Subject: [PATCH 1/6] Initial commit --- LICENSE | 25 +++++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..178aba7d --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2021, TrueCharts +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..ac2e610d --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# catalog_template +Use this to start your own Basic Catalog From 49af4fc0f880a69c2698c8aebd2b8f3c4b3ff428 Mon Sep 17 00:00:00 2001 From: kjeld Schouten-Lebbing Date: Sat, 8 May 2021 12:31:47 +0200 Subject: [PATCH 2/6] initial push to catalog template --- .gitignore | 47 ++ .helmdocsignore | 0 README.md | 9 +- charts/syncthing/3.1.5/CONFIG.md | 8 + charts/syncthing/3.1.5/Chart.lock | 6 + charts/syncthing/3.1.5/Chart.yaml | 30 + charts/syncthing/3.1.5/README.md | 55 ++ charts/syncthing/3.1.5/app-readme.md | 3 + .../syncthing/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes charts/syncthing/3.1.5/ix_values.yaml | 15 + charts/syncthing/3.1.5/questions.yaml | 418 ++++++++++++ charts/syncthing/3.1.5/templates/common.yaml | 1 + charts/syncthing/3.1.5/test_values.yaml | 23 + charts/syncthing/3.1.5/values.yaml | 0 charts/syncthing/item.yaml | 3 + features_capability.json | 42 ++ stable/jackett/3.1.5/CONFIG.md | 8 + stable/jackett/3.1.5/Chart.lock | 6 + stable/jackett/3.1.5/Chart.yaml | 33 + stable/jackett/3.1.5/README.md | 56 ++ stable/jackett/3.1.5/app-readme.md | 3 + stable/jackett/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes stable/jackett/3.1.5/ix_values.yaml | 15 + stable/jackett/3.1.5/questions.yaml | 434 ++++++++++++ stable/jackett/3.1.5/templates/common.yaml | 1 + stable/jackett/3.1.5/test_values.yaml | 46 ++ stable/jackett/3.1.5/values.yaml | 0 stable/jackett/item.yaml | 3 + test/appdaemon/0.1.3/CONFIG.md | 8 + test/appdaemon/0.1.3/Chart.lock | 6 + test/appdaemon/0.1.3/Chart.yaml | 26 + test/appdaemon/0.1.3/README.md | 53 ++ test/appdaemon/0.1.3/app-readme.md | 3 + test/appdaemon/0.1.3/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/appdaemon/0.1.3/ix_values.yaml | 16 + test/appdaemon/0.1.3/questions.yaml | 431 ++++++++++++ test/appdaemon/0.1.3/templates/common.yaml | 1 + test/appdaemon/0.1.3/test_values.yaml | 40 ++ test/appdaemon/0.1.3/values.yaml | 0 test/appdaemon/item.yaml | 3 + test/bazarr/3.1.5/CONFIG.md | 8 + test/bazarr/3.1.5/Chart.lock | 6 + test/bazarr/3.1.5/Chart.yaml | 36 + test/bazarr/3.1.5/README.md | 56 ++ test/bazarr/3.1.5/app-readme.md | 3 + test/bazarr/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/bazarr/3.1.5/ix_values.yaml | 15 + test/bazarr/3.1.5/questions.yaml | 436 ++++++++++++ test/bazarr/3.1.5/templates/common.yaml | 1 + test/bazarr/3.1.5/test_values.yaml | 28 + test/bazarr/3.1.5/values.yaml | 0 test/bazarr/item.yaml | 3 + test/calibre-web/3.1.5/CONFIG.md | 8 + test/calibre-web/3.1.5/Chart.lock | 6 + test/calibre-web/3.1.5/Chart.yaml | 30 + test/calibre-web/3.1.5/README.md | 56 ++ test/calibre-web/3.1.5/app-readme.md | 3 + .../calibre-web/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/calibre-web/3.1.5/ix_values.yaml | 16 + test/calibre-web/3.1.5/questions.yaml | 449 +++++++++++++ test/calibre-web/3.1.5/templates/common.yaml | 1 + test/calibre-web/3.1.5/test_values.yaml | 37 + test/calibre-web/3.1.5/values.yaml | 0 test/calibre-web/item.yaml | 3 + test/deluge/3.1.5/CONFIG.md | 8 + test/deluge/3.1.5/Chart.lock | 6 + test/deluge/3.1.5/Chart.yaml | 28 + test/deluge/3.1.5/README.md | 54 ++ test/deluge/3.1.5/app-readme.md | 3 + test/deluge/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/deluge/3.1.5/ix_values.yaml | 16 + test/deluge/3.1.5/questions.yaml | 571 ++++++++++++++++ test/deluge/3.1.5/templates/common.yaml | 1 + test/deluge/3.1.5/test_values.yaml | 44 ++ test/deluge/3.1.5/values.yaml | 0 test/deluge/item.yaml | 3 + test/fireflyiii/1.0.1/CONFIG.md | 8 + test/fireflyiii/1.0.1/Chart.lock | 9 + test/fireflyiii/1.0.1/Chart.yaml | 30 + test/fireflyiii/1.0.1/README.md | 54 ++ test/fireflyiii/1.0.1/app-readme.md | 3 + test/fireflyiii/1.0.1/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes .../1.0.1/charts/postgresql-10.4.2.tgz | Bin 0 -> 48566 bytes test/fireflyiii/1.0.1/ix_values.yaml | 41 ++ test/fireflyiii/1.0.1/questions.yaml | 562 ++++++++++++++++ test/fireflyiii/1.0.1/templates/common.yaml | 5 + test/fireflyiii/1.0.1/templates/secrets.yaml | 21 + test/fireflyiii/1.0.1/test_values.yaml | 78 +++ test/fireflyiii/1.0.1/values.yaml | 0 test/fireflyiii/item.yaml | 3 + test/freshrss/3.1.5/CONFIG.md | 8 + test/freshrss/3.1.5/Chart.lock | 6 + test/freshrss/3.1.5/Chart.yaml | 29 + test/freshrss/3.1.5/README.md | 56 ++ test/freshrss/3.1.5/app-readme.md | 3 + test/freshrss/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/freshrss/3.1.5/ix_values.yaml | 16 + test/freshrss/3.1.5/questions.yaml | 451 +++++++++++++ test/freshrss/3.1.5/templates/common.yaml | 1 + test/freshrss/3.1.5/test_values.yaml | 35 + test/freshrss/3.1.5/values.yaml | 0 test/freshrss/item.yaml | 3 + test/gaps/3.1.5/CONFIG.md | 8 + test/gaps/3.1.5/Chart.lock | 6 + test/gaps/3.1.5/Chart.yaml | 29 + test/gaps/3.1.5/README.md | 55 ++ test/gaps/3.1.5/app-readme.md | 3 + test/gaps/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/gaps/3.1.5/ix_values.yaml | 15 + test/gaps/3.1.5/questions.yaml | 437 ++++++++++++ test/gaps/3.1.5/templates/common.yaml | 1 + test/gaps/3.1.5/test_values.yaml | 26 + test/gaps/3.1.5/values.yaml | 0 test/gaps/item.yaml | 3 + test/grocy/3.1.5/CONFIG.md | 8 + test/grocy/3.1.5/Chart.lock | 6 + test/grocy/3.1.5/Chart.yaml | 27 + test/grocy/3.1.5/README.md | 55 ++ test/grocy/3.1.5/app-readme.md | 3 + test/grocy/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/grocy/3.1.5/ix_values.yaml | 16 + test/grocy/3.1.5/questions.yaml | 449 +++++++++++++ test/grocy/3.1.5/templates/common.yaml | 1 + test/grocy/3.1.5/test_values.yaml | 35 + test/grocy/3.1.5/values.yaml | 0 test/grocy/item.yaml | 3 + test/heimdall/3.1.5/CONFIG.md | 8 + test/heimdall/3.1.5/Chart.lock | 6 + test/heimdall/3.1.5/Chart.yaml | 26 + test/heimdall/3.1.5/README.md | 54 ++ test/heimdall/3.1.5/app-readme.md | 3 + test/heimdall/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/heimdall/3.1.5/ix_values.yaml | 16 + test/heimdall/3.1.5/questions.yaml | 450 +++++++++++++ test/heimdall/3.1.5/templates/common.yaml | 1 + test/heimdall/3.1.5/test_values.yaml | 39 ++ test/heimdall/3.1.5/values.yaml | 0 test/heimdall/item.yaml | 3 + test/lazylibrarian/3.1.5/CONFIG.md | 8 + test/lazylibrarian/3.1.5/Chart.lock | 6 + test/lazylibrarian/3.1.5/Chart.yaml | 32 + test/lazylibrarian/3.1.5/README.md | 56 ++ test/lazylibrarian/3.1.5/app-readme.md | 3 + .../3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/lazylibrarian/3.1.5/ix_values.yaml | 16 + test/lazylibrarian/3.1.5/questions.yaml | 451 +++++++++++++ .../lazylibrarian/3.1.5/templates/common.yaml | 1 + test/lazylibrarian/3.1.5/test_values.yaml | 35 + test/lazylibrarian/3.1.5/values.yaml | 0 test/lazylibrarian/item.yaml | 3 + test/lychee/3.1.5/CONFIG.md | 8 + test/lychee/3.1.5/Chart.lock | 6 + test/lychee/3.1.5/Chart.yaml | 30 + test/lychee/3.1.5/README.md | 56 ++ test/lychee/3.1.5/app-readme.md | 3 + test/lychee/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/lychee/3.1.5/ix_values.yaml | 16 + test/lychee/3.1.5/questions.yaml | 450 +++++++++++++ test/lychee/3.1.5/templates/common.yaml | 1 + test/lychee/3.1.5/test_values.yaml | 35 + test/lychee/3.1.5/values.yaml | 0 test/lychee/item.yaml | 3 + test/navidrome/3.1.5/CONFIG.md | 8 + test/navidrome/3.1.5/Chart.lock | 6 + test/navidrome/3.1.5/Chart.yaml | 30 + test/navidrome/3.1.5/README.md | 56 ++ test/navidrome/3.1.5/app-readme.md | 3 + test/navidrome/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/navidrome/3.1.5/ix_values.yaml | 15 + test/navidrome/3.1.5/questions.yaml | 436 ++++++++++++ test/navidrome/3.1.5/templates/common.yaml | 1 + test/navidrome/3.1.5/test_values.yaml | 30 + test/navidrome/3.1.5/values.yaml | 0 test/navidrome/item.yaml | 3 + test/node-red/3.1.5/CONFIG.md | 8 + test/node-red/3.1.5/Chart.lock | 6 + test/node-red/3.1.5/Chart.yaml | 28 + test/node-red/3.1.5/README.md | 55 ++ test/node-red/3.1.5/app-readme.md | 3 + test/node-red/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/node-red/3.1.5/ix_values.yaml | 15 + test/node-red/3.1.5/questions.yaml | 436 ++++++++++++ test/node-red/3.1.5/templates/common.yaml | 1 + test/node-red/3.1.5/test_values.yaml | 32 + test/node-red/3.1.5/values.yaml | 0 test/node-red/item.yaml | 3 + test/nzbget/3.1.5/CONFIG.md | 8 + test/nzbget/3.1.5/Chart.lock | 6 + test/nzbget/3.1.5/Chart.yaml | 29 + test/nzbget/3.1.5/README.md | 56 ++ test/nzbget/3.1.5/app-readme.md | 3 + test/nzbget/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/nzbget/3.1.5/ix_values.yaml | 15 + test/nzbget/3.1.5/questions.yaml | 436 ++++++++++++ test/nzbget/3.1.5/templates/common.yaml | 1 + test/nzbget/3.1.5/test_values.yaml | 23 + test/nzbget/3.1.5/values.yaml | 0 test/nzbget/item.yaml | 3 + test/nzbhydra/3.1.5/CONFIG.md | 8 + test/nzbhydra/3.1.5/Chart.lock | 6 + test/nzbhydra/3.1.5/Chart.yaml | 29 + test/nzbhydra/3.1.5/README.md | 56 ++ test/nzbhydra/3.1.5/app-readme.md | 3 + test/nzbhydra/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/nzbhydra/3.1.5/ix_values.yaml | 51 ++ test/nzbhydra/3.1.5/questions.yaml | 436 ++++++++++++ test/nzbhydra/3.1.5/templates/common.yaml | 1 + test/nzbhydra/3.1.5/test_values.yaml | 64 ++ test/nzbhydra/3.1.5/values.yaml | 0 test/nzbhydra/item.yaml | 3 + test/organizr/3.1.5/CONFIG.md | 8 + test/organizr/3.1.5/Chart.lock | 6 + test/organizr/3.1.5/Chart.yaml | 28 + test/organizr/3.1.5/README.md | 56 ++ test/organizr/3.1.5/app-readme.md | 3 + test/organizr/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/organizr/3.1.5/ix_values.yaml | 16 + test/organizr/3.1.5/questions.yaml | 502 ++++++++++++++ test/organizr/3.1.5/templates/common.yaml | 1 + test/organizr/3.1.5/test_values.yaml | 35 + test/organizr/3.1.5/values.yaml | 0 test/organizr/item.yaml | 3 + test/podgrab/1.0.3/CONFIG.md | 8 + test/podgrab/1.0.3/Chart.lock | 6 + test/podgrab/1.0.3/Chart.yaml | 27 + test/podgrab/1.0.3/README.md | 54 ++ test/podgrab/1.0.3/app-readme.md | 3 + test/podgrab/1.0.3/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/podgrab/1.0.3/ix_values.yaml | 16 + test/podgrab/1.0.3/questions.yaml | 454 +++++++++++++ test/podgrab/1.0.3/templates/common.yaml | 1 + test/podgrab/1.0.3/test_values.yaml | 47 ++ test/podgrab/1.0.3/values.yaml | 0 test/podgrab/item.yaml | 3 + test/qbittorrent/3.1.5/CONFIG.md | 8 + test/qbittorrent/3.1.5/Chart.lock | 6 + test/qbittorrent/3.1.5/Chart.yaml | 28 + test/qbittorrent/3.1.5/README.md | 55 ++ test/qbittorrent/3.1.5/app-readme.md | 3 + .../qbittorrent/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/qbittorrent/3.1.5/ix_values.yaml | 15 + test/qbittorrent/3.1.5/questions.yaml | 563 ++++++++++++++++ test/qbittorrent/3.1.5/templates/common.yaml | 1 + .../3.1.5/templates/configmap.yaml | 45 ++ test/qbittorrent/3.1.5/test_values.yaml | 60 ++ test/qbittorrent/3.1.5/values.yaml | 0 test/qbittorrent/item.yaml | 3 + test/readarr/3.1.5/CONFIG.md | 8 + test/readarr/3.1.5/Chart.lock | 6 + test/readarr/3.1.5/Chart.yaml | 35 + test/readarr/3.1.5/README.md | 56 ++ test/readarr/3.1.5/app-readme.md | 3 + test/readarr/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/readarr/3.1.5/ix_values.yaml | 37 + test/readarr/3.1.5/questions.yaml | 436 ++++++++++++ test/readarr/3.1.5/templates/common.yaml | 1 + test/readarr/3.1.5/test_values.yaml | 49 ++ test/readarr/3.1.5/values.yaml | 0 test/readarr/item.yaml | 3 + test/sabnzbd/3.1.5/CONFIG.md | 8 + test/sabnzbd/3.1.5/Chart.lock | 6 + test/sabnzbd/3.1.5/Chart.yaml | 29 + test/sabnzbd/3.1.5/README.md | 56 ++ test/sabnzbd/3.1.5/app-readme.md | 3 + test/sabnzbd/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/sabnzbd/3.1.5/ix_values.yaml | 15 + test/sabnzbd/3.1.5/questions.yaml | 452 +++++++++++++ test/sabnzbd/3.1.5/templates/common.yaml | 1 + test/sabnzbd/3.1.5/test_values.yaml | 28 + test/sabnzbd/3.1.5/values.yaml | 0 test/sabnzbd/item.yaml | 3 + test/truecommand/3.1.5/CONFIG.md | 8 + test/truecommand/3.1.5/Chart.lock | 6 + test/truecommand/3.1.5/Chart.yaml | 29 + test/truecommand/3.1.5/README.md | 54 ++ test/truecommand/3.1.5/app-readme.md | 3 + .../truecommand/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/truecommand/3.1.5/ix_values.yaml | 15 + test/truecommand/3.1.5/questions.yaml | 453 +++++++++++++ test/truecommand/3.1.5/templates/common.yaml | 1 + test/truecommand/3.1.5/test_values.yaml | 35 + test/truecommand/3.1.5/values.yaml | 0 test/truecommand/item.yaml | 3 + test/tvheadend/4.1.5/CONFIG.md | 8 + test/tvheadend/4.1.5/Chart.lock | 6 + test/tvheadend/4.1.5/Chart.yaml | 30 + test/tvheadend/4.1.5/README.md | 55 ++ test/tvheadend/4.1.5/app-readme.md | 3 + test/tvheadend/4.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/tvheadend/4.1.5/ix_values.yaml | 15 + test/tvheadend/4.1.5/questions.yaml | 492 ++++++++++++++ test/tvheadend/4.1.5/templates/common.yaml | 1 + test/tvheadend/4.1.5/test_values.yaml | 44 ++ test/tvheadend/4.1.5/values.yaml | 0 test/tvheadend/item.yaml | 3 + test/unifi/3.1.5/CONFIG.md | 8 + test/unifi/3.1.5/Chart.lock | 6 + test/unifi/3.1.5/Chart.yaml | 28 + test/unifi/3.1.5/README.md | 55 ++ test/unifi/3.1.5/app-readme.md | 3 + test/unifi/3.1.5/charts/common-3.5.5.tgz | Bin 0 -> 16414 bytes test/unifi/3.1.5/ix_values.yaml | 21 + test/unifi/3.1.5/questions.yaml | 635 ++++++++++++++++++ test/unifi/3.1.5/templates/common.yaml | 1 + test/unifi/3.1.5/test_values.yaml | 54 ++ test/unifi/3.1.5/values.yaml | 0 test/unifi/item.yaml | 3 + 307 files changed, 16008 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .helmdocsignore create mode 100644 charts/syncthing/3.1.5/CONFIG.md create mode 100644 charts/syncthing/3.1.5/Chart.lock create mode 100644 charts/syncthing/3.1.5/Chart.yaml create mode 100644 charts/syncthing/3.1.5/README.md create mode 100644 charts/syncthing/3.1.5/app-readme.md create mode 100644 charts/syncthing/3.1.5/charts/common-3.5.5.tgz create mode 100644 charts/syncthing/3.1.5/ix_values.yaml create mode 100644 charts/syncthing/3.1.5/questions.yaml create mode 100644 charts/syncthing/3.1.5/templates/common.yaml create mode 100644 charts/syncthing/3.1.5/test_values.yaml create mode 100644 charts/syncthing/3.1.5/values.yaml create mode 100644 charts/syncthing/item.yaml create mode 100644 features_capability.json create mode 100644 stable/jackett/3.1.5/CONFIG.md create mode 100644 stable/jackett/3.1.5/Chart.lock create mode 100644 stable/jackett/3.1.5/Chart.yaml create mode 100644 stable/jackett/3.1.5/README.md create mode 100644 stable/jackett/3.1.5/app-readme.md create mode 100644 stable/jackett/3.1.5/charts/common-3.5.5.tgz create mode 100644 stable/jackett/3.1.5/ix_values.yaml create mode 100644 stable/jackett/3.1.5/questions.yaml create mode 100644 stable/jackett/3.1.5/templates/common.yaml create mode 100644 stable/jackett/3.1.5/test_values.yaml create mode 100644 stable/jackett/3.1.5/values.yaml create mode 100644 stable/jackett/item.yaml create mode 100644 test/appdaemon/0.1.3/CONFIG.md create mode 100644 test/appdaemon/0.1.3/Chart.lock create mode 100644 test/appdaemon/0.1.3/Chart.yaml create mode 100644 test/appdaemon/0.1.3/README.md create mode 100644 test/appdaemon/0.1.3/app-readme.md create mode 100644 test/appdaemon/0.1.3/charts/common-3.5.5.tgz create mode 100644 test/appdaemon/0.1.3/ix_values.yaml create mode 100644 test/appdaemon/0.1.3/questions.yaml create mode 100644 test/appdaemon/0.1.3/templates/common.yaml create mode 100644 test/appdaemon/0.1.3/test_values.yaml create mode 100644 test/appdaemon/0.1.3/values.yaml create mode 100644 test/appdaemon/item.yaml create mode 100644 test/bazarr/3.1.5/CONFIG.md create mode 100644 test/bazarr/3.1.5/Chart.lock create mode 100644 test/bazarr/3.1.5/Chart.yaml create mode 100644 test/bazarr/3.1.5/README.md create mode 100644 test/bazarr/3.1.5/app-readme.md create mode 100644 test/bazarr/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/bazarr/3.1.5/ix_values.yaml create mode 100644 test/bazarr/3.1.5/questions.yaml create mode 100644 test/bazarr/3.1.5/templates/common.yaml create mode 100644 test/bazarr/3.1.5/test_values.yaml create mode 100644 test/bazarr/3.1.5/values.yaml create mode 100644 test/bazarr/item.yaml create mode 100644 test/calibre-web/3.1.5/CONFIG.md create mode 100644 test/calibre-web/3.1.5/Chart.lock create mode 100644 test/calibre-web/3.1.5/Chart.yaml create mode 100644 test/calibre-web/3.1.5/README.md create mode 100644 test/calibre-web/3.1.5/app-readme.md create mode 100644 test/calibre-web/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/calibre-web/3.1.5/ix_values.yaml create mode 100644 test/calibre-web/3.1.5/questions.yaml create mode 100644 test/calibre-web/3.1.5/templates/common.yaml create mode 100644 test/calibre-web/3.1.5/test_values.yaml create mode 100644 test/calibre-web/3.1.5/values.yaml create mode 100644 test/calibre-web/item.yaml create mode 100644 test/deluge/3.1.5/CONFIG.md create mode 100644 test/deluge/3.1.5/Chart.lock create mode 100644 test/deluge/3.1.5/Chart.yaml create mode 100644 test/deluge/3.1.5/README.md create mode 100644 test/deluge/3.1.5/app-readme.md create mode 100644 test/deluge/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/deluge/3.1.5/ix_values.yaml create mode 100644 test/deluge/3.1.5/questions.yaml create mode 100644 test/deluge/3.1.5/templates/common.yaml create mode 100644 test/deluge/3.1.5/test_values.yaml create mode 100644 test/deluge/3.1.5/values.yaml create mode 100644 test/deluge/item.yaml create mode 100644 test/fireflyiii/1.0.1/CONFIG.md create mode 100644 test/fireflyiii/1.0.1/Chart.lock create mode 100644 test/fireflyiii/1.0.1/Chart.yaml create mode 100644 test/fireflyiii/1.0.1/README.md create mode 100644 test/fireflyiii/1.0.1/app-readme.md create mode 100644 test/fireflyiii/1.0.1/charts/common-3.5.5.tgz create mode 100644 test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz create mode 100644 test/fireflyiii/1.0.1/ix_values.yaml create mode 100644 test/fireflyiii/1.0.1/questions.yaml create mode 100644 test/fireflyiii/1.0.1/templates/common.yaml create mode 100644 test/fireflyiii/1.0.1/templates/secrets.yaml create mode 100644 test/fireflyiii/1.0.1/test_values.yaml create mode 100644 test/fireflyiii/1.0.1/values.yaml create mode 100644 test/fireflyiii/item.yaml create mode 100644 test/freshrss/3.1.5/CONFIG.md create mode 100644 test/freshrss/3.1.5/Chart.lock create mode 100644 test/freshrss/3.1.5/Chart.yaml create mode 100644 test/freshrss/3.1.5/README.md create mode 100644 test/freshrss/3.1.5/app-readme.md create mode 100644 test/freshrss/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/freshrss/3.1.5/ix_values.yaml create mode 100644 test/freshrss/3.1.5/questions.yaml create mode 100644 test/freshrss/3.1.5/templates/common.yaml create mode 100644 test/freshrss/3.1.5/test_values.yaml create mode 100644 test/freshrss/3.1.5/values.yaml create mode 100644 test/freshrss/item.yaml create mode 100644 test/gaps/3.1.5/CONFIG.md create mode 100644 test/gaps/3.1.5/Chart.lock create mode 100644 test/gaps/3.1.5/Chart.yaml create mode 100644 test/gaps/3.1.5/README.md create mode 100644 test/gaps/3.1.5/app-readme.md create mode 100644 test/gaps/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/gaps/3.1.5/ix_values.yaml create mode 100644 test/gaps/3.1.5/questions.yaml create mode 100644 test/gaps/3.1.5/templates/common.yaml create mode 100644 test/gaps/3.1.5/test_values.yaml create mode 100644 test/gaps/3.1.5/values.yaml create mode 100644 test/gaps/item.yaml create mode 100644 test/grocy/3.1.5/CONFIG.md create mode 100644 test/grocy/3.1.5/Chart.lock create mode 100644 test/grocy/3.1.5/Chart.yaml create mode 100644 test/grocy/3.1.5/README.md create mode 100644 test/grocy/3.1.5/app-readme.md create mode 100644 test/grocy/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/grocy/3.1.5/ix_values.yaml create mode 100644 test/grocy/3.1.5/questions.yaml create mode 100644 test/grocy/3.1.5/templates/common.yaml create mode 100644 test/grocy/3.1.5/test_values.yaml create mode 100644 test/grocy/3.1.5/values.yaml create mode 100644 test/grocy/item.yaml create mode 100644 test/heimdall/3.1.5/CONFIG.md create mode 100644 test/heimdall/3.1.5/Chart.lock create mode 100644 test/heimdall/3.1.5/Chart.yaml create mode 100644 test/heimdall/3.1.5/README.md create mode 100644 test/heimdall/3.1.5/app-readme.md create mode 100644 test/heimdall/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/heimdall/3.1.5/ix_values.yaml create mode 100644 test/heimdall/3.1.5/questions.yaml create mode 100644 test/heimdall/3.1.5/templates/common.yaml create mode 100644 test/heimdall/3.1.5/test_values.yaml create mode 100644 test/heimdall/3.1.5/values.yaml create mode 100644 test/heimdall/item.yaml create mode 100644 test/lazylibrarian/3.1.5/CONFIG.md create mode 100644 test/lazylibrarian/3.1.5/Chart.lock create mode 100644 test/lazylibrarian/3.1.5/Chart.yaml create mode 100644 test/lazylibrarian/3.1.5/README.md create mode 100644 test/lazylibrarian/3.1.5/app-readme.md create mode 100644 test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/lazylibrarian/3.1.5/ix_values.yaml create mode 100644 test/lazylibrarian/3.1.5/questions.yaml create mode 100644 test/lazylibrarian/3.1.5/templates/common.yaml create mode 100644 test/lazylibrarian/3.1.5/test_values.yaml create mode 100644 test/lazylibrarian/3.1.5/values.yaml create mode 100644 test/lazylibrarian/item.yaml create mode 100644 test/lychee/3.1.5/CONFIG.md create mode 100644 test/lychee/3.1.5/Chart.lock create mode 100644 test/lychee/3.1.5/Chart.yaml create mode 100644 test/lychee/3.1.5/README.md create mode 100644 test/lychee/3.1.5/app-readme.md create mode 100644 test/lychee/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/lychee/3.1.5/ix_values.yaml create mode 100644 test/lychee/3.1.5/questions.yaml create mode 100644 test/lychee/3.1.5/templates/common.yaml create mode 100644 test/lychee/3.1.5/test_values.yaml create mode 100644 test/lychee/3.1.5/values.yaml create mode 100644 test/lychee/item.yaml create mode 100644 test/navidrome/3.1.5/CONFIG.md create mode 100644 test/navidrome/3.1.5/Chart.lock create mode 100644 test/navidrome/3.1.5/Chart.yaml create mode 100644 test/navidrome/3.1.5/README.md create mode 100644 test/navidrome/3.1.5/app-readme.md create mode 100644 test/navidrome/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/navidrome/3.1.5/ix_values.yaml create mode 100644 test/navidrome/3.1.5/questions.yaml create mode 100644 test/navidrome/3.1.5/templates/common.yaml create mode 100644 test/navidrome/3.1.5/test_values.yaml create mode 100644 test/navidrome/3.1.5/values.yaml create mode 100644 test/navidrome/item.yaml create mode 100644 test/node-red/3.1.5/CONFIG.md create mode 100644 test/node-red/3.1.5/Chart.lock create mode 100644 test/node-red/3.1.5/Chart.yaml create mode 100644 test/node-red/3.1.5/README.md create mode 100644 test/node-red/3.1.5/app-readme.md create mode 100644 test/node-red/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/node-red/3.1.5/ix_values.yaml create mode 100644 test/node-red/3.1.5/questions.yaml create mode 100644 test/node-red/3.1.5/templates/common.yaml create mode 100644 test/node-red/3.1.5/test_values.yaml create mode 100644 test/node-red/3.1.5/values.yaml create mode 100644 test/node-red/item.yaml create mode 100644 test/nzbget/3.1.5/CONFIG.md create mode 100644 test/nzbget/3.1.5/Chart.lock create mode 100644 test/nzbget/3.1.5/Chart.yaml create mode 100644 test/nzbget/3.1.5/README.md create mode 100644 test/nzbget/3.1.5/app-readme.md create mode 100644 test/nzbget/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/nzbget/3.1.5/ix_values.yaml create mode 100644 test/nzbget/3.1.5/questions.yaml create mode 100644 test/nzbget/3.1.5/templates/common.yaml create mode 100644 test/nzbget/3.1.5/test_values.yaml create mode 100644 test/nzbget/3.1.5/values.yaml create mode 100644 test/nzbget/item.yaml create mode 100644 test/nzbhydra/3.1.5/CONFIG.md create mode 100644 test/nzbhydra/3.1.5/Chart.lock create mode 100644 test/nzbhydra/3.1.5/Chart.yaml create mode 100644 test/nzbhydra/3.1.5/README.md create mode 100644 test/nzbhydra/3.1.5/app-readme.md create mode 100644 test/nzbhydra/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/nzbhydra/3.1.5/ix_values.yaml create mode 100644 test/nzbhydra/3.1.5/questions.yaml create mode 100644 test/nzbhydra/3.1.5/templates/common.yaml create mode 100644 test/nzbhydra/3.1.5/test_values.yaml create mode 100644 test/nzbhydra/3.1.5/values.yaml create mode 100644 test/nzbhydra/item.yaml create mode 100644 test/organizr/3.1.5/CONFIG.md create mode 100644 test/organizr/3.1.5/Chart.lock create mode 100644 test/organizr/3.1.5/Chart.yaml create mode 100644 test/organizr/3.1.5/README.md create mode 100644 test/organizr/3.1.5/app-readme.md create mode 100644 test/organizr/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/organizr/3.1.5/ix_values.yaml create mode 100644 test/organizr/3.1.5/questions.yaml create mode 100644 test/organizr/3.1.5/templates/common.yaml create mode 100644 test/organizr/3.1.5/test_values.yaml create mode 100644 test/organizr/3.1.5/values.yaml create mode 100644 test/organizr/item.yaml create mode 100644 test/podgrab/1.0.3/CONFIG.md create mode 100644 test/podgrab/1.0.3/Chart.lock create mode 100644 test/podgrab/1.0.3/Chart.yaml create mode 100644 test/podgrab/1.0.3/README.md create mode 100644 test/podgrab/1.0.3/app-readme.md create mode 100644 test/podgrab/1.0.3/charts/common-3.5.5.tgz create mode 100644 test/podgrab/1.0.3/ix_values.yaml create mode 100644 test/podgrab/1.0.3/questions.yaml create mode 100644 test/podgrab/1.0.3/templates/common.yaml create mode 100644 test/podgrab/1.0.3/test_values.yaml create mode 100644 test/podgrab/1.0.3/values.yaml create mode 100644 test/podgrab/item.yaml create mode 100644 test/qbittorrent/3.1.5/CONFIG.md create mode 100644 test/qbittorrent/3.1.5/Chart.lock create mode 100644 test/qbittorrent/3.1.5/Chart.yaml create mode 100644 test/qbittorrent/3.1.5/README.md create mode 100644 test/qbittorrent/3.1.5/app-readme.md create mode 100644 test/qbittorrent/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/qbittorrent/3.1.5/ix_values.yaml create mode 100644 test/qbittorrent/3.1.5/questions.yaml create mode 100644 test/qbittorrent/3.1.5/templates/common.yaml create mode 100644 test/qbittorrent/3.1.5/templates/configmap.yaml create mode 100644 test/qbittorrent/3.1.5/test_values.yaml create mode 100644 test/qbittorrent/3.1.5/values.yaml create mode 100644 test/qbittorrent/item.yaml create mode 100644 test/readarr/3.1.5/CONFIG.md create mode 100644 test/readarr/3.1.5/Chart.lock create mode 100644 test/readarr/3.1.5/Chart.yaml create mode 100644 test/readarr/3.1.5/README.md create mode 100644 test/readarr/3.1.5/app-readme.md create mode 100644 test/readarr/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/readarr/3.1.5/ix_values.yaml create mode 100644 test/readarr/3.1.5/questions.yaml create mode 100644 test/readarr/3.1.5/templates/common.yaml create mode 100644 test/readarr/3.1.5/test_values.yaml create mode 100644 test/readarr/3.1.5/values.yaml create mode 100644 test/readarr/item.yaml create mode 100644 test/sabnzbd/3.1.5/CONFIG.md create mode 100644 test/sabnzbd/3.1.5/Chart.lock create mode 100644 test/sabnzbd/3.1.5/Chart.yaml create mode 100644 test/sabnzbd/3.1.5/README.md create mode 100644 test/sabnzbd/3.1.5/app-readme.md create mode 100644 test/sabnzbd/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/sabnzbd/3.1.5/ix_values.yaml create mode 100644 test/sabnzbd/3.1.5/questions.yaml create mode 100644 test/sabnzbd/3.1.5/templates/common.yaml create mode 100644 test/sabnzbd/3.1.5/test_values.yaml create mode 100644 test/sabnzbd/3.1.5/values.yaml create mode 100644 test/sabnzbd/item.yaml create mode 100644 test/truecommand/3.1.5/CONFIG.md create mode 100644 test/truecommand/3.1.5/Chart.lock create mode 100644 test/truecommand/3.1.5/Chart.yaml create mode 100644 test/truecommand/3.1.5/README.md create mode 100644 test/truecommand/3.1.5/app-readme.md create mode 100644 test/truecommand/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/truecommand/3.1.5/ix_values.yaml create mode 100644 test/truecommand/3.1.5/questions.yaml create mode 100644 test/truecommand/3.1.5/templates/common.yaml create mode 100644 test/truecommand/3.1.5/test_values.yaml create mode 100644 test/truecommand/3.1.5/values.yaml create mode 100644 test/truecommand/item.yaml create mode 100644 test/tvheadend/4.1.5/CONFIG.md create mode 100644 test/tvheadend/4.1.5/Chart.lock create mode 100644 test/tvheadend/4.1.5/Chart.yaml create mode 100644 test/tvheadend/4.1.5/README.md create mode 100644 test/tvheadend/4.1.5/app-readme.md create mode 100644 test/tvheadend/4.1.5/charts/common-3.5.5.tgz create mode 100644 test/tvheadend/4.1.5/ix_values.yaml create mode 100644 test/tvheadend/4.1.5/questions.yaml create mode 100644 test/tvheadend/4.1.5/templates/common.yaml create mode 100644 test/tvheadend/4.1.5/test_values.yaml create mode 100644 test/tvheadend/4.1.5/values.yaml create mode 100644 test/tvheadend/item.yaml create mode 100644 test/unifi/3.1.5/CONFIG.md create mode 100644 test/unifi/3.1.5/Chart.lock create mode 100644 test/unifi/3.1.5/Chart.yaml create mode 100644 test/unifi/3.1.5/README.md create mode 100644 test/unifi/3.1.5/app-readme.md create mode 100644 test/unifi/3.1.5/charts/common-3.5.5.tgz create mode 100644 test/unifi/3.1.5/ix_values.yaml create mode 100644 test/unifi/3.1.5/questions.yaml create mode 100644 test/unifi/3.1.5/templates/common.yaml create mode 100644 test/unifi/3.1.5/test_values.yaml create mode 100644 test/unifi/3.1.5/values.yaml create mode 100644 test/unifi/item.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..cf607c2b --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +*.pyc +*.swp +*.mo +*.o +*.iso +__pycache__ +*.xml +*.pyc +.cache +.pytest_cache +config.py +auto_config.py +.DS_Store +.idea/ +.vscode/ +# IDE resources +.vscode +.idea +.devcontainer/ +Gemfile.lock +.ignore/ +/docs/api/_build/ +/docs/userguide/_build/ +/gui/local_settings.py +gui/static/ +/FreeBSD/ +/filtered-patches/ +/os-base/ +/pbi/ +/sbin/ +src/middlewared/build/ +src/middlewared/dist/ +src/middlewared/middlewared.egg-info/ +.git-repo-setting +nas_source/ +webui/node_modules/ +webui/dll/ +webui/dist/ +npm-debug.log +tests/artifacts/ +tests/test-report.txt +tests/test-report.xml +private_values.yaml +temp/ +library/common-test/charts/ +.cr-release-packages/ +library/common-test/chart.lock diff --git a/.helmdocsignore b/.helmdocsignore new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md index ac2e610d..52c27e1c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # catalog_template -Use this to start your own Basic Catalog +Use this to start your own Basic TrueNAS SCALE Catalog + +It contains: + +- Base folder structure +- Basic required files +- 3 example Trains (charts, stable and test) +- 1 example app in each train (each based on TrueCharts) \ No newline at end of file diff --git a/charts/syncthing/3.1.5/CONFIG.md b/charts/syncthing/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/charts/syncthing/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/charts/syncthing/3.1.5/Chart.lock b/charts/syncthing/3.1.5/Chart.lock new file mode 100644 index 00000000..21034bcf --- /dev/null +++ b/charts/syncthing/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:42.632316521Z" diff --git a/charts/syncthing/3.1.5/Chart.yaml b/charts/syncthing/3.1.5/Chart.yaml new file mode 100644 index 00000000..f6f7c3bf --- /dev/null +++ b/charts/syncthing/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: syncthing +version: 3.1.5 +# upstream_version: +appVersion: "auto" +description: P2P file synchronization application +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/stable/syncthing +icon: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png +keywords: + - syncthing +sources: + - https://syncthing.net/ + - https://github.com/syncthing/syncthing + - https://hub.docker.com/r/syncthing/syncthing +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: luuknieuwdorp + email: luuk@nieuwdorp.me + url: nieuwdorp.me +# annotations: diff --git a/charts/syncthing/3.1.5/README.md b/charts/syncthing/3.1.5/README.md new file mode 100644 index 00000000..fdc91d9c --- /dev/null +++ b/charts/syncthing/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +P2P file synchronization application + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `syncthing` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `syncthing` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/charts/syncthing/3.1.5/app-readme.md b/charts/syncthing/3.1.5/app-readme.md new file mode 100644 index 00000000..7eaa0780 --- /dev/null +++ b/charts/syncthing/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +P2P file synchronization application +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +P2P file synchronization application diff --git a/charts/syncthing/3.1.5/charts/common-3.5.5.tgz b/charts/syncthing/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/charts/syncthing/3.1.5/ix_values.yaml b/charts/syncthing/3.1.5/ix_values.yaml new file mode 100644 index 00000000..2c38d653 --- /dev/null +++ b/charts/syncthing/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: syncthing/syncthing + pullPolicy: IfNotPresent + tag: 1.16 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/charts/syncthing/3.1.5/questions.yaml b/charts/syncthing/3.1.5/questions.yaml new file mode 100644 index 00000000..9110b80d --- /dev/null +++ b/charts/syncthing/3.1.5/questions.yaml @@ -0,0 +1,418 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "Container port" + schema: + type: int + default: 8384 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8384 + editable: false + hidden: true + # - variable: nodePort + # label: "Host nodePort to expose to (optional)" + # description: "Only gets used when nodePort is selected" + # schema: + # type: int + # min: 9000 + # max: 65535 + # default: 36024 + # required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/var/syncthing" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/charts/syncthing/3.1.5/templates/common.yaml b/charts/syncthing/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/charts/syncthing/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/syncthing/3.1.5/test_values.yaml b/charts/syncthing/3.1.5/test_values.yaml new file mode 100644 index 00000000..b0677868 --- /dev/null +++ b/charts/syncthing/3.1.5/test_values.yaml @@ -0,0 +1,23 @@ +# Default values for Syncthing. + +image: + repository: syncthing/syncthing + pullPolicy: IfNotPresent + tag: 1.16 + +strategy: + type: Recreate + +services: + main: + port: + port: 8384 + +persistence: + config: + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + mountPath: "/var/syncthing/" diff --git a/charts/syncthing/3.1.5/values.yaml b/charts/syncthing/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/charts/syncthing/item.yaml b/charts/syncthing/item.yaml new file mode 100644 index 00000000..62634b42 --- /dev/null +++ b/charts/syncthing/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png diff --git a/features_capability.json b/features_capability.json new file mode 100644 index 00000000..14b386c7 --- /dev/null +++ b/features_capability.json @@ -0,0 +1,42 @@ +{ + "normalize/interfaceConfiguration": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "normalize/ixVolume": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/interface": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/gpuConfiguration": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/timezone": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.12-MASTER"} + }, + "definitions/nodeIP": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.12-MASTER"} + }, + "definitions/certificate": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.02-MASTER"} + }, + "definitions/certificateAuthority": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.02-MASTER"} + }, + "validations/containerImage": { + "stable": {"min": "21.06-BETA"}, + "nightlies": {"min": "21.04-MASTER"} + }, + "validations/nodePort": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.04-MASTER"} + } +} diff --git a/stable/jackett/3.1.5/CONFIG.md b/stable/jackett/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/stable/jackett/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/stable/jackett/3.1.5/Chart.lock b/stable/jackett/3.1.5/Chart.lock new file mode 100644 index 00000000..a225c6db --- /dev/null +++ b/stable/jackett/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:38.578257131Z" diff --git a/stable/jackett/3.1.5/Chart.yaml b/stable/jackett/3.1.5/Chart.yaml new file mode 100644 index 00000000..e29da188 --- /dev/null +++ b/stable/jackett/3.1.5/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: jackett +version: 3.1.5 +upstream_version: 7.0.1 +appVersion: "auto" +description: API Support for your favorite torrent trackers. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/stable/jackett +icon: https://truecharts.org/_static/img/jackett-icon.png +keywords: + - jackett + - torrent + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/stable/jackett + - https://github.com/k8s-at-home/charts/tree/master/charts/jackett + - https://github.com/Jackett/Jackett + - https://hub.docker.com/r/linuxserver/jackett +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/stable/jackett/3.1.5/README.md b/stable/jackett/3.1.5/README.md new file mode 100644 index 00000000..88c3c913 --- /dev/null +++ b/stable/jackett/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +API Support for your favorite torrent trackers. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `jackett` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `jackett` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/stable/jackett/3.1.5/app-readme.md b/stable/jackett/3.1.5/app-readme.md new file mode 100644 index 00000000..7e8f54af --- /dev/null +++ b/stable/jackett/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +API Support for your favorite torrent trackers. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +API Support for your favorite torrent trackers. diff --git a/stable/jackett/3.1.5/charts/common-3.5.5.tgz b/stable/jackett/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/stable/jackett/3.1.5/ix_values.yaml b/stable/jackett/3.1.5/ix_values.yaml new file mode 100644 index 00000000..99acca3a --- /dev/null +++ b/stable/jackett/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/jackett + pullPolicy: IfNotPresent + tag: v0.17.1011 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/stable/jackett/3.1.5/questions.yaml b/stable/jackett/3.1.5/questions.yaml new file mode 100644 index 00000000..6de48d7f --- /dev/null +++ b/stable/jackett/3.1.5/questions.yaml @@ -0,0 +1,434 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 9117 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9117 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36009 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/stable/jackett/3.1.5/templates/common.yaml b/stable/jackett/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/stable/jackett/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/stable/jackett/3.1.5/test_values.yaml b/stable/jackett/3.1.5/test_values.yaml new file mode 100644 index 00000000..77ee8243 --- /dev/null +++ b/stable/jackett/3.1.5/test_values.yaml @@ -0,0 +1,46 @@ +# Default values for Jackett. + +image: + repository: ghcr.io/truecharts/jackett + pullPolicy: IfNotPresent + tag: v0.17.1011 + +strategy: + type: Recreate + + +services: + main: + enabled: true + port: + port: 9117 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + + +## TrueCharts Values + +ingress: + main: + enabled: true + # Used when including ingress using {{ include "common.ingress" . }} + type: "HTTP" + entrypoint: "websecure" + certType: "" + annotations: {} + hosts: + - host: chart-example.local + path: / diff --git a/stable/jackett/3.1.5/values.yaml b/stable/jackett/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/stable/jackett/item.yaml b/stable/jackett/item.yaml new file mode 100644 index 00000000..8d747307 --- /dev/null +++ b/stable/jackett/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://truecharts.org/_static/img/jackett-icon.png diff --git a/test/appdaemon/0.1.3/CONFIG.md b/test/appdaemon/0.1.3/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/appdaemon/0.1.3/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/appdaemon/0.1.3/Chart.lock b/test/appdaemon/0.1.3/Chart.lock new file mode 100644 index 00000000..acfc21b3 --- /dev/null +++ b/test/appdaemon/0.1.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:46.438162658Z" diff --git a/test/appdaemon/0.1.3/Chart.yaml b/test/appdaemon/0.1.3/Chart.yaml new file mode 100644 index 00000000..b542ea4e --- /dev/null +++ b/test/appdaemon/0.1.3/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: appdaemon +version: 0.1.3 +appVersion: v4.0.8 +description: AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/appdaemon +icon: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/icon.png?raw=true +keywords: + - appdaemon + - homeautomation +sources: + - https://github.com/AppDaemon/appdaemon +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/test/appdaemon/0.1.3/README.md b/test/appdaemon/0.1.3/README.md new file mode 100644 index 00000000..ac652fbf --- /dev/null +++ b/test/appdaemon/0.1.3/README.md @@ -0,0 +1,53 @@ +# Introduction + +![Version: 0.1.3](https://img.shields.io/badge/Version-0.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v4.0.8](https://img.shields.io/badge/AppVersion-v4.0.8-informational?style=flat-square) + +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `appdaemon` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `appdaemon` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/appdaemon/0.1.3/app-readme.md b/test/appdaemon/0.1.3/app-readme.md new file mode 100644 index 00000000..b948120c --- /dev/null +++ b/test/appdaemon/0.1.3/app-readme.md @@ -0,0 +1,3 @@ +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. diff --git a/test/appdaemon/0.1.3/charts/common-3.5.5.tgz b/test/appdaemon/0.1.3/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/appdaemon/0.1.3/ix_values.yaml b/test/appdaemon/0.1.3/ix_values.yaml new file mode 100644 index 00000000..ef02d27c --- /dev/null +++ b/test/appdaemon/0.1.3/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: acockburn/appdaemon + pullPolicy: IfNotPresent + tag: "4.0.8" + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/appdaemon/0.1.3/questions.yaml b/test/appdaemon/0.1.3/questions.yaml new file mode 100644 index 00000000..eae94631 --- /dev/null +++ b/test/appdaemon/0.1.3/questions.yaml @@ -0,0 +1,431 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: HA_URL + label: "HA URL" + description: "Your HomeAssistant URL" + schema: + type: string + default: "" + required: true + - variable: TOKEN + label: "HA Token" + description: "Your HomeAssistant Token" + schema: + type: string + default: "" + required: true + - variable: DASH_URL + label: "Dashboard URL" + description: "URL of your appdaemon dashboard" + schema: + type: string + default: "" + required: true + - variable: LATITUDE + label: "Latitude" + description: "Latitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + - variable: LONGITUDE + label: "Longitude" + description: "Longitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + - variable: ELEVATION + label: "Elevation" + description: "Longitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5050 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51050 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36052 + required: true +## TrueCharts Specific + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "selfsigned" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/appdaemon/0.1.3/templates/common.yaml b/test/appdaemon/0.1.3/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/appdaemon/0.1.3/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/appdaemon/0.1.3/test_values.yaml b/test/appdaemon/0.1.3/test_values.yaml new file mode 100644 index 00000000..031febf0 --- /dev/null +++ b/test/appdaemon/0.1.3/test_values.yaml @@ -0,0 +1,40 @@ +image: + repository: ghcr.io/truecharts/appdaemon + pullPolicy: IfNotPresent + tag: "v4.0.8" + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + +timezone: "America/Chicago" + +env: + LATITUDE: 46 + LONGITUDE: -94 + ELEVATION: 1217 + DASH_URL: "http://0.0.0.0:5050" + +services: + main: + port: + port: 5050 + tcp: + enabled: true + type: ClusterIP + port: + port: 51050 + protocol: TCP + targetPort: 51050 + +customStorage: + - name: config + enabled: true + mountPath: /conf + emptyDir: true diff --git a/test/appdaemon/0.1.3/values.yaml b/test/appdaemon/0.1.3/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/appdaemon/item.yaml b/test/appdaemon/item.yaml new file mode 100644 index 00000000..4f0aa859 --- /dev/null +++ b/test/appdaemon/item.yaml @@ -0,0 +1,3 @@ +categories: + - utilities +icon_url: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/logo.png?raw=true diff --git a/test/bazarr/3.1.5/CONFIG.md b/test/bazarr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/bazarr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/bazarr/3.1.5/Chart.lock b/test/bazarr/3.1.5/Chart.lock new file mode 100644 index 00000000..ecc7d8d0 --- /dev/null +++ b/test/bazarr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:46.949866373Z" diff --git a/test/bazarr/3.1.5/Chart.yaml b/test/bazarr/3.1.5/Chart.yaml new file mode 100644 index 00000000..0737efb2 --- /dev/null +++ b/test/bazarr/3.1.5/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: bazarr +version: 3.1.5 +upstream_version: 5.2.1 +appVersion: "auto" +description: Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/bazarr +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png +keywords: + - bazarr + - radarr + - bazarr + - subtitles + - usenet + - torrent +sources: + - https://github.com/truecharts/apps/tree/master/incubator/bazarr + - https://github.com/k8s-at-home/charts/tree/master/charts/bazarr + - https://github.com/Bazarr/Bazarr + - https://hub.docker.com/r/linuxserver/bazarr +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/test/bazarr/3.1.5/README.md b/test/bazarr/3.1.5/README.md new file mode 100644 index 00000000..97a3c184 --- /dev/null +++ b/test/bazarr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `bazarr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `bazarr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/bazarr/3.1.5/app-readme.md b/test/bazarr/3.1.5/app-readme.md new file mode 100644 index 00000000..2d112915 --- /dev/null +++ b/test/bazarr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements diff --git a/test/bazarr/3.1.5/charts/common-3.5.5.tgz b/test/bazarr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/bazarr/3.1.5/ix_values.yaml b/test/bazarr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..e6a02921 --- /dev/null +++ b/test/bazarr/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/bazarr + pullPolicy: IfNotPresent + tag: v0.9.3-beta.9 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/bazarr/3.1.5/questions.yaml b/test/bazarr/3.1.5/questions.yaml new file mode 100644 index 00000000..3ed15945 --- /dev/null +++ b/test/bazarr/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 6767 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 6767 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36025 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/bazarr/3.1.5/templates/common.yaml b/test/bazarr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/bazarr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/bazarr/3.1.5/test_values.yaml b/test/bazarr/3.1.5/test_values.yaml new file mode 100644 index 00000000..6994e190 --- /dev/null +++ b/test/bazarr/3.1.5/test_values.yaml @@ -0,0 +1,28 @@ +# Default values for Bazarr. + +image: + repository: ghcr.io/truecharts/bazarr + pullPolicy: IfNotPresent + tag: v0.9.3-beta.9 + +strategy: + type: Recreate + +services: + main: + port: + port: 6767 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/bazarr/3.1.5/values.yaml b/test/bazarr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/bazarr/item.yaml b/test/bazarr/item.yaml new file mode 100644 index 00000000..06f251b3 --- /dev/null +++ b/test/bazarr/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png diff --git a/test/calibre-web/3.1.5/CONFIG.md b/test/calibre-web/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/calibre-web/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/calibre-web/3.1.5/Chart.lock b/test/calibre-web/3.1.5/Chart.lock new file mode 100644 index 00000000..dcf93a0d --- /dev/null +++ b/test/calibre-web/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:47.41843612Z" diff --git a/test/calibre-web/3.1.5/Chart.yaml b/test/calibre-web/3.1.5/Chart.yaml new file mode 100644 index 00000000..aa7b65d1 --- /dev/null +++ b/test/calibre-web/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: calibre-web +version: 3.1.5 +upstream_version: 4.3.1 +appVersion: "auto" +description: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/calibre-web +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png +keywords: + - calibre-web + - calibre + - ebook +sources: + - https://github.com/truecharts/apps/tree/master/incubator/calibre-web + - https://github.com/k8s-at-home/charts/tree/master/charts/calibre-web + - https://hub.docker.com/r/linuxserver/calibre-web/ + - https://github.com/janeczku/calibre-web +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/calibre-web/3.1.5/README.md b/test/calibre-web/3.1.5/README.md new file mode 100644 index 00000000..f0442d6f --- /dev/null +++ b/test/calibre-web/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `calibre-web` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `calibre-web` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/calibre-web/3.1.5/app-readme.md b/test/calibre-web/3.1.5/app-readme.md new file mode 100644 index 00000000..6c20a1a3 --- /dev/null +++ b/test/calibre-web/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. diff --git a/test/calibre-web/3.1.5/charts/common-3.5.5.tgz b/test/calibre-web/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/calibre-web/3.1.5/ix_values.yaml b/test/calibre-web/3.1.5/ix_values.yaml new file mode 100644 index 00000000..5e42c4a5 --- /dev/null +++ b/test/calibre-web/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/calibre-web + pullPolicy: IfNotPresent + tag: version-0.6.11 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/calibre-web/3.1.5/questions.yaml b/test/calibre-web/3.1.5/questions.yaml new file mode 100644 index 00000000..9039761f --- /dev/null +++ b/test/calibre-web/3.1.5/questions.yaml @@ -0,0 +1,449 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8083 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8083 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36015 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/calibre-web/3.1.5/templates/common.yaml b/test/calibre-web/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/calibre-web/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/calibre-web/3.1.5/test_values.yaml b/test/calibre-web/3.1.5/test_values.yaml new file mode 100644 index 00000000..5e2636af --- /dev/null +++ b/test/calibre-web/3.1.5/test_values.yaml @@ -0,0 +1,37 @@ +# Default values for Calibre-Web. + +image: + repository: linuxserver/calibre-web + pullPolicy: IfNotPresent + tag: version-0.6.11 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8083 + +env: {} + # TZ: + # PUID: + # PGID: + # UMASK: + # DOCKER_MODS: + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/calibre-web/3.1.5/values.yaml b/test/calibre-web/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/calibre-web/item.yaml b/test/calibre-web/item.yaml new file mode 100644 index 00000000..73a1a5a7 --- /dev/null +++ b/test/calibre-web/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png diff --git a/test/deluge/3.1.5/CONFIG.md b/test/deluge/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/deluge/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/deluge/3.1.5/Chart.lock b/test/deluge/3.1.5/Chart.lock new file mode 100644 index 00000000..319c29a1 --- /dev/null +++ b/test/deluge/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:47.885553069Z" diff --git a/test/deluge/3.1.5/Chart.yaml b/test/deluge/3.1.5/Chart.yaml new file mode 100644 index 00000000..d2f93d61 --- /dev/null +++ b/test/deluge/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: deluge +version: 3.1.5 +# upstream_version: +appVersion: "auto" +description: Deluge App for TrueNAS SCALE +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/deluge +icon: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200 +keywords: + - transmission + - torrent + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/deluge + - https://github.com/deluge-torrent/deluge +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/deluge/3.1.5/README.md b/test/deluge/3.1.5/README.md new file mode 100644 index 00000000..bfcbb4e5 --- /dev/null +++ b/test/deluge/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Deluge App for TrueNAS SCALE + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `deluge` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `deluge` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/deluge/3.1.5/app-readme.md b/test/deluge/3.1.5/app-readme.md new file mode 100644 index 00000000..0bce0f81 --- /dev/null +++ b/test/deluge/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Deluge App for TrueNAS SCALE +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Deluge App for TrueNAS SCALE diff --git a/test/deluge/3.1.5/charts/common-3.5.5.tgz b/test/deluge/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 zcmV+(K;ge1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{d)qeBFuFhUufR*EZ|!^`CHa=F&SuYg?X>ktSS@AO^De_{(B8oFEQ@+j9Nc;s7Jfe^;z?e{QNpmEJ z5A&vEhK69udB%pl-URb$J_;i;>v5W+NW%1Bma!hE2=!)=aYTD+1bR3UHJGy3*Vo~M zkV%4Mc|3y?#CjtN(-^0dp2|wdg!BdtHZ&J%{X7m<`x zk|c;;N(5ygZwp)?4q%!R4i#3C0zS17_bgPsq7Dn`QCWHjZf-Ts1ddR07j!?!f)bNQ zQI_BcvLP6Fj8n+bWHIyr*xCZ$5(-WVtn3+>!vx1b%?`<%w}4dbcA&=)o#O}{MG?tU zE*TCkG8Ex4Mhsj}5uYLoAkc6CDnP)dBu`>6LO^jo_JICt2*xmBl54=K4sZfs9E<-5 zdMfxlU=uA#6Xh?bNba+MjGIacWI02jggqUDlyJag`(sTEz)Wt)&j3`2Far~mA~C*V zkTaZ4Bx1u&z|kyARHv(*TX5Aw>Aa-re-FXC%VW>m+5+z(#c-4ePGLSZ!%2`Zreszi zW6uEk2xnP>M4=xAC_%q_Ry&fIr$fLp z6on~?k>G;tOodENJ|SVIV?22cGg)4hHd33&31%=0M1q87VyWRZP?fB}ye)8?Gfrk8 zqnJ?47a&R?V^T1W@pz0V5`$NaP{9N+TBy+-O;MaDh1T*v6M6+^@CpHzQv?q z`z@x7i%IgmD(YD%%;F-(;E7%-Cy0X)WGEJEon2i?Tv5%?sYI^Ra*KrtI61p8CD=3F z^*J>QL>d#$^nMIxZ~-V{B$*4QrYs@kD$f9BOiUq?0!C&Cyej5}z?)|*RFoV`)N1(X z4c?5UK#wL_n@$62Y7T)vkPH0FRLqxNjG6eaBu=krf;2J)*7O4NVv>uor5-r_!OCBZ%a}z6C0;Bze5kn=3FSK zA8>lblnNzhk?sW5$_o_baxxv0l%tPaA`}_tYHu_7I$JCSG*6G%8A;y~!Zli*_>Lhu z1P6!Tn1t^r$upBOZv1&X74yUlB>#;>`x>(u#NR*zK(mm9N(Q_PP^ zq1s9*0LC#^!?l{TwFS;886j4TT*+TAlZk>C37(@AG5I$DitTa16e;5f*+ED(a+9Vx z0(dNE>NRFlk*1ddkwyWzP79o}YKcXyJf#dE@rrF+lvRteX*rX;F#C>XjS+tw%%MSa zI@T*kf+Dejo7&VCFG*KbOi2a1=5G_4j1*q_D2)$NAD1! zZ}L2Q$nMZ6AHFke#1GpQb9I%__-v*9f(T8 zbo3=jtx`#*2w2;;%n8eSPR9;nrbjhKu^vMbQ<~34h>Gl7h+SBzn8k)>4=kKAj$jPP zxU57|70SBhKVlY8)zN|(v8+bvFr*V zb56+|#|Xf5VZk~2|Me6{Qz@~I#8Uffjwy;mH65Eus|O@e1}sctI(+6twFr;-;JX6hSlubA~}72eYG?;;f(a7XRh;n5C^-a=Nsp}0L=AEhv&yf=?@GG3gU1~>ITG;HB+C?Ng4t&$ssZG74xb4n2&Bjn# z9)=*D;PhiFFi%(jBiUN985*Lk-d71iyDpSfp{|OAA&`ewfi@V035j4*zyOd*BTUcR zvPPcfc`+}WC#EwqeVAcQSR)U*GoV}RtBrTt-l^%L~D6`->ouob0feH{H9{Q|4eU~+PuO*yhz~;M`AsmW6>EnomlwtR8s-A ztxaJ^p3A7J(mY9?ft1v$Q(`|ZS|nyXe+Hr{A%$JK*knxYh=u@cPqJM=QgHO+g=hs# zV@PA5g;0syA9hB(=ULU9e1ot>hb2|)v(kC<^m zUz9*RdnSQ|Adx|))C${RfBybht@H+~GH)vk#{xlNqS9nJnM0{f1+peXc0STpT{1%f z%SU1oD4{^wonDg|4Z&Lk;~y#J=uH|a%nbhr4Z+|$?C5h^m6Pog!fQ!%Mp7_E$qeMF zkYQnxC^T0%D^dz;q#*3roIn9I%lP61Q!rQKSEw^nAszeXqpFiA>jS@gfmj$7xC zL1?Ke_LNekZK+31oSM-{CBGI$b)KS7^7_&oR_Mj!ofhq_Lp;$EbFPxcc#h*7CSs~w zDJ2!bXeuRsA+SklOPMppyjC)UMRk#A_nYr@oLY&?o+~kqV04vdHJny*F;4gtU8uj; zsBQN@zZUr0JwrS=eydUBNp0hqxo6Z7!&TtKVsR0@OI5--iX_maqA90$7gfD?H(gLo83 z0)lJIr}EDLDzbaBe{ePg{@|~>;o$I_a1ajqeZ|*;Dz(1^z&Be;L}tE8yS}~-opg^P z<20jo;va>+lEWlf0E&djh|*Z@mzD{pv|8!1Qn}*2FIXH+#qefoV`PBlsaT6GtGhl?OEBjNl6|1bcm`M=O-0qO zaf(H6gl3tINwLzJR#?UIRJBwoW@C~hr$`KPNEgp!%PE?X zxw1(|IZYN|M4{x$m?H|lE?N9_C{fO^5d)$uAA&)@KT}f;%?Mo#!C?2B*H|{}*Br4f zu-?{|<#uIGm?O_Se|LJK%KDu}{1b)B2>w9DTQ7%~Lh|Vx$Y8sgXf*6T0 zs~0pygmt*mqL-Abshujur&=(4Eu;8_9Nt{Hnx0xXF{4@^8jHovU!MqTE%SRej^$$c@B%9C>G6{PHk z#t|y?p7w5Uy_=gr>sEzP1}2FQg4n`!j5ZXXjNUtcW-%B zCDfg3vXl)UEUU}`Y^=^@XIodXHe#2UB|E_vLX|w>fJx_qTD=Ifa;t7C>)9>*((Bdc zd)TkO{}+?%!K8o{`~P15aJRDmAM8Cp-0c64@yY%F2OObPY}Rrgm%H9k2BRqgI_DWM z_Tk;Iuk4S$&hmHuFHfkIGq{k-an6uAH%$;gABD~jq!ZFCOR&&qmCnjb?4kEBjev}# zX-ufg*}_=%G!%ebokmVM&-4``D5(qyo%9j~#d<%S9=|-hcp2=5eb0NBCWx`(G!l#! z=1h8&AdtXoKq!C{isZSZp!1qyj?>9Az{r?iLyEi@Gfwd+=MIAmRhR)AfTRGXz(2YG zrx!l>=h4OK#WU~6)64JQyt@QH9=&~gbar|A@&deh3y$BMot$2tzB#)9Z@vXbXa54P zPR~xBnR6QSF_XtvgaRyBhvLw?K**`w2x|K5JOT+!CpnxTFd=h9Qz4L9tGkevJgIc+ zBimYYLeKm8;{4?Q4fOBeRO|zIj1e8`F(DZHv*%qFeT=0i7{f85ii;xzW+awp`NrYY z(#X##`2|H>OMqf`={;50%pxSuqmVS5h_a(3M@phG%`H6S0T~Hg0uFL{h;Mwv#TYBR z1#Bs{UGlV~3bE7KH{%*M&j@C4gcHm$Vr9{=ETv_#D|tFsQ0&bRheF>T7JlCi$dyse zxQZ9jojxdP6;)KeD`)K6vW=X1b%{vbj<5ka`4^le?TCapP)I*5SZ$Yl32Pswb*Raz z$M^;@WBpW?X~?7L51n`tnvy>>u;@_LXNI3fZuL_m``kMYhB*zbY;ET^Wg&;B)|sG{ zeTRk>71+L2O}NTV6U}Pijz!;>-mx~{Lw*hNU!li6lmNI&{@bnDe+~|wKi|lIkMV8f zzm5F&MdiP{h=0Wj^|11vWx!fn04x{HHVLr2AG;9&?;!$~w|8%DiW*H~3qj_VugbRX z{H{U3M*7@HpMSisF8>*C#)mrtTrU3&1_!&<_zwsD=eryE?=e2P{l1kad1|}W{<6i+ zYKu;CH-9AbY%mG2p`f`qu~Wq;OeY9D5hb31C&oW~_@Y=}wJ~ z6;43DcIAvqVl@WsnBgEWX=QooK~X7+$3g(y1}U=WuqxUC+jW#X783hJa9bV;?lhbU zTC{3piX%3~64Zk2JyjR0%fr?RDm<25zAe-O7j0O&Tkq(`NncK1j2FK`zozShphZ+z zq0ldJ`5KMersC|%YrzNnH*&Bmgg)4gam0aNj6Ao(I&-xfb)|{&{>nP-5CwdF^`NZ@ ztE(*r$vRb=LO$?YtFG29hb8*8vDyCR@wpnCZ2<31B)}2~!H3}VZFMv>3J?jDi-<<^ zmgF4y;7P3=3r*Ad-L%43n3jUuL#1I|>9S*N>)JknUvt6{*!j%6$9l7Nvw3{}&1187 z{4w_q(6Du&kLsqbzGZu-{iBM*+C3^+OE-@S?89#z)e1h-#!+R*?`zwrmw%zyF$Vru z^Wdww4}8-?du6}FcC*<|HrvVXX*;?5N^UBwEDd@s-|SiKd)DvOL|wQ4X7lKg?|&TZ zKCj;Y*d1){e>}>!Isf0B|9|=OfBOKUjLPu7yfXd(#}P0|R7?PU$ytvsE4~D{LQC8O z$54QWt9&fg!~iicgjeF;UG&INQK{!1}+n^2uhT+Dt+v05n6OM7l3oAAQ7s+s z2mRysC>sUmoSt?pFw0I2Q`_daGA+?Nrsi zHdb#VR^6xO1MLOn*0PQ#lv~Bw1NlVNU4`76nDF5on0}k9L+kv1KnIXj{=a+swfkSY z`+J-D{}^9Q{4&7s~B zzT7i})eXd~(J*XGPo{)rs#VsccCUu@%ohgof6`TUUQLN5=CNk`uH?}PNx6&wq+;wV z0Z(WZ6^3aq8{HC%d7#PH!=d4Rz8-FKK9_lw6?QJCzV7C}5<#<+*e*1B^+8>qAFa+$ z)`@yCLf1MFp|IgJq=A6yuy@K9!~P!U6ZLWHP*?Zg>2mr|ABam&A69_39a?{>d34tk z@Zay8>O8A{o5I#_@N1C&%6JzKBm%CG|MvIyYyQ8_4>$M!ALZNFe>e8uFK_={@BWwd zzTSgg0COV!ta}5@UN&2gV*T05HWe|0u#EXBC$?pNnp9`5E>F5gVN_)Xsb zaw5TZ9}AmnW9`?*0B8(4+9ot*Rc z$BpDj;2Ir9d6W=Vz~d649w}YSg)!JhzXCt->qU3K?XB+@E;YBerXL*qB_*{%+pIPG zSrmwx{I9jIhx7wkCI9#LYVjWq_xl_9|1rLe{J)X^f4lNOtVsVbNmlrWJcJ(L9Qy|v z=E=OUOg8y$7%)5rQ^;PS1qiElv7jQN+PO7cg`G`T`vQa(0%MW0jC0D*V;-GpW9Dl4 zu}-q7%(tKWwh1pPcwt~e8?-=a;;%O0HKxW!tQ8OLBFC=HaznA&uT-qY!BIVmZq&Vs zs_bJXLW`Q6=QxVgZs)^NKiMs2HxrJP*yJe?rXj#aSFDo)`RldECY+IwDF5OnUxhC8;3$`s0dF2Y^ zgp=07Z5yKP>dXN?{^-6R;#b~i-)S|P2Y+;-ck>lryZmpCwC}G2tdRc?2X+6igWZk) z$D@23`F|t-|Gwn^s)N!)O8mu<^Af4Q@Q;(eP4|`iZReb|Wq!~0oLEor_m+wN4I;W- zNnK30b61P%3gJ8|Zq&}L%XZc!THk79Mkqhm57pXb)XUB$!|ILVN?;?PzS+3566RtR zkiK15s$e#uFLZuYFKS08?;^J0l9_>Pom}Q-+oI{%z4Z_dw3ghPRKf@v{iBk<{G6rX zplB)2bU*1zIfZD9ugs;%(0z)|NHubep^QaSB-kR~t!q8pTB>8McZj7Mvn__FXpxx) ze(?abzXP`A<&GkAM~mw9N8>Bpk4%<=FMjI7iAJEC8bV6ZmC{UI3DBZT}o8q9OcbB86SH9e1POguZBc2)* zzBQxgS~M}c{toyAIK?xo;k!*|-gi9G-TyP4sQtdamHPh&IhgKc1z2_eqdyo_^#AA2 z_YOAt|6_a`{ePqXe|i1?ZTXa>ypt`K9Ccl&xQTEs)1(ogVgl%_)|-9NK6#Q@hcD!% zB|F2?`}Lo-QZK+PXZ$G3#IB~(Yz?J;2mFJrxmKIzSOD5+>hBT?dRROjRTcWk>0oC%R^?_`watoAn{nz9hI({;S^q-5nerZr=ZSlyAwd zSqlPI+HUV+ac(xJI|gC7fDK=OZ~BD^R1ZVzlHwCn@}8D=JF5BJEbm{&dR}nLu)j2$ zlxWJW$H8usUMW^?9!_u6(4QO0#@ajXWQ4ZeZSG-!ZgaRnzk=;5?bRrqLRfi7>+zku zbk_3IF=k{f+|^CvWkf?=IIv`xcPHn%%0ggj9R&>nR10iXma}WTJpODoDux6>&^-EH zrm=j?o_&e&_pp7Qj~G&-d>|AeZ9nwP4Fa4s@#<1?vXEnqGN3zX1%o$&;h*JOE&tvB zJ)q_C-(b)`*ssWc{oVe?|Nl|GwcRhO?*l!g`-St?k1hUvPD!)*j82< zIdn}y)aGYh5Vdn#1W`9iMZtwKK8}n{L3rcN;+lr)JXMiA8jx-`kyD1fu(4W#t6PEg z8Ym5OmZ{BhvS=>VVEFNkwCq|_^a1)k*i&srqvKJnHH~dqRtuOW@i zM6CH6J7dQeC4#XkV!UJ4)mv6YeKJZ zItj17k!+q1{6-fLjiI=cp@6EXPQN!7sh#Rnk9ewXjb+4rhLSPElN80$gRBWe2jw^J zWJz&5XG)x#;FZ>i+@c@!Wga`Pe$TspzysU}WL9Ygs<@XUtv~-!yUy*JMCy+c6u>I% z|5^LmwEUVB%@bt1C^}3jtRdppa5c~5v3Aj}4DzXSH$RX`uGbLcQ+v_q`8H=Nwy=ku z0p%yixRfqv=M;_c#~KBdE)(AfMpr0}hmTKf5ou#sNp3X`xt}zh)KURR^VtZ|qPT0; zvUpLM6Anpds|m0~gVlAlE+k84p*3FbJy16zbTdNN9-&nUwn6ji)MEF&pHD$}y*zC|;_QSgo-T21?ol3a_fR;p-a zHSOgL;-sc;Y%IZl*srtwSH5I*HzV+>`=8IN@n3cayStnBe;(yq+x}}0htFvQ)-R_$ zrX_fZA^4Bwj_?Px0cZ2E@d+Jj0beRuF&88|> z#djy?ZMR9S7cU!&ULK!2{u*@%yAfZ=fct=PZHxpjt*qzD`dUV$X|Ta6yN+N)%iUAA za|9wYvkc-TN?O*g6kQ`cnerhR^c${XHukOzMG1K{9fI!(;}>VA+dn`3dB?Mqu!p2c zYA1-!a4LJ_1SN1W1pEDd&7C^{YFNF^6Qy8SRBr!#b0d^zwZuCHi2jZ-oc+85{`)H0b#@5vp zYqt)+tI5BE#ou3HOEs&Y^m%WYZabj;cK<_|!DAw}MvK+rr;4t$V!Rd|$Y9Fq7NZq5 zZ?Mwt-7q%RFmrb>a#xUNkTE``B%e%&U zc@ zb3>WIqs(MJ`p8i#x!s!&Mu@{fCHzkX9%dPnr$9j^0;B!6;?j>$4oxw}q%X>_*PCEI z%|~HGX1ys&^gmgiB)xAA``_H3GcE^?&QCQE3%`e~Aih`hjK8{h4Ln%Nvj%poKXOo( zki`t8YY&~G;AZTs&6=)*r$F=@9X$>2&2$_-ZI8lyrtzcM^;;h~9k|kQ=vX~-x3Sa0 zv4-+0n>ud6*=rHn|T`+>?*FQez zELhdi%V$7SGkT}h`xD*TtUKopHA;T3Rc(hJTD6|vcVfQ%=h1N)ExhAOPDe0WV+nsQ zM)h(Zp{sI~`ykw@azRy?^C_YDKT=#@i;2sMcUkqjvGVxsNmm9&G+u*$f4w*VV1~aPNPG-VwNl3!yPZQxsjbKwm>96>FSw zO5!|{S}4a!0k9YDg?)Xb>`Y;SMsw&HxSrx@3bfHpXoB|J!T!zdtq%a>G>>>rQK-~A zMHXgu-O??9q6zx=8uDlgaLPD>u~62P3wbLI;Pw`bPy};^6lSrW8V&XeEr1P+Q}DOF za8JzBJmG=@0D+HFj_4RhNOELM@-+4VqLk3kd;0WJs-6_h$Q;GsdWy6I0^~3uldl<= z;S|sEw5d0qKJ6&c<(a%oYtibAWs5WZ&G!7Ke(=|S?>znK|GWM7)7#r8KG=5H13m#x zE;tpOuugvE@L4w69?t%=%>E}Cd%w_c@>>=EV}G~${{P`&e|Ka5dyH>m|J&IAzPSAl z%<*g}9}^b{`65FvW@27OQ#1s6S(a{U@<>W8_-cL6vk8T*@lUWy9({U$%N5{QMxV=(C?L7_xh1YMPRuh7B= zeg^q8o$!F{5OTVD3M}W5^O87YDdLuOs8rLh9cu| zR&TfASxeHe1i)?ng*-m0IXqFW0V(`?1>x4vC zh=Nl&Ac{6$NNE^I@5d#BF3XcdfwIcbE5zH@(KmS3p0~SGj!grkes>wD4pnyCm@>Tx zhAlW#9WnMeQeKVDz&N+i1kU|=r-m0|4OStot<&v=PPBER6JrW^!?1X8y z(WpSpRkjQ(lsXk_=jk$vbfbG_%Q46u_y1+`pMKfnv&(<|{rdZldxMSq_ZZ(s{@ciZ zUtIq4j`bZ;^*S7zLV*cJl+^qu8um7Gy-2Kr<{@plf;9%RQWr&Kz7AT|0Mz=Xk$pZd zP=rTWRvvG8Fv}`|ndVkZt$Gp5@%+Yq(yxkT22(geaWGPkauo&`b8E8Zl;3;mU1;L( z#nl=Mf=2q%wg;^hx6PH@#oL;fD zbct654M0>MLmF#Ft>lOX_uH(VNp-Zif~Ml6m?vVXBq>mibfK8T1-nCeWlDp>GzM%Q zxe%+!v=FSIw0)TWIZa}Js&AS6rzY=bfB$>$`Tl-Y{@dTg|9zZqBmZsWzb`KTb=`BFPIpel9vro=01gz+MF)(&Q?{sVq&J>cu4NUS*rC|=PagvDMlTK*T(Mu4o zsa?+BGV)4;v$Dx7*jjZ}t^su7yKMw~l4|2==dQKrEZCv2xI$<_tCPAmfu)r)_=?qH z52u}RwwPJ%fZ*jQw7OT!9OLo^nd)LaUKErR23K{n)|=WIW%FG9U1~ZMWeJQB@c)+& z{15)p);8%gx=Gd9uT`L z^Kq)&)MW!W0TaXl)Ilzkzh79o_0>!sYE4tn;RJD6pnNLb^?3_Y*Xd2C$})jTtazWb zZ9FX%TfTiXZHaBCipu&f$;)*99#RwF4tIFR|Pd!&NOIuw;Tf-4tU zf@O?ACjO9~fkH^p&9+M9S%&B_Wa!&k(c*n!Hv)5|4#$nI4O@9?*#@x*+_i?Y zOYI5x!EeXXsNQ^sxX=sa=mld+W<^j%*@G*4Zh}<6!*3~>N#|2N^R666RP}4EnN>qv z%q-b!uh62>gP{*ZJ&t#6j;as;NTGUR$Pu6V_JGY$csNxAb`4GV?DSC)sR{YkTVF6Wf0Poq=AO+ zGU8sLg%}p1-|Ycccw*S&Zr~2XUBB*NymBBq^%X*ld^+J$xt%@DWmBNYLj+yzQB=!Nl8Sf-qoYND@7{keT^e@ovo{m+D8 z`^^3yyZzngHUE#pgN^?87~e+!+vtB^T>tZ4BRWwnOGpG0ZIRTMw~WnS2NG9#TIyKh zz)-~Ir21lNl~W9Zi|PZu8 zq54XOyqO~^h9jy{Wmo5*`XFUo#Ko3wqK8FIvVzh3r4N?iz;`D>i0H$Q_p#xB>U1x%xVD>PNGE3~Ah1thVq*$(iRvM-xouQPQJj=SIEl+mA@->|m zWzB7JtFSt*c2bmesluq6n}%Y=ZJv^Q4Vdcus~oLMi>ZIE?5=A0T*zvB+O$n5uo?#D z8o%GtB`A%n?7BjWXO>~k?yiQ0UZF)}+uGXG@SJ0NgR&F{nJd}Fugi}1TuLgwD z0B0qdIZ5&vdQI}w#-@$3c4patuv(Y<#6kzsDH);4LoFIn5if7p#MmMibb6wtX+aZ< zM6oeu`7ueyc#=~UdP8HCqDv7*->##rU|IFy=eRxh`~Ozze;JAIYXM&6|Gm50ug3o$ z>>h6PzsLA2={qB_lBH!-!23(z8Hvl&FK4-^T^4S+DciD&>{g6bb#J~U@_m!*Uvc5Z zp)w=!MP0OQ5Ntb=S+9U%B2n3Iz}FH>L3|l57EMu{Cx{mBq1XxCa7+o~XDVi^$hUrW zFK=Wt^LJ}WOHhteR;o2MtWIw6qZMxv&9=Ew76Sh`$r(rVTTB`M5%cNy3e1tvm40}Gr3TI)g*IL)*vXV6#`i&cUN4cshQt4FFxLQ4{hW$~3AyeXy^-~3wyUWs$k{A^iIB#z~ z`}cj895|NiyPQkr@B856Btf)%ozMEYCe}Z_Aohj64)P!6_w)f+W&hthtjT`|yPNp0 zkMeEo{~P=Nm$v`+o_gnEl_^yYb1}(LIXWmDlv}S5$VYpb<9w^ciQZG=K`Wy@NhoRW zgV9vv92LTdiLVgY4Um*r(X{FhJi8%>w2e$i!_V{)eZ5Hi5mNcYr55#K`DQfwRbLeI zg@omU9jl_sn~*kG(D0I^Q95&qN#?6esW>&&Wkl^OoW`dN_$olEuWP?c zwPk(wGtf=-TNJEQQLzyCuf?1Y)5FxbvbBX%ty7U2KFVw3$V8KpX{zRW5j`Fxg_hu} zra-+h?r4?pC3rb(%V7R`OqJubE4?j^ZhxS*@l{e|Zfu$%usX9^=88K>8cNltOEFU# z`sm>Y!=~HYx?NJPuBG%SD)yH|$5U2y7K^zU99h8u`Pa~^4Fm;IEbHbScGp$kdKI{Q z+1~&D@=`t>+?0OdJJ0QB<@@gHjqRXzEwc(&BDCJ0cFQWZSf?K4sJqm=&({omEwaBB zTd9ztv}?N$tRpYmOwJ*lATD2z-mWgbR;JZBdEB*a{IK8TRJqYH5EEIWe%3-#8CzRo zi7W)$1qAqtJ+rdFS8T`7+FU&<52dwse{SBvwi{D2QB5LQ#IRT$8MQLJwK7lic9TQIt|O0G4lkM{9%UCKxn4F@^DMf5blDLky3ef>6$1_B7-b$*Q z-vMEUD3%9@&G?+`*1lU3>-T~E^jGfxwyVhYLzdv@CRUud~j?yxWsaA8gC9GoslL<3{{~YqE(%u44Bq$ZZ zg^}~9bU9Nupe^lFK(l;Q!s;I-E-QECd=%SR#o!muW_EjHBz7XjBb$zRHgh%-^_Zee zwv|9_Tzlc>+}upAxt&+QXw*USu3my0Wdl>*$?Em}w)%gFr{ri_ZP)D@N}6Mu(~dRMmG{)g4E#v8Pm-Xi4psrgJAn$EwK; z)eeJlN|+KbC1Wxp8*9wlORy0Z$f%Kq0M99HH3 z{muE`<9sGEAH`@c!_lMO80tMw^u3TOAvZ#vyjh3hR#B`NIH4#T!a2l=x;1M@*M1}4 z9y05k7+@rc5e@D7+^CFlW!w(IC+WX(q66AkFQXS8J_cS>bc`r}lSyH>xS%hpd4(40 z>W_x+LQ`3tnJq2t{vZT*l=1?5b3}N>=MKT#i|)ztQGz2GGLbml)3rks0yjM7Z->Fa zx9Af?vGrkjw^=2hSMiVHxv1wJ3{)6?s~o&9!@l%twD}(U>$3l=8=2t(&OXcjKiEI0 z#edpA*xT&?kMXTu@=Q$hQucnLlFnMfmDl6w6bjFh-QP7xOd)%P7VW@(sUrJs2t13n z7gnI+K>0D0nXSvIrF;jrLSl|uTxZa7RR_L}(OJqB<|6RVj(u!n^9KD|*WKGiswZFv z_+pzhuQKBI=CR57z`Md}Jk+mMdo#pg3^^P+2P76ZWP{XmfQ@&j%Qp=x9w2;?p&@Wz zbmR&1Ol>@2VWeF>SGCRB{YBfX7tKF`(cwNyBR3j}z;HX2 z0IypAcMog+pL@F-|Bpxc*3kcor3c^?;E%^;Zu^_5ZHiHY>>L(}dhs`Muer_c)Cjgs zc1?;7E$P{s=M7=$E9!yWUiq|v3Hl`0%#Lkb(Y7a=IH@h%y$R(OxtvQybx!@F@=2+Q zbS+zifp4O?SiH^VCW|}jU0n&*Kzec3;h;8d{EzspTK_XbIZQq%+t26m|Jys*t=j(v z{k_fo???HTu4k(AeOG=jqT`4>P><%KGTbwY06duzCf6PRNlIe$0cSq2@9B!H{r$b> zOI}mXGv>mdyO+Q$0*&fmf^OqD`SCg`$mLHmAVd)c;|k6lY#I0RcHpIf&cJ0R^>TBRNqDXT$2C0Kbq?;rvDO)El8Oq2^g>oH7oRL^>R{`|#-z7h2AW%`b`LkFTrM zmv-r2$Y?#IbX85a-c(U2Rm=S#2;BR862e{yN03L;Ua=njKV;NmbTu^I-Ucw|#A!`S}Tymt2g~=@P%L+gs&mB_pI;j$Pt!hU`&ZiRlqd$#n{Xx7txlZ1MB9 zsHGvz(<639(zk?g?R6k4R)gCVlri*WI%TvZ)+D0~8^RALzwE5OjGlbjCHNb|8PEK~?l_v+H z#Y z&n*s{%?;_^d2KG7>Z>?%TD+`=)N-9V)ptkN&gLeq{#|wc{0#S?|E!;u|3k6G<4H;= zdiXk4$p8I=y~_Qs!S3PnjsNGPd|Tiga*n8aOJ9uua6LsS809#L@S2*h zEB2mIGhm(o)x!6ORkVg+&m8)(p#xIORNJk?QyR1s;aD6brP z-qWYwlNri{#`p9o_?xMFg84Kbg%O$cIL(m?iPwW!#(JD0)SE%Z5$!1s{oV7nw!mwM zjn3(LpMXA~e>sCV0iVD-nt)H<9gyC8!cmMb)q5%m31-{0W@sSa{+u7Ezq3*KfQ}k^=Rw`H%CL{N;TD z`XMx-gna@(9~^%3vm);k&~K|X9`KNz3Kvn_| zbbxIKla3T5M$(`~<@90V}uQ-4*lL8VwqQnaj)Q4c>MpG*&IQk?37Q5g}}=dtA&TVqp);i0kcr1OMjt;VKeIqEMhE{`YgHn2?L`oI!v zc!z@Pa@mx#BVe!1WCw{p_|lvj?C$LjIu|XYtXec&9-nuv+==RX=XUVgFxPMJoGztg z-enW1l({DK3a673Ox+4=^~|%hJy1@2Ric>kqWTsmZlhA1G(mS<(-i2c%|k#Xc#cxU zm<&4D0X|jFCaEnZM9M{`1L2i&-J3x&luGvIm8G(!A{$7;=}7VC+~iE*@&;cMrcMhLSJKwCOM?>eY?MksBHjTeZwH1k{Rk1 zB|71&_5UF3hr9jVe*c@@=N1O@pi|p)rjwR+$vhU_l4)Y99If6xOW+@tZhDo-VD3CY zSwa>whuh`LZ%tc(e1@$AZg>-|WzSx+Segf78+oGN(QPkUzIEFI({y^>LZmsVE@G0j zY)bayV~teX@87j8!G#E3Y-^_~r48vCGJ97Ey^B1)OccMP;C){)yPHtGQuwVr)z=8q zWjHwR#?xE zqZ-5B zN*BvX6aG%-5%qa3a5~x$)bVqw<~9{{&hT+W@)&0BqX>F#rGn literal 0 HcmV?d00001 diff --git a/test/deluge/3.1.5/ix_values.yaml b/test/deluge/3.1.5/ix_values.yaml new file mode 100644 index 00000000..14051dce --- /dev/null +++ b/test/deluge/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/deluge + pullPolicy: IfNotPresent + tag: version-2.0.3-2201906121747ubuntu18.04.1 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/deluge/3.1.5/questions.yaml b/test/deluge/3.1.5/questions.yaml new file mode 100644 index 00000000..d4db5c6e --- /dev/null +++ b/test/deluge/3.1.5/questions.yaml @@ -0,0 +1,571 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: +## Portal Button + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +## Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" +## Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Australia/Hobart" + $ref: + - "definitions/timezone" + +## Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string +## Enable Host Network + - variable: hostNetwork + group: "Networking" + label: "Enable Host Network" + schema: + type: boolean + default: false + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8112 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8112 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36026 + required: true + - variable: tcp + label: "" + description: "TCP port for Torrent Connections" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable TCP port for Torrent Connections" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: name + label: "port name" + schema: + type: string + default: "torrent-tcp" + hidden: true + - variable: protocol + label: "Protocol" + schema: + type: string + default: "TCP" + hidden: true + - variable: port + label: "container port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: targetport + label: "container targetport" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "Node Port to expose" + schema: + type: int + min: 9000 + max: 65535 + default: 51413 + required: false + - variable: udp + label: "" + description: "UDP port for Torrent Connections" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable UDP port for Torrent Connections" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: name + label: "port name" + schema: + type: string + default: "torrent-udp" + hidden: true + - variable: protocol + label: "Protocol" + schema: + type: string + default: "UDP" + hidden: true + - variable: port + label: "container port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: targetport + label: "container targetport" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "Node Port to expose" + schema: + type: int + min: 9000 + max: 65535 + default: 51413 + required: false + +## Ingres + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/deluge/3.1.5/templates/common.yaml b/test/deluge/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/deluge/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/deluge/3.1.5/test_values.yaml b/test/deluge/3.1.5/test_values.yaml new file mode 100644 index 00000000..127213f2 --- /dev/null +++ b/test/deluge/3.1.5/test_values.yaml @@ -0,0 +1,44 @@ +# Default values for deluge. + +image: + repository: linuxserver/deluge + pullPolicy: IfNotPresent + tag: version-2.0.3-2201906121747ubuntu18.04.1 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8112 + tcp: + enabled: true + type: ClusterIP + port: + port: 51413 + protocol: TCP + targetPort: 51413 + udp: + enabled: true + type: ClusterIP + port: + port: 51413 + protocol: UDP + targetPort: 51413 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/deluge/3.1.5/values.yaml b/test/deluge/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/deluge/item.yaml b/test/deluge/item.yaml new file mode 100644 index 00000000..0a1a793e --- /dev/null +++ b/test/deluge/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200 diff --git a/test/fireflyiii/1.0.1/CONFIG.md b/test/fireflyiii/1.0.1/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/fireflyiii/1.0.1/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/fireflyiii/1.0.1/Chart.lock b/test/fireflyiii/1.0.1/Chart.lock new file mode 100644 index 00000000..49f381fc --- /dev/null +++ b/test/fireflyiii/1.0.1/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +- name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 10.4.2 +digest: sha256:feb1c5155f10c340b5a984ce39eb7c532c938ac71287bfa65398ef3fe458c902 +generated: "2021-05-06T13:29:51.104635038Z" diff --git a/test/fireflyiii/1.0.1/Chart.yaml b/test/fireflyiii/1.0.1/Chart.yaml new file mode 100644 index 00000000..9ece33f5 --- /dev/null +++ b/test/fireflyiii/1.0.1/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: fireflyiii +version: 1.0.1 +appVersion: "auto" +description: A free and open source personal finance manager +type: application +deprecated: false +home: https://github.com/firefly-iii/firefly-iii/ +icon: https://www.firefly-iii.org/assets/logo/color.png +keywords: + - fireflyiii + - finacial +sources: + - https://github.com/firefly-iii/firefly-iii/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + - name: postgresql + version: 10.4.2 + repository: https://charts.bitnami.com/bitnami + condition: postgresql.enabled +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/test/fireflyiii/1.0.1/README.md b/test/fireflyiii/1.0.1/README.md new file mode 100644 index 00000000..8e87f22a --- /dev/null +++ b/test/fireflyiii/1.0.1/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 1.0.1](https://img.shields.io/badge/Version-1.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +A free and open source personal finance manager + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.bitnami.com/bitnami | postgresql | 10.4.2 | +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `fireflyiii` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `fireflyiii` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/fireflyiii/1.0.1/app-readme.md b/test/fireflyiii/1.0.1/app-readme.md new file mode 100644 index 00000000..15307675 --- /dev/null +++ b/test/fireflyiii/1.0.1/app-readme.md @@ -0,0 +1,3 @@ +A free and open source personal finance manager +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A free and open source personal finance manager diff --git a/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz b/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz b/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1067fe424a37c0f1987c806491a9f8f92c15f77f GIT binary patch literal 48566 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

%CV6{co@F|M(!OhW@7`B6V;m*i5-*?P%jNr4)SO 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 z zY3&Wmw;uli6_>EgczNmi{><@~_%4wyCzs6?1Hg-J^WwN`xY?F@MXPlD^kraPw?B!H zj|JG>CYf8smgAMJy&wkJRoReTS+?o0QV*RgW#)q$LEyLbHT$Y|tfP?4*uVU9_HNbw z*(&uhAkc|K-0&8R#1Jb1Ry%b-qBQXJNZ(5@vVY47qR^dhsUBpRwSR?|^upY1z-tH> zo$6eBV25m~xO^PXn{R7bIx}##vQsxD+*LO_JLXZkNDq)UpMkE_BidU?_XCUVAH*g6yGY`HT)h4Jw)*ew_OZNwI-cUU-8v_l+x?uqIrh)TLf|Oi zIJbw3?%$#9Wl0pYyniX2-*^vGIPPm7XYoIiN%WTdPv@}x@0<+&$6Yc(lXv_ZGeHf- z{W3vN>wm#KqS0WsPCtkKek&DwrcyeG0(d(o90#kf%&K^tg&~aw7kHo~0JB&K_gEs$ zOI%X}Njv}|pE{*>7k5%^tgWH*nD`Wjh{6gAe@I4HIPTD@tL()yH(pbF4TR(*CVQ$w z8Vwo<1=)7(SywAt-HB+VoolH;A@i{$K?5Q38IR(S?4bZ!d6YF8&g1PFL!G5H0g*HJ zU$kY3`fYEQ?cEvfBZ1Ng%b{V+~-dIC=>INe7IDZW}SB%*KGLeX9u9FSltLr1@g3@yrL9Jt> zA@nWxVTgs8g@Qj0nb1MKG5{s|z`|ri>~%SUp0?0Q-=bKv)!ahvFz+CqL9=Ndi3e0D zI0XtOYC(M+fk05E=vNNnW~POmW#8?hz^?Pa}$@Q|0401iCK`5r7vqc@f>1(;|(CfN}oP{kc zz#4)T0HD|4a>5xl#o4?QQHHhGe4z6$nhjO4=OQw3~ z`YJePLQr_{IMKs`q%b6ui{ff1l5KZ)4P{|}&04|ltyZf##)(;#n+G^S#@$;pA{@u_ zH`QDCKE{6}Bn_03?Z%fc&K10o@2^qs#WNE5Y1YuMUmLke2XUCq*z-IS%8o?iy)=KW z4LWmraDM*F`?I4)CQFX(UEyBC6*2WvLdJuB{>zl*ave3(V1#u}g0;y%o|x!_Zn-3r zsUu!G(GTYx(B4_5*)zU=h4pK!xuG#(SqmpBfB0veCX}<=ngjOk{l)RQCqHXC<+Dhz zklZE+al3uLVTjwE8w4VrGZOL4%oMi{Nep{)(pMCz&$zERCll!vfyqq_uRRsbf>)h{ zXi|nl!llS0Kjzjr81+&oSc?Io<3(S-(tr#Frs7wsB#>WkJN)C+VAq3>#33q2C3I6nOj1 zFP@@#o`Z*9n~K0;L0&vVtyVyM7Lbib)k1V`v=AM4Av()hh|V1>M5lToY_P1K?L%eb z%g0d1YkTcRJg4QyIW|dz0=+@Z~u2}*h6%M1p(GDRX7k6G&9p9OB}6D$+1x(Wgv)JacuSIbk-i#nA?00ys+ zbSN_eM5Q2MU#VD_2S&O#Se{OCz8ZC5c zU75|#LNAAn?xp7oZ;tZfNf)gf0s_m>o1h+(L)~ZxrnhU?-swo~tPbx6)6e(0Q|?no z+(Il0CmSC6_)o&g^w4-VB%VS698)tX?TfSlI& zB~Uezs_%1MBY%n7+&Em%_5+e@m{7djJ%>x^!2?zP%g(#q)hyVy5q~3yy%11ai24W^ zRwh^_378~qfsuggRks~<6`d6Ze%MNn*QTqUk0J;VvX-6l=9%v&-JAX~6&+1q*3X4Q z90BilDeHA*k>V5^@HV=z$OcKFv^{kD={5k8`#fP~Hd;SZ9oI0{EaY(Ho@?9GgfkR2 z-imwwW$5oogbre!rrtx>Io@YvvoM9alMqdd{{2ch+rCvfKSR2 zearV!yqrS{#Z(hm-VnNRCQ) yx!m0Eo=ko*=aa@_0fus5e`cyo3VK=pCz;t}9OD>&aC`><0RR7=nARBpumu3)gUBNQ literal 0 HcmV?d00001 diff --git a/test/fireflyiii/1.0.1/ix_values.yaml b/test/fireflyiii/1.0.1/ix_values.yaml new file mode 100644 index 00000000..ee3a8213 --- /dev/null +++ b/test/fireflyiii/1.0.1/ix_values.yaml @@ -0,0 +1,41 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: jc5x/firefly-iii + pullPolicy: IfNotPresent + tag: latest + +env: + DB_USERNAME: fireflyiii + DB_DATABASE: fireflyiii + DB_CONNECTION: pgsql + DB_PORT: 5432 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: postgresql_host + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +# Enabled postgres +# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql +postgresql: + enabled: true + postgresqlUsername: fireflyiii + postgresqlDatabase: fireflyiii + existingSecret: dbcreds + persistence: + enabled: true + existingClaim: db +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/fireflyiii/1.0.1/questions.yaml b/test/fireflyiii/1.0.1/questions.yaml new file mode 100644 index 00000000..f2ebe1aa --- /dev/null +++ b/test/fireflyiii/1.0.1/questions.yaml @@ -0,0 +1,562 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: APP_KEY + label: "App Key" + description: "Your unique 32 application character key" + schema: + type: string + default: "" + required: true + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36048 + required: true + +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: db + label: "Database Storage" + description: "Stores the Application database." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: nameOverride + label: "Override PVC Name (advanced)" + description: "Forces a certain name for the PVC" + schema: + type: string + default: "db" + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: dbbackup + label: "Database Backup Storage" + description: "Stores the Application database backups." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 0 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/fireflyiii/1.0.1/templates/common.yaml b/test/fireflyiii/1.0.1/templates/common.yaml new file mode 100644 index 00000000..64e027ac --- /dev/null +++ b/test/fireflyiii/1.0.1/templates/common.yaml @@ -0,0 +1,5 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/test/fireflyiii/1.0.1/templates/secrets.yaml b/test/fireflyiii/1.0.1/templates/secrets.yaml new file mode 100644 index 00000000..2227b0eb --- /dev/null +++ b/test/fireflyiii/1.0.1/templates/secrets.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + {{- include "common.labels" . | nindent 4 }} + name: dbcreds +{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }} +{{- $dbPass := "" }} +data: +{{- if $previous }} + {{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }} + postgresql-password: {{ ( index $previous.data "postgresql-password" ) }} + postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }} +{{- else }} + {{- $dbPass = randAlphaNum 50 }} + postgresql-password: {{ $dbPass | b64enc | quote }} + postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }} +{{- end }} + url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }} + postgresql_host: {{ ( printf "%v-%v" .Release.Name "postgresql" ) | b64enc | quote }} +type: Opaque diff --git a/test/fireflyiii/1.0.1/test_values.yaml b/test/fireflyiii/1.0.1/test_values.yaml new file mode 100644 index 00000000..7c5ca267 --- /dev/null +++ b/test/fireflyiii/1.0.1/test_values.yaml @@ -0,0 +1,78 @@ +# Default values for Bitwarden. + +image: + repository: jc5x/firefly-iii + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 51080 + protocol: TCP + targetPort: 51080 + +env: + DB_USERNAME: firefly + DB_DATABASE: firefly + DB_CONNECTION: pgsql + DB_PORT: 5432 + APP_Key: AGcfkCUS233ZWmBXztYbdyCs2u7kkz55 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: url + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +persistence: + data: + enabled: true + mountPath: "/var/www/html/storage/upload" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + db: + nameOverride: "db" + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + dbbackup: + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + + +# Enabled postgres +# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql +postgresql: + enabled: true + postgresqlUsername: firefly + postgresqlDatabase: firefly + existingSecret: dbcreds + persistence: + enabled: false + existingClaim: db diff --git a/test/fireflyiii/1.0.1/values.yaml b/test/fireflyiii/1.0.1/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/fireflyiii/item.yaml b/test/fireflyiii/item.yaml new file mode 100644 index 00000000..1cbbc68a --- /dev/null +++ b/test/fireflyiii/item.yaml @@ -0,0 +1,3 @@ +categories: + - finacial +icon_url: https://www.firefly-iii.org/assets/logo/color.png diff --git a/test/freshrss/3.1.5/CONFIG.md b/test/freshrss/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/freshrss/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/freshrss/3.1.5/Chart.lock b/test/freshrss/3.1.5/Chart.lock new file mode 100644 index 00000000..0d2e642f --- /dev/null +++ b/test/freshrss/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:54.451281697Z" diff --git a/test/freshrss/3.1.5/Chart.yaml b/test/freshrss/3.1.5/Chart.yaml new file mode 100644 index 00000000..89a2f7d6 --- /dev/null +++ b/test/freshrss/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: freshrss +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: FreshRSS is a self-hosted RSS feed aggregator +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/freshrss +icon: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true +keywords: + - freshrss + - rss +sources: + - https://github.com/truecharts/apps/tree/master/incubator/freshrss + - https://github.com/k8s-at-home/charts/tree/master/charts/freshrss + - https://github.com/FreshRSS/FreshRSS + - https://hub.docker.com/r/linuxserver/freshrss +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/freshrss/3.1.5/README.md b/test/freshrss/3.1.5/README.md new file mode 100644 index 00000000..b8d65a65 --- /dev/null +++ b/test/freshrss/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +FreshRSS is a self-hosted RSS feed aggregator + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `freshrss` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `freshrss` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/freshrss/3.1.5/app-readme.md b/test/freshrss/3.1.5/app-readme.md new file mode 100644 index 00000000..7d8a844b --- /dev/null +++ b/test/freshrss/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +FreshRSS is a self-hosted RSS feed aggregator +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +FreshRSS is a self-hosted RSS feed aggregator diff --git a/test/freshrss/3.1.5/charts/common-3.5.5.tgz b/test/freshrss/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/freshrss/3.1.5/ix_values.yaml b/test/freshrss/3.1.5/ix_values.yaml new file mode 100644 index 00000000..9de79c78 --- /dev/null +++ b/test/freshrss/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/freshrss + pullPolicy: IfNotPresent + tag: version-1.18.0 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/freshrss/3.1.5/questions.yaml b/test/freshrss/3.1.5/questions.yaml new file mode 100644 index 00000000..ffb0a95d --- /dev/null +++ b/test/freshrss/3.1.5/questions.yaml @@ -0,0 +1,451 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36029 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/freshrss/3.1.5/templates/common.yaml b/test/freshrss/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/freshrss/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/freshrss/3.1.5/test_values.yaml b/test/freshrss/3.1.5/test_values.yaml new file mode 100644 index 00000000..4c31242e --- /dev/null +++ b/test/freshrss/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for FreshRSS. + +image: + repository: linuxserver/freshrss + pullPolicy: IfNotPresent + tag: version-1.18.0 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/freshrss/3.1.5/values.yaml b/test/freshrss/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/freshrss/item.yaml b/test/freshrss/item.yaml new file mode 100644 index 00000000..b77c41d4 --- /dev/null +++ b/test/freshrss/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true diff --git a/test/gaps/3.1.5/CONFIG.md b/test/gaps/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/gaps/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/gaps/3.1.5/Chart.lock b/test/gaps/3.1.5/Chart.lock new file mode 100644 index 00000000..f4952b7c --- /dev/null +++ b/test/gaps/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:54.917308943Z" diff --git a/test/gaps/3.1.5/Chart.yaml b/test/gaps/3.1.5/Chart.yaml new file mode 100644 index 00000000..8e4a8f97 --- /dev/null +++ b/test/gaps/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: gaps +version: 3.1.5 +upstream_version: 1.1.1 +appVersion: "auto" +description: Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/gaps +icon: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png +keywords: + - gaps + - plex + - plex-media-server +sources: + - https://github.com/truecharts/apps/tree/master/incubator/gaps + - https://github.com/k8s-at-home/charts/tree/master/charts/gaps + - https://github.com/JasonHHouse/gaps +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/gaps/3.1.5/README.md b/test/gaps/3.1.5/README.md new file mode 100644 index 00000000..c5ab0643 --- /dev/null +++ b/test/gaps/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `gaps` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `gaps` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/gaps/3.1.5/app-readme.md b/test/gaps/3.1.5/app-readme.md new file mode 100644 index 00000000..25aa9e69 --- /dev/null +++ b/test/gaps/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. diff --git a/test/gaps/3.1.5/charts/common-3.5.5.tgz b/test/gaps/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/gaps/3.1.5/ix_values.yaml b/test/gaps/3.1.5/ix_values.yaml new file mode 100644 index 00000000..d1117766 --- /dev/null +++ b/test/gaps/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: housewrecker/gaps + pullPolicy: IfNotPresent + tag: v0.8.8 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/gaps/3.1.5/questions.yaml b/test/gaps/3.1.5/questions.yaml new file mode 100644 index 00000000..7447b505 --- /dev/null +++ b/test/gaps/3.1.5/questions.yaml @@ -0,0 +1,437 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8484 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8484 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36030 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/usr/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/gaps/3.1.5/templates/common.yaml b/test/gaps/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/gaps/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/gaps/3.1.5/test_values.yaml b/test/gaps/3.1.5/test_values.yaml new file mode 100644 index 00000000..ed003b80 --- /dev/null +++ b/test/gaps/3.1.5/test_values.yaml @@ -0,0 +1,26 @@ +# Default values for Gaps. + +image: + repository: housewrecker/gaps + pullPolicy: IfNotPresent + tag: v0.8.8 + +strategy: + type: Recreate + +services: + main: + port: + port: 8484 + +env: {} + # TZ: UTC + +persistence: + data: + enabled: true + mountPath: "/usr/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/gaps/3.1.5/values.yaml b/test/gaps/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/gaps/item.yaml b/test/gaps/item.yaml new file mode 100644 index 00000000..5fe657ea --- /dev/null +++ b/test/gaps/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png diff --git a/test/grocy/3.1.5/CONFIG.md b/test/grocy/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/grocy/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/grocy/3.1.5/Chart.lock b/test/grocy/3.1.5/Chart.lock new file mode 100644 index 00000000..68e5cfd9 --- /dev/null +++ b/test/grocy/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:55.353851311Z" diff --git a/test/grocy/3.1.5/Chart.yaml b/test/grocy/3.1.5/Chart.yaml new file mode 100644 index 00000000..c0b86fc5 --- /dev/null +++ b/test/grocy/3.1.5/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: grocy +version: 3.1.5 +upstream_version: 4.3.1 +appVersion: "auto" +description: ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/grocy +icon: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png +keywords: + - grocy +sources: + - https://github.com/truecharts/apps/tree/master/incubator/grocy + - https://github.com/k8s-at-home/charts/tree/master/charts/grocy + - https://github.com/grocy/grocy +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/grocy/3.1.5/README.md b/test/grocy/3.1.5/README.md new file mode 100644 index 00000000..48ea0db9 --- /dev/null +++ b/test/grocy/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `grocy` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `grocy` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/grocy/3.1.5/app-readme.md b/test/grocy/3.1.5/app-readme.md new file mode 100644 index 00000000..e0fe6314 --- /dev/null +++ b/test/grocy/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home diff --git a/test/grocy/3.1.5/charts/common-3.5.5.tgz b/test/grocy/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/grocy/3.1.5/ix_values.yaml b/test/grocy/3.1.5/ix_values.yaml new file mode 100644 index 00000000..06ee1e3d --- /dev/null +++ b/test/grocy/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/grocy + tag: version-v2.7.1 + pullPolicy: IfNotPresent + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/grocy/3.1.5/questions.yaml b/test/grocy/3.1.5/questions.yaml new file mode 100644 index 00000000..a0354443 --- /dev/null +++ b/test/grocy/3.1.5/questions.yaml @@ -0,0 +1,449 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36031 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/grocy/3.1.5/templates/common.yaml b/test/grocy/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/grocy/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/grocy/3.1.5/test_values.yaml b/test/grocy/3.1.5/test_values.yaml new file mode 100644 index 00000000..a6a2a176 --- /dev/null +++ b/test/grocy/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for grocy. + +image: + repository: linuxserver/grocy + tag: version-v2.7.1 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: + # PUID: + # PGID: + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/grocy/3.1.5/values.yaml b/test/grocy/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/grocy/item.yaml b/test/grocy/item.yaml new file mode 100644 index 00000000..fccd77cd --- /dev/null +++ b/test/grocy/item.yaml @@ -0,0 +1,3 @@ +categories: + - Home-Automation +icon_url: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png diff --git a/test/heimdall/3.1.5/CONFIG.md b/test/heimdall/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/heimdall/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/heimdall/3.1.5/Chart.lock b/test/heimdall/3.1.5/Chart.lock new file mode 100644 index 00000000..cacfa930 --- /dev/null +++ b/test/heimdall/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:55.828605151Z" diff --git a/test/heimdall/3.1.5/Chart.yaml b/test/heimdall/3.1.5/Chart.yaml new file mode 100644 index 00000000..518e04c3 --- /dev/null +++ b/test/heimdall/3.1.5/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: heimdall +version: 3.1.5 +upstream_version: 4.1.1 +appVersion: "auto" +description: An Application dashboard and launcher +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/heimdall +icon: https://i.imgur.com/mM4tcO5.png +keywords: + - heimdall +sources: + - https://github.com/truecharts/apps/tree/master/incubator/heimdall + - https://github.com/k8s-at-home/charts/tree/master/charts/heimdall +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/heimdall/3.1.5/README.md b/test/heimdall/3.1.5/README.md new file mode 100644 index 00000000..d7c114c3 --- /dev/null +++ b/test/heimdall/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +An Application dashboard and launcher + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `heimdall` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `heimdall` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/heimdall/3.1.5/app-readme.md b/test/heimdall/3.1.5/app-readme.md new file mode 100644 index 00000000..3fb24ea7 --- /dev/null +++ b/test/heimdall/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +An Application dashboard and launcher +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +An Application dashboard and launcher diff --git a/test/heimdall/3.1.5/charts/common-3.5.5.tgz b/test/heimdall/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/heimdall/3.1.5/ix_values.yaml b/test/heimdall/3.1.5/ix_values.yaml new file mode 100644 index 00000000..bdcc3ce0 --- /dev/null +++ b/test/heimdall/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/heimdall + tag: version-2.2.2 + pullPolicy: IfNotPresent + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/heimdall/3.1.5/questions.yaml b/test/heimdall/3.1.5/questions.yaml new file mode 100644 index 00000000..58181732 --- /dev/null +++ b/test/heimdall/3.1.5/questions.yaml @@ -0,0 +1,450 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36033 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/heimdall/3.1.5/templates/common.yaml b/test/heimdall/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/heimdall/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/heimdall/3.1.5/test_values.yaml b/test/heimdall/3.1.5/test_values.yaml new file mode 100644 index 00000000..ae76faf7 --- /dev/null +++ b/test/heimdall/3.1.5/test_values.yaml @@ -0,0 +1,39 @@ +# Default values for grocy. + +image: + repository: linuxserver/heimdall + tag: version-2.2.2 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: + # PUID: + # PGID: + +probes: + startup: + enabled: true + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/heimdall/3.1.5/values.yaml b/test/heimdall/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/heimdall/item.yaml b/test/heimdall/item.yaml new file mode 100644 index 00000000..6caccc75 --- /dev/null +++ b/test/heimdall/item.yaml @@ -0,0 +1,3 @@ +categories: + - organizers +icon_url: https://i.imgur.com/mM4tcO5.png diff --git a/test/lazylibrarian/3.1.5/CONFIG.md b/test/lazylibrarian/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/lazylibrarian/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/lazylibrarian/3.1.5/Chart.lock b/test/lazylibrarian/3.1.5/Chart.lock new file mode 100644 index 00000000..65292a03 --- /dev/null +++ b/test/lazylibrarian/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:56.313756383Z" diff --git a/test/lazylibrarian/3.1.5/Chart.yaml b/test/lazylibrarian/3.1.5/Chart.yaml new file mode 100644 index 00000000..94eca5a2 --- /dev/null +++ b/test/lazylibrarian/3.1.5/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: lazylibrarian +version: 3.1.5 +upstream_version: 2.1.0 +appVersion: "latest" +description: Get all your books, like series with Sonarr... +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian +icon: https://lazylibrarian.gitlab.io/logo.svg +keywords: + - lazylibrarian + - ebooks +sources: + - https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian + - https://github.com/k8s-at-home/charts/tree/master/charts/lazylibrarian + - https://gitlab.com/LazyLibrarian/LazyLibrarian.git + - https://lazylibrarian.gitlab.io +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/test/lazylibrarian/3.1.5/README.md b/test/lazylibrarian/3.1.5/README.md new file mode 100644 index 00000000..56385ef9 --- /dev/null +++ b/test/lazylibrarian/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Get all your books, like series with Sonarr... + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `lazylibrarian` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `lazylibrarian` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/lazylibrarian/3.1.5/app-readme.md b/test/lazylibrarian/3.1.5/app-readme.md new file mode 100644 index 00000000..c67c1844 --- /dev/null +++ b/test/lazylibrarian/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Get all your books, like series with Sonarr... +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Get all your books, like series with Sonarr... diff --git a/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz b/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 zcmV+(K;ge1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{d)qeBFuFhUufR*EZ|!^`CHa=F&SuYg?X>ktSS@AO^De_{(B8oFEQ@+j9Nc;s7Jfe^;z?e{QNpmEJ z5A&vEhK69udB%pl-URb$J_;i;>v5W+NW%1Bma!hE2=!)=aYTD+1bR3UHJGy3*Vo~M zkV%4Mc|3y?#CjtN(-^0dp2|wdg!BdtHZ&J%{X7m<`x zk|c;;N(5ygZwp)?4q%!R4i#3C0zS17_bgPsq7Dn`QCWHjZf-Ts1ddR07j!?!f)bNQ zQI_BcvLP6Fj8n+bWHIyr*xCZ$5(-WVtn3+>!vx1b%?`<%w}4dbcA&=)o#O}{MG?tU zE*TCkG8Ex4Mhsj}5uYLoAkc6CDnP)dBu`>6LO^jo_JICt2*xmBl54=K4sZfs9E<-5 zdMfxlU=uA#6Xh?bNba+MjGIacWI02jggqUDlyJag`(sTEz)Wt)&j3`2Far~mA~C*V zkTaZ4Bx1u&z|kyARHv(*TX5Aw>Aa-re-FXC%VW>m+5+z(#c-4ePGLSZ!%2`Zreszi zW6uEk2xnP>M4=xAC_%q_Ry&fIr$fLp z6on~?k>G;tOodENJ|SVIV?22cGg)4hHd33&31%=0M1q87VyWRZP?fB}ye)8?Gfrk8 zqnJ?47a&R?V^T1W@pz0V5`$NaP{9N+TBy+-O;MaDh1T*v6M6+^@CpHzQv?q z`z@x7i%IgmD(YD%%;F-(;E7%-Cy0X)WGEJEon2i?Tv5%?sYI^Ra*KrtI61p8CD=3F z^*J>QL>d#$^nMIxZ~-V{B$*4QrYs@kD$f9BOiUq?0!C&Cyej5}z?)|*RFoV`)N1(X z4c?5UK#wL_n@$62Y7T)vkPH0FRLqxNjG6eaBu=krf;2J)*7O4NVv>uor5-r_!OCBZ%a}z6C0;Bze5kn=3FSK zA8>lblnNzhk?sW5$_o_baxxv0l%tPaA`}_tYHu_7I$JCSG*6G%8A;y~!Zli*_>Lhu z1P6!Tn1t^r$upBOZv1&X74yUlB>#;>`x>(u#NR*zK(mm9N(Q_PP^ zq1s9*0LC#^!?l{TwFS;886j4TT*+TAlZk>C37(@AG5I$DitTa16e;5f*+ED(a+9Vx z0(dNE>NRFlk*1ddkwyWzP79o}YKcXyJf#dE@rrF+lvRteX*rX;F#C>XjS+tw%%MSa zI@T*kf+Dejo7&VCFG*KbOi2a1=5G_4j1*q_D2)$NAD1! zZ}L2Q$nMZ6AHFke#1GpQb9I%__-v*9f(T8 zbo3=jtx`#*2w2;;%n8eSPR9;nrbjhKu^vMbQ<~34h>Gl7h+SBzn8k)>4=kKAj$jPP zxU57|70SBhKVlY8)zN|(v8+bvFr*V zb56+|#|Xf5VZk~2|Me6{Qz@~I#8Uffjwy;mH65Eus|O@e1}sctI(+6twFr;-;JX6hSlubA~}72eYG?;;f(a7XRh;n5C^-a=Nsp}0L=AEhv&yf=?@GG3gU1~>ITG;HB+C?Ng4t&$ssZG74xb4n2&Bjn# z9)=*D;PhiFFi%(jBiUN985*Lk-d71iyDpSfp{|OAA&`ewfi@V035j4*zyOd*BTUcR zvPPcfc`+}WC#EwqeVAcQSR)U*GoV}RtBrTt-l^%L~D6`->ouob0feH{H9{Q|4eU~+PuO*yhz~;M`AsmW6>EnomlwtR8s-A ztxaJ^p3A7J(mY9?ft1v$Q(`|ZS|nyXe+Hr{A%$JK*knxYh=u@cPqJM=QgHO+g=hs# zV@PA5g;0syA9hB(=ULU9e1ot>hb2|)v(kC<^m zUz9*RdnSQ|Adx|))C${RfBybht@H+~GH)vk#{xlNqS9nJnM0{f1+peXc0STpT{1%f z%SU1oD4{^wonDg|4Z&Lk;~y#J=uH|a%nbhr4Z+|$?C5h^m6Pog!fQ!%Mp7_E$qeMF zkYQnxC^T0%D^dz;q#*3roIn9I%lP61Q!rQKSEw^nAszeXqpFiA>jS@gfmj$7xC zL1?Ke_LNekZK+31oSM-{CBGI$b)KS7^7_&oR_Mj!ofhq_Lp;$EbFPxcc#h*7CSs~w zDJ2!bXeuRsA+SklOPMppyjC)UMRk#A_nYr@oLY&?o+~kqV04vdHJny*F;4gtU8uj; zsBQN@zZUr0JwrS=eydUBNp0hqxo6Z7!&TtKVsR0@OI5--iX_maqA90$7gfD?H(gLo83 z0)lJIr}EDLDzbaBe{ePg{@|~>;o$I_a1ajqeZ|*;Dz(1^z&Be;L}tE8yS}~-opg^P z<20jo;va>+lEWlf0E&djh|*Z@mzD{pv|8!1Qn}*2FIXH+#qefoV`PBlsaT6GtGhl?OEBjNl6|1bcm`M=O-0qO zaf(H6gl3tINwLzJR#?UIRJBwoW@C~hr$`KPNEgp!%PE?X zxw1(|IZYN|M4{x$m?H|lE?N9_C{fO^5d)$uAA&)@KT}f;%?Mo#!C?2B*H|{}*Br4f zu-?{|<#uIGm?O_Se|LJK%KDu}{1b)B2>w9DTQ7%~Lh|Vx$Y8sgXf*6T0 zs~0pygmt*mqL-Abshujur&=(4Eu;8_9Nt{Hnx0xXF{4@^8jHovU!MqTE%SRej^$$c@B%9C>G6{PHk z#t|y?p7w5Uy_=gr>sEzP1}2FQg4n`!j5ZXXjNUtcW-%B zCDfg3vXl)UEUU}`Y^=^@XIodXHe#2UB|E_vLX|w>fJx_qTD=Ifa;t7C>)9>*((Bdc zd)TkO{}+?%!K8o{`~P15aJRDmAM8Cp-0c64@yY%F2OObPY}Rrgm%H9k2BRqgI_DWM z_Tk;Iuk4S$&hmHuFHfkIGq{k-an6uAH%$;gABD~jq!ZFCOR&&qmCnjb?4kEBjev}# zX-ufg*}_=%G!%ebokmVM&-4``D5(qyo%9j~#d<%S9=|-hcp2=5eb0NBCWx`(G!l#! z=1h8&AdtXoKq!C{isZSZp!1qyj?>9Az{r?iLyEi@Gfwd+=MIAmRhR)AfTRGXz(2YG zrx!l>=h4OK#WU~6)64JQyt@QH9=&~gbar|A@&deh3y$BMot$2tzB#)9Z@vXbXa54P zPR~xBnR6QSF_XtvgaRyBhvLw?K**`w2x|K5JOT+!CpnxTFd=h9Qz4L9tGkevJgIc+ zBimYYLeKm8;{4?Q4fOBeRO|zIj1e8`F(DZHv*%qFeT=0i7{f85ii;xzW+awp`NrYY z(#X##`2|H>OMqf`={;50%pxSuqmVS5h_a(3M@phG%`H6S0T~Hg0uFL{h;Mwv#TYBR z1#Bs{UGlV~3bE7KH{%*M&j@C4gcHm$Vr9{=ETv_#D|tFsQ0&bRheF>T7JlCi$dyse zxQZ9jojxdP6;)KeD`)K6vW=X1b%{vbj<5ka`4^le?TCapP)I*5SZ$Yl32Pswb*Raz z$M^;@WBpW?X~?7L51n`tnvy>>u;@_LXNI3fZuL_m``kMYhB*zbY;ET^Wg&;B)|sG{ zeTRk>71+L2O}NTV6U}Pijz!;>-mx~{Lw*hNU!li6lmNI&{@bnDe+~|wKi|lIkMV8f zzm5F&MdiP{h=0Wj^|11vWx!fn04x{HHVLr2AG;9&?;!$~w|8%DiW*H~3qj_VugbRX z{H{U3M*7@HpMSisF8>*C#)mrtTrU3&1_!&<_zwsD=eryE?=e2P{l1kad1|}W{<6i+ zYKu;CH-9AbY%mG2p`f`qu~Wq;OeY9D5hb31C&oW~_@Y=}wJ~ z6;43DcIAvqVl@WsnBgEWX=QooK~X7+$3g(y1}U=WuqxUC+jW#X783hJa9bV;?lhbU zTC{3piX%3~64Zk2JyjR0%fr?RDm<25zAe-O7j0O&Tkq(`NncK1j2FK`zozShphZ+z zq0ldJ`5KMersC|%YrzNnH*&Bmgg)4gam0aNj6Ao(I&-xfb)|{&{>nP-5CwdF^`NZ@ ztE(*r$vRb=LO$?YtFG29hb8*8vDyCR@wpnCZ2<31B)}2~!H3}VZFMv>3J?jDi-<<^ zmgF4y;7P3=3r*Ad-L%43n3jUuL#1I|>9S*N>)JknUvt6{*!j%6$9l7Nvw3{}&1187 z{4w_q(6Du&kLsqbzGZu-{iBM*+C3^+OE-@S?89#z)e1h-#!+R*?`zwrmw%zyF$Vru z^Wdww4}8-?du6}FcC*<|HrvVXX*;?5N^UBwEDd@s-|SiKd)DvOL|wQ4X7lKg?|&TZ zKCj;Y*d1){e>}>!Isf0B|9|=OfBOKUjLPu7yfXd(#}P0|R7?PU$ytvsE4~D{LQC8O z$54QWt9&fg!~iicgjeF;UG&INQK{!1}+n^2uhT+Dt+v05n6OM7l3oAAQ7s+s z2mRysC>sUmoSt?pFw0I2Q`_daGA+?Nrsi zHdb#VR^6xO1MLOn*0PQ#lv~Bw1NlVNU4`76nDF5on0}k9L+kv1KnIXj{=a+swfkSY z`+J-D{}^9Q{4&7s~B zzT7i})eXd~(J*XGPo{)rs#VsccCUu@%ohgof6`TUUQLN5=CNk`uH?}PNx6&wq+;wV z0Z(WZ6^3aq8{HC%d7#PH!=d4Rz8-FKK9_lw6?QJCzV7C}5<#<+*e*1B^+8>qAFa+$ z)`@yCLf1MFp|IgJq=A6yuy@K9!~P!U6ZLWHP*?Zg>2mr|ABam&A69_39a?{>d34tk z@Zay8>O8A{o5I#_@N1C&%6JzKBm%CG|MvIyYyQ8_4>$M!ALZNFe>e8uFK_={@BWwd zzTSgg0COV!ta}5@UN&2gV*T05HWe|0u#EXBC$?pNnp9`5E>F5gVN_)Xsb zaw5TZ9}AmnW9`?*0B8(4+9ot*Rc z$BpDj;2Ir9d6W=Vz~d649w}YSg)!JhzXCt->qU3K?XB+@E;YBerXL*qB_*{%+pIPG zSrmwx{I9jIhx7wkCI9#LYVjWq_xl_9|1rLe{J)X^f4lNOtVsVbNmlrWJcJ(L9Qy|v z=E=OUOg8y$7%)5rQ^;PS1qiElv7jQN+PO7cg`G`T`vQa(0%MW0jC0D*V;-GpW9Dl4 zu}-q7%(tKWwh1pPcwt~e8?-=a;;%O0HKxW!tQ8OLBFC=HaznA&uT-qY!BIVmZq&Vs zs_bJXLW`Q6=QxVgZs)^NKiMs2HxrJP*yJe?rXj#aSFDo)`RldECY+IwDF5OnUxhC8;3$`s0dF2Y^ zgp=07Z5yKP>dXN?{^-6R;#b~i-)S|P2Y+;-ck>lryZmpCwC}G2tdRc?2X+6igWZk) z$D@23`F|t-|Gwn^s)N!)O8mu<^Af4Q@Q;(eP4|`iZReb|Wq!~0oLEor_m+wN4I;W- zNnK30b61P%3gJ8|Zq&}L%XZc!THk79Mkqhm57pXb)XUB$!|ILVN?;?PzS+3566RtR zkiK15s$e#uFLZuYFKS08?;^J0l9_>Pom}Q-+oI{%z4Z_dw3ghPRKf@v{iBk<{G6rX zplB)2bU*1zIfZD9ugs;%(0z)|NHubep^QaSB-kR~t!q8pTB>8McZj7Mvn__FXpxx) ze(?abzXP`A<&GkAM~mw9N8>Bpk4%<=FMjI7iAJEC8bV6ZmC{UI3DBZT}o8q9OcbB86SH9e1POguZBc2)* zzBQxgS~M}c{toyAIK?xo;k!*|-gi9G-TyP4sQtdamHPh&IhgKc1z2_eqdyo_^#AA2 z_YOAt|6_a`{ePqXe|i1?ZTXa>ypt`K9Ccl&xQTEs)1(ogVgl%_)|-9NK6#Q@hcD!% zB|F2?`}Lo-QZK+PXZ$G3#IB~(Yz?J;2mFJrxmKIzSOD5+>hBT?dRROjRTcWk>0oC%R^?_`watoAn{nz9hI({;S^q-5nerZr=ZSlyAwd zSqlPI+HUV+ac(xJI|gC7fDK=OZ~BD^R1ZVzlHwCn@}8D=JF5BJEbm{&dR}nLu)j2$ zlxWJW$H8usUMW^?9!_u6(4QO0#@ajXWQ4ZeZSG-!ZgaRnzk=;5?bRrqLRfi7>+zku zbk_3IF=k{f+|^CvWkf?=IIv`xcPHn%%0ggj9R&>nR10iXma}WTJpODoDux6>&^-EH zrm=j?o_&e&_pp7Qj~G&-d>|AeZ9nwP4Fa4s@#<1?vXEnqGN3zX1%o$&;h*JOE&tvB zJ)q_C-(b)`*ssWc{oVe?|Nl|GwcRhO?*l!g`-St?k1hUvPD!)*j82< zIdn}y)aGYh5Vdn#1W`9iMZtwKK8}n{L3rcN;+lr)JXMiA8jx-`kyD1fu(4W#t6PEg z8Ym5OmZ{BhvS=>VVEFNkwCq|_^a1)k*i&srqvKJnHH~dqRtuOW@i zM6CH6J7dQeC4#XkV!UJ4)mv6YeKJZ zItj17k!+q1{6-fLjiI=cp@6EXPQN!7sh#Rnk9ewXjb+4rhLSPElN80$gRBWe2jw^J zWJz&5XG)x#;FZ>i+@c@!Wga`Pe$TspzysU}WL9Ygs<@XUtv~-!yUy*JMCy+c6u>I% z|5^LmwEUVB%@bt1C^}3jtRdppa5c~5v3Aj}4DzXSH$RX`uGbLcQ+v_q`8H=Nwy=ku z0p%yixRfqv=M;_c#~KBdE)(AfMpr0}hmTKf5ou#sNp3X`xt}zh)KURR^VtZ|qPT0; zvUpLM6Anpds|m0~gVlAlE+k84p*3FbJy16zbTdNN9-&nUwn6ji)MEF&pHD$}y*zC|;_QSgo-T21?ol3a_fR;p-a zHSOgL;-sc;Y%IZl*srtwSH5I*HzV+>`=8IN@n3cayStnBe;(yq+x}}0htFvQ)-R_$ zrX_fZA^4Bwj_?Px0cZ2E@d+Jj0beRuF&88|> z#djy?ZMR9S7cU!&ULK!2{u*@%yAfZ=fct=PZHxpjt*qzD`dUV$X|Ta6yN+N)%iUAA za|9wYvkc-TN?O*g6kQ`cnerhR^c${XHukOzMG1K{9fI!(;}>VA+dn`3dB?Mqu!p2c zYA1-!a4LJ_1SN1W1pEDd&7C^{YFNF^6Qy8SRBr!#b0d^zwZuCHi2jZ-oc+85{`)H0b#@5vp zYqt)+tI5BE#ou3HOEs&Y^m%WYZabj;cK<_|!DAw}MvK+rr;4t$V!Rd|$Y9Fq7NZq5 zZ?Mwt-7q%RFmrb>a#xUNkTE``B%e%&U zc@ zb3>WIqs(MJ`p8i#x!s!&Mu@{fCHzkX9%dPnr$9j^0;B!6;?j>$4oxw}q%X>_*PCEI z%|~HGX1ys&^gmgiB)xAA``_H3GcE^?&QCQE3%`e~Aih`hjK8{h4Ln%Nvj%poKXOo( zki`t8YY&~G;AZTs&6=)*r$F=@9X$>2&2$_-ZI8lyrtzcM^;;h~9k|kQ=vX~-x3Sa0 zv4-+0n>ud6*=rHn|T`+>?*FQez zELhdi%V$7SGkT}h`xD*TtUKopHA;T3Rc(hJTD6|vcVfQ%=h1N)ExhAOPDe0WV+nsQ zM)h(Zp{sI~`ykw@azRy?^C_YDKT=#@i;2sMcUkqjvGVxsNmm9&G+u*$f4w*VV1~aPNPG-VwNl3!yPZQxsjbKwm>96>FSw zO5!|{S}4a!0k9YDg?)Xb>`Y;SMsw&HxSrx@3bfHpXoB|J!T!zdtq%a>G>>>rQK-~A zMHXgu-O??9q6zx=8uDlgaLPD>u~62P3wbLI;Pw`bPy};^6lSrW8V&XeEr1P+Q}DOF za8JzBJmG=@0D+HFj_4RhNOELM@-+4VqLk3kd;0WJs-6_h$Q;GsdWy6I0^~3uldl<= z;S|sEw5d0qKJ6&c<(a%oYtibAWs5WZ&G!7Ke(=|S?>znK|GWM7)7#r8KG=5H13m#x zE;tpOuugvE@L4w69?t%=%>E}Cd%w_c@>>=EV}G~${{P`&e|Ka5dyH>m|J&IAzPSAl z%<*g}9}^b{`65FvW@27OQ#1s6S(a{U@<>W8_-cL6vk8T*@lUWy9({U$%N5{QMxV=(C?L7_xh1YMPRuh7B= zeg^q8o$!F{5OTVD3M}W5^O87YDdLuOs8rLh9cu| zR&TfASxeHe1i)?ng*-m0IXqFW0V(`?1>x4vC zh=Nl&Ac{6$NNE^I@5d#BF3XcdfwIcbE5zH@(KmS3p0~SGj!grkes>wD4pnyCm@>Tx zhAlW#9WnMeQeKVDz&N+i1kU|=r-m0|4OStot<&v=PPBER6JrW^!?1X8y z(WpSpRkjQ(lsXk_=jk$vbfbG_%Q46u_y1+`pMKfnv&(<|{rdZldxMSq_ZZ(s{@ciZ zUtIq4j`bZ;^*S7zLV*cJl+^qu8um7Gy-2Kr<{@plf;9%RQWr&Kz7AT|0Mz=Xk$pZd zP=rTWRvvG8Fv}`|ndVkZt$Gp5@%+Yq(yxkT22(geaWGPkauo&`b8E8Zl;3;mU1;L( z#nl=Mf=2q%wg;^hx6PH@#oL;fD zbct654M0>MLmF#Ft>lOX_uH(VNp-Zif~Ml6m?vVXBq>mibfK8T1-nCeWlDp>GzM%Q zxe%+!v=FSIw0)TWIZa}Js&AS6rzY=bfB$>$`Tl-Y{@dTg|9zZqBmZsWzb`KTb=`BFPIpel9vro=01gz+MF)(&Q?{sVq&J>cu4NUS*rC|=PagvDMlTK*T(Mu4o zsa?+BGV)4;v$Dx7*jjZ}t^su7yKMw~l4|2==dQKrEZCv2xI$<_tCPAmfu)r)_=?qH z52u}RwwPJ%fZ*jQw7OT!9OLo^nd)LaUKErR23K{n)|=WIW%FG9U1~ZMWeJQB@c)+& z{15)p);8%gx=Gd9uT`L z^Kq)&)MW!W0TaXl)Ilzkzh79o_0>!sYE4tn;RJD6pnNLb^?3_Y*Xd2C$})jTtazWb zZ9FX%TfTiXZHaBCipu&f$;)*99#RwF4tIFR|Pd!&NOIuw;Tf-4tU zf@O?ACjO9~fkH^p&9+M9S%&B_Wa!&k(c*n!Hv)5|4#$nI4O@9?*#@x*+_i?Y zOYI5x!EeXXsNQ^sxX=sa=mld+W<^j%*@G*4Zh}<6!*3~>N#|2N^R666RP}4EnN>qv z%q-b!uh62>gP{*ZJ&t#6j;as;NTGUR$Pu6V_JGY$csNxAb`4GV?DSC)sR{YkTVF6Wf0Poq=AO+ zGU8sLg%}p1-|Ycccw*S&Zr~2XUBB*NymBBq^%X*ld^+J$xt%@DWmBNYLj+yzQB=!Nl8Sf-qoYND@7{keT^e@ovo{m+D8 z`^^3yyZzngHUE#pgN^?87~e+!+vtB^T>tZ4BRWwnOGpG0ZIRTMw~WnS2NG9#TIyKh zz)-~Ir21lNl~W9Zi|PZu8 zq54XOyqO~^h9jy{Wmo5*`XFUo#Ko3wqK8FIvVzh3r4N?iz;`D>i0H$Q_p#xB>U1x%xVD>PNGE3~Ah1thVq*$(iRvM-xouQPQJj=SIEl+mA@->|m zWzB7JtFSt*c2bmesluq6n}%Y=ZJv^Q4Vdcus~oLMi>ZIE?5=A0T*zvB+O$n5uo?#D z8o%GtB`A%n?7BjWXO>~k?yiQ0UZF)}+uGXG@SJ0NgR&F{nJd}Fugi}1TuLgwD z0B0qdIZ5&vdQI}w#-@$3c4patuv(Y<#6kzsDH);4LoFIn5if7p#MmMibb6wtX+aZ< zM6oeu`7ueyc#=~UdP8HCqDv7*->##rU|IFy=eRxh`~Ozze;JAIYXM&6|Gm50ug3o$ z>>h6PzsLA2={qB_lBH!-!23(z8Hvl&FK4-^T^4S+DciD&>{g6bb#J~U@_m!*Uvc5Z zp)w=!MP0OQ5Ntb=S+9U%B2n3Iz}FH>L3|l57EMu{Cx{mBq1XxCa7+o~XDVi^$hUrW zFK=Wt^LJ}WOHhteR;o2MtWIw6qZMxv&9=Ew76Sh`$r(rVTTB`M5%cNy3e1tvm40}Gr3TI)g*IL)*vXV6#`i&cUN4cshQt4FFxLQ4{hW$~3AyeXy^-~3wyUWs$k{A^iIB#z~ z`}cj895|NiyPQkr@B856Btf)%ozMEYCe}Z_Aohj64)P!6_w)f+W&hthtjT`|yPNp0 zkMeEo{~P=Nm$v`+o_gnEl_^yYb1}(LIXWmDlv}S5$VYpb<9w^ciQZG=K`Wy@NhoRW zgV9vv92LTdiLVgY4Um*r(X{FhJi8%>w2e$i!_V{)eZ5Hi5mNcYr55#K`DQfwRbLeI zg@omU9jl_sn~*kG(D0I^Q95&qN#?6esW>&&Wkl^OoW`dN_$olEuWP?c zwPk(wGtf=-TNJEQQLzyCuf?1Y)5FxbvbBX%ty7U2KFVw3$V8KpX{zRW5j`Fxg_hu} zra-+h?r4?pC3rb(%V7R`OqJubE4?j^ZhxS*@l{e|Zfu$%usX9^=88K>8cNltOEFU# z`sm>Y!=~HYx?NJPuBG%SD)yH|$5U2y7K^zU99h8u`Pa~^4Fm;IEbHbScGp$kdKI{Q z+1~&D@=`t>+?0OdJJ0QB<@@gHjqRXzEwc(&BDCJ0cFQWZSf?K4sJqm=&({omEwaBB zTd9ztv}?N$tRpYmOwJ*lATD2z-mWgbR;JZBdEB*a{IK8TRJqYH5EEIWe%3-#8CzRo zi7W)$1qAqtJ+rdFS8T`7+FU&<52dwse{SBvwi{D2QB5LQ#IRT$8MQLJwK7lic9TQIt|O0G4lkM{9%UCKxn4F@^DMf5blDLky3ef>6$1_B7-b$*Q z-vMEUD3%9@&G?+`*1lU3>-T~E^jGfxwyVhYLzdv@CRUud~j?yxWsaA8gC9GoslL<3{{~YqE(%u44Bq$ZZ zg^}~9bU9Nupe^lFK(l;Q!s;I-E-QECd=%SR#o!muW_EjHBz7XjBb$zRHgh%-^_Zee zwv|9_Tzlc>+}upAxt&+QXw*USu3my0Wdl>*$?Em}w)%gFr{ri_ZP)D@N}6Mu(~dRMmG{)g4E#v8Pm-Xi4psrgJAn$EwK; z)eeJlN|+KbC1Wxp8*9wlORy0Z$f%Kq0M99HH3 z{muE`<9sGEAH`@c!_lMO80tMw^u3TOAvZ#vyjh3hR#B`NIH4#T!a2l=x;1M@*M1}4 z9y05k7+@rc5e@D7+^CFlW!w(IC+WX(q66AkFQXS8J_cS>bc`r}lSyH>xS%hpd4(40 z>W_x+LQ`3tnJq2t{vZT*l=1?5b3}N>=MKT#i|)ztQGz2GGLbml)3rks0yjM7Z->Fa zx9Af?vGrkjw^=2hSMiVHxv1wJ3{)6?s~o&9!@l%twD}(U>$3l=8=2t(&OXcjKiEI0 z#edpA*xT&?kMXTu@=Q$hQucnLlFnMfmDl6w6bjFh-QP7xOd)%P7VW@(sUrJs2t13n z7gnI+K>0D0nXSvIrF;jrLSl|uTxZa7RR_L}(OJqB<|6RVj(u!n^9KD|*WKGiswZFv z_+pzhuQKBI=CR57z`Md}Jk+mMdo#pg3^^P+2P76ZWP{XmfQ@&j%Qp=x9w2;?p&@Wz zbmR&1Ol>@2VWeF>SGCRB{YBfX7tKF`(cwNyBR3j}z;HX2 z0IypAcMog+pL@F-|Bpxc*3kcor3c^?;E%^;Zu^_5ZHiHY>>L(}dhs`Muer_c)Cjgs zc1?;7E$P{s=M7=$E9!yWUiq|v3Hl`0%#Lkb(Y7a=IH@h%y$R(OxtvQybx!@F@=2+Q zbS+zifp4O?SiH^VCW|}jU0n&*Kzec3;h;8d{EzspTK_XbIZQq%+t26m|Jys*t=j(v z{k_fo???HTu4k(AeOG=jqT`4>P><%KGTbwY06duzCf6PRNlIe$0cSq2@9B!H{r$b> zOI}mXGv>mdyO+Q$0*&fmf^OqD`SCg`$mLHmAVd)c;|k6lY#I0RcHpIf&cJ0R^>TBRNqDXT$2C0Kbq?;rvDO)El8Oq2^g>oH7oRL^>R{`|#-z7h2AW%`b`LkFTrM zmv-r2$Y?#IbX85a-c(U2Rm=S#2;BR862e{yN03L;Ua=njKV;NmbTu^I-Ucw|#A!`S}Tymt2g~=@P%L+gs&mB_pI;j$Pt!hU`&ZiRlqd$#n{Xx7txlZ1MB9 zsHGvz(<639(zk?g?R6k4R)gCVlri*WI%TvZ)+D0~8^RALzwE5OjGlbjCHNb|8PEK~?l_v+H z#Y z&n*s{%?;_^d2KG7>Z>?%TD+`=)N-9V)ptkN&gLeq{#|wc{0#S?|E!;u|3k6G<4H;= zdiXk4$p8I=y~_Qs!S3PnjsNGPd|Tiga*n8aOJ9uua6LsS809#L@S2*h zEB2mIGhm(o)x!6ORkVg+&m8)(p#xIORNJk?QyR1s;aD6brP z-qWYwlNri{#`p9o_?xMFg84Kbg%O$cIL(m?iPwW!#(JD0)SE%Z5$!1s{oV7nw!mwM zjn3(LpMXA~e>sCV0iVD-nt)H<9gyC8!cmMb)q5%m31-{0W@sSa{+u7Ezq3*KfQ}k^=Rw`H%CL{N;TD z`XMx-gna@(9~^%3vm);k&~K|X9`KNz3Kvn_| zbbxIKla3T5M$(`~<@90V}uQ-4*lL8VwqQnaj)Q4c>MpG*&IQk?37Q5g}}=dtA&TVqp);i0kcr1OMjt;VKeIqEMhE{`YgHn2?L`oI!v zc!z@Pa@mx#BVe!1WCw{p_|lvj?C$LjIu|XYtXec&9-nuv+==RX=XUVgFxPMJoGztg z-enW1l({DK3a673Ox+4=^~|%hJy1@2Ric>kqWTsmZlhA1G(mS<(-i2c%|k#Xc#cxU zm<&4D0X|jFCaEnZM9M{`1L2i&-J3x&luGvIm8G(!A{$7;=}7VC+~iE*@&;cMrcMhLSJKwCOM?>eY?MksBHjTeZwH1k{Rk1 zB|71&_5UF3hr9jVe*c@@=N1O@pi|p)rjwR+$vhU_l4)Y99If6xOW+@tZhDo-VD3CY zSwa>whuh`LZ%tc(e1@$AZg>-|WzSx+Segf78+oGN(QPkUzIEFI({y^>LZmsVE@G0j zY)bayV~teX@87j8!G#E3Y-^_~r48vCGJ97Ey^B1)OccMP;C){)yPHtGQuwVr)z=8q zWjHwR#?xE zqZ-5B zN*BvX6aG%-5%qa3a5~x$)bVqw<~9{{&hT+W@)&0BqX>F#rGn literal 0 HcmV?d00001 diff --git a/test/lazylibrarian/3.1.5/ix_values.yaml b/test/lazylibrarian/3.1.5/ix_values.yaml new file mode 100644 index 00000000..553b98db --- /dev/null +++ b/test/lazylibrarian/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/lazylibrarian + pullPolicy: IfNotPresent + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/lazylibrarian/3.1.5/questions.yaml b/test/lazylibrarian/3.1.5/questions.yaml new file mode 100644 index 00000000..248cf4c9 --- /dev/null +++ b/test/lazylibrarian/3.1.5/questions.yaml @@ -0,0 +1,451 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5299 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 5299 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36033 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/lazylibrarian/3.1.5/templates/common.yaml b/test/lazylibrarian/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/lazylibrarian/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/lazylibrarian/3.1.5/test_values.yaml b/test/lazylibrarian/3.1.5/test_values.yaml new file mode 100644 index 00000000..23d51564 --- /dev/null +++ b/test/lazylibrarian/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for LazyLibrarian. + +image: + repository: linuxserver/lazylibrarian + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 5299 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/lazylibrarian/3.1.5/values.yaml b/test/lazylibrarian/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/lazylibrarian/item.yaml b/test/lazylibrarian/item.yaml new file mode 100644 index 00000000..9c98c1c5 --- /dev/null +++ b/test/lazylibrarian/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://lazylibrarian.gitlab.io/logo.svg diff --git a/test/lychee/3.1.5/CONFIG.md b/test/lychee/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/lychee/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/lychee/3.1.5/Chart.lock b/test/lychee/3.1.5/Chart.lock new file mode 100644 index 00000000..73850d9b --- /dev/null +++ b/test/lychee/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:56.76465654Z" diff --git a/test/lychee/3.1.5/Chart.yaml b/test/lychee/3.1.5/Chart.yaml new file mode 100644 index 00000000..32e24374 --- /dev/null +++ b/test/lychee/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: lychee +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: Lychee is a free photo-management tool, which runs on your server or web-space +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/lychee +icon: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true +keywords: + - lychee + - photo + - pictures +sources: + - https://github.com/truecharts/apps/tree/master/incubator/lychee + - https://github.com/k8s-at-home/charts/tree/master/charts/lychee + - https://github.com/LycheeOrg/Lychee + - https://hub.docker.com/r/lycheeorg/lychee +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/lychee/3.1.5/README.md b/test/lychee/3.1.5/README.md new file mode 100644 index 00000000..27772b14 --- /dev/null +++ b/test/lychee/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Lychee is a free photo-management tool, which runs on your server or web-space + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `lychee` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `lychee` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/lychee/3.1.5/app-readme.md b/test/lychee/3.1.5/app-readme.md new file mode 100644 index 00000000..b420d9b3 --- /dev/null +++ b/test/lychee/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Lychee is a free photo-management tool, which runs on your server or web-space +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Lychee is a free photo-management tool, which runs on your server or web-space diff --git a/test/lychee/3.1.5/charts/common-3.5.5.tgz b/test/lychee/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 zcmV+(K;ge1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{d)qeBFuFhUufR*EZ|!^`CHa=F&SuYg?X>ktSS@AO^De_{(B8oFEQ@+j9Nc;s7Jfe^;z?e{QNpmEJ z5A&vEhK69udB%pl-URb$J_;i;>v5W+NW%1Bma!hE2=!)=aYTD+1bR3UHJGy3*Vo~M zkV%4Mc|3y?#CjtN(-^0dp2|wdg!BdtHZ&J%{X7m<`x zk|c;;N(5ygZwp)?4q%!R4i#3C0zS17_bgPsq7Dn`QCWHjZf-Ts1ddR07j!?!f)bNQ zQI_BcvLP6Fj8n+bWHIyr*xCZ$5(-WVtn3+>!vx1b%?`<%w}4dbcA&=)o#O}{MG?tU zE*TCkG8Ex4Mhsj}5uYLoAkc6CDnP)dBu`>6LO^jo_JICt2*xmBl54=K4sZfs9E<-5 zdMfxlU=uA#6Xh?bNba+MjGIacWI02jggqUDlyJag`(sTEz)Wt)&j3`2Far~mA~C*V zkTaZ4Bx1u&z|kyARHv(*TX5Aw>Aa-re-FXC%VW>m+5+z(#c-4ePGLSZ!%2`Zreszi zW6uEk2xnP>M4=xAC_%q_Ry&fIr$fLp z6on~?k>G;tOodENJ|SVIV?22cGg)4hHd33&31%=0M1q87VyWRZP?fB}ye)8?Gfrk8 zqnJ?47a&R?V^T1W@pz0V5`$NaP{9N+TBy+-O;MaDh1T*v6M6+^@CpHzQv?q z`z@x7i%IgmD(YD%%;F-(;E7%-Cy0X)WGEJEon2i?Tv5%?sYI^Ra*KrtI61p8CD=3F z^*J>QL>d#$^nMIxZ~-V{B$*4QrYs@kD$f9BOiUq?0!C&Cyej5}z?)|*RFoV`)N1(X z4c?5UK#wL_n@$62Y7T)vkPH0FRLqxNjG6eaBu=krf;2J)*7O4NVv>uor5-r_!OCBZ%a}z6C0;Bze5kn=3FSK zA8>lblnNzhk?sW5$_o_baxxv0l%tPaA`}_tYHu_7I$JCSG*6G%8A;y~!Zli*_>Lhu z1P6!Tn1t^r$upBOZv1&X74yUlB>#;>`x>(u#NR*zK(mm9N(Q_PP^ zq1s9*0LC#^!?l{TwFS;886j4TT*+TAlZk>C37(@AG5I$DitTa16e;5f*+ED(a+9Vx z0(dNE>NRFlk*1ddkwyWzP79o}YKcXyJf#dE@rrF+lvRteX*rX;F#C>XjS+tw%%MSa zI@T*kf+Dejo7&VCFG*KbOi2a1=5G_4j1*q_D2)$NAD1! zZ}L2Q$nMZ6AHFke#1GpQb9I%__-v*9f(T8 zbo3=jtx`#*2w2;;%n8eSPR9;nrbjhKu^vMbQ<~34h>Gl7h+SBzn8k)>4=kKAj$jPP zxU57|70SBhKVlY8)zN|(v8+bvFr*V zb56+|#|Xf5VZk~2|Me6{Qz@~I#8Uffjwy;mH65Eus|O@e1}sctI(+6twFr;-;JX6hSlubA~}72eYG?;;f(a7XRh;n5C^-a=Nsp}0L=AEhv&yf=?@GG3gU1~>ITG;HB+C?Ng4t&$ssZG74xb4n2&Bjn# z9)=*D;PhiFFi%(jBiUN985*Lk-d71iyDpSfp{|OAA&`ewfi@V035j4*zyOd*BTUcR zvPPcfc`+}WC#EwqeVAcQSR)U*GoV}RtBrTt-l^%L~D6`->ouob0feH{H9{Q|4eU~+PuO*yhz~;M`AsmW6>EnomlwtR8s-A ztxaJ^p3A7J(mY9?ft1v$Q(`|ZS|nyXe+Hr{A%$JK*knxYh=u@cPqJM=QgHO+g=hs# zV@PA5g;0syA9hB(=ULU9e1ot>hb2|)v(kC<^m zUz9*RdnSQ|Adx|))C${RfBybht@H+~GH)vk#{xlNqS9nJnM0{f1+peXc0STpT{1%f z%SU1oD4{^wonDg|4Z&Lk;~y#J=uH|a%nbhr4Z+|$?C5h^m6Pog!fQ!%Mp7_E$qeMF zkYQnxC^T0%D^dz;q#*3roIn9I%lP61Q!rQKSEw^nAszeXqpFiA>jS@gfmj$7xC zL1?Ke_LNekZK+31oSM-{CBGI$b)KS7^7_&oR_Mj!ofhq_Lp;$EbFPxcc#h*7CSs~w zDJ2!bXeuRsA+SklOPMppyjC)UMRk#A_nYr@oLY&?o+~kqV04vdHJny*F;4gtU8uj; zsBQN@zZUr0JwrS=eydUBNp0hqxo6Z7!&TtKVsR0@OI5--iX_maqA90$7gfD?H(gLo83 z0)lJIr}EDLDzbaBe{ePg{@|~>;o$I_a1ajqeZ|*;Dz(1^z&Be;L}tE8yS}~-opg^P z<20jo;va>+lEWlf0E&djh|*Z@mzD{pv|8!1Qn}*2FIXH+#qefoV`PBlsaT6GtGhl?OEBjNl6|1bcm`M=O-0qO zaf(H6gl3tINwLzJR#?UIRJBwoW@C~hr$`KPNEgp!%PE?X zxw1(|IZYN|M4{x$m?H|lE?N9_C{fO^5d)$uAA&)@KT}f;%?Mo#!C?2B*H|{}*Br4f zu-?{|<#uIGm?O_Se|LJK%KDu}{1b)B2>w9DTQ7%~Lh|Vx$Y8sgXf*6T0 zs~0pygmt*mqL-Abshujur&=(4Eu;8_9Nt{Hnx0xXF{4@^8jHovU!MqTE%SRej^$$c@B%9C>G6{PHk z#t|y?p7w5Uy_=gr>sEzP1}2FQg4n`!j5ZXXjNUtcW-%B zCDfg3vXl)UEUU}`Y^=^@XIodXHe#2UB|E_vLX|w>fJx_qTD=Ifa;t7C>)9>*((Bdc zd)TkO{}+?%!K8o{`~P15aJRDmAM8Cp-0c64@yY%F2OObPY}Rrgm%H9k2BRqgI_DWM z_Tk;Iuk4S$&hmHuFHfkIGq{k-an6uAH%$;gABD~jq!ZFCOR&&qmCnjb?4kEBjev}# zX-ufg*}_=%G!%ebokmVM&-4``D5(qyo%9j~#d<%S9=|-hcp2=5eb0NBCWx`(G!l#! z=1h8&AdtXoKq!C{isZSZp!1qyj?>9Az{r?iLyEi@Gfwd+=MIAmRhR)AfTRGXz(2YG zrx!l>=h4OK#WU~6)64JQyt@QH9=&~gbar|A@&deh3y$BMot$2tzB#)9Z@vXbXa54P zPR~xBnR6QSF_XtvgaRyBhvLw?K**`w2x|K5JOT+!CpnxTFd=h9Qz4L9tGkevJgIc+ zBimYYLeKm8;{4?Q4fOBeRO|zIj1e8`F(DZHv*%qFeT=0i7{f85ii;xzW+awp`NrYY z(#X##`2|H>OMqf`={;50%pxSuqmVS5h_a(3M@phG%`H6S0T~Hg0uFL{h;Mwv#TYBR z1#Bs{UGlV~3bE7KH{%*M&j@C4gcHm$Vr9{=ETv_#D|tFsQ0&bRheF>T7JlCi$dyse zxQZ9jojxdP6;)KeD`)K6vW=X1b%{vbj<5ka`4^le?TCapP)I*5SZ$Yl32Pswb*Raz z$M^;@WBpW?X~?7L51n`tnvy>>u;@_LXNI3fZuL_m``kMYhB*zbY;ET^Wg&;B)|sG{ zeTRk>71+L2O}NTV6U}Pijz!;>-mx~{Lw*hNU!li6lmNI&{@bnDe+~|wKi|lIkMV8f zzm5F&MdiP{h=0Wj^|11vWx!fn04x{HHVLr2AG;9&?;!$~w|8%DiW*H~3qj_VugbRX z{H{U3M*7@HpMSisF8>*C#)mrtTrU3&1_!&<_zwsD=eryE?=e2P{l1kad1|}W{<6i+ zYKu;CH-9AbY%mG2p`f`qu~Wq;OeY9D5hb31C&oW~_@Y=}wJ~ z6;43DcIAvqVl@WsnBgEWX=QooK~X7+$3g(y1}U=WuqxUC+jW#X783hJa9bV;?lhbU zTC{3piX%3~64Zk2JyjR0%fr?RDm<25zAe-O7j0O&Tkq(`NncK1j2FK`zozShphZ+z zq0ldJ`5KMersC|%YrzNnH*&Bmgg)4gam0aNj6Ao(I&-xfb)|{&{>nP-5CwdF^`NZ@ ztE(*r$vRb=LO$?YtFG29hb8*8vDyCR@wpnCZ2<31B)}2~!H3}VZFMv>3J?jDi-<<^ zmgF4y;7P3=3r*Ad-L%43n3jUuL#1I|>9S*N>)JknUvt6{*!j%6$9l7Nvw3{}&1187 z{4w_q(6Du&kLsqbzGZu-{iBM*+C3^+OE-@S?89#z)e1h-#!+R*?`zwrmw%zyF$Vru z^Wdww4}8-?du6}FcC*<|HrvVXX*;?5N^UBwEDd@s-|SiKd)DvOL|wQ4X7lKg?|&TZ zKCj;Y*d1){e>}>!Isf0B|9|=OfBOKUjLPu7yfXd(#}P0|R7?PU$ytvsE4~D{LQC8O z$54QWt9&fg!~iicgjeF;UG&INQK{!1}+n^2uhT+Dt+v05n6OM7l3oAAQ7s+s z2mRysC>sUmoSt?pFw0I2Q`_daGA+?Nrsi zHdb#VR^6xO1MLOn*0PQ#lv~Bw1NlVNU4`76nDF5on0}k9L+kv1KnIXj{=a+swfkSY z`+J-D{}^9Q{4&7s~B zzT7i})eXd~(J*XGPo{)rs#VsccCUu@%ohgof6`TUUQLN5=CNk`uH?}PNx6&wq+;wV z0Z(WZ6^3aq8{HC%d7#PH!=d4Rz8-FKK9_lw6?QJCzV7C}5<#<+*e*1B^+8>qAFa+$ z)`@yCLf1MFp|IgJq=A6yuy@K9!~P!U6ZLWHP*?Zg>2mr|ABam&A69_39a?{>d34tk z@Zay8>O8A{o5I#_@N1C&%6JzKBm%CG|MvIyYyQ8_4>$M!ALZNFe>e8uFK_={@BWwd zzTSgg0COV!ta}5@UN&2gV*T05HWe|0u#EXBC$?pNnp9`5E>F5gVN_)Xsb zaw5TZ9}AmnW9`?*0B8(4+9ot*Rc z$BpDj;2Ir9d6W=Vz~d649w}YSg)!JhzXCt->qU3K?XB+@E;YBerXL*qB_*{%+pIPG zSrmwx{I9jIhx7wkCI9#LYVjWq_xl_9|1rLe{J)X^f4lNOtVsVbNmlrWJcJ(L9Qy|v z=E=OUOg8y$7%)5rQ^;PS1qiElv7jQN+PO7cg`G`T`vQa(0%MW0jC0D*V;-GpW9Dl4 zu}-q7%(tKWwh1pPcwt~e8?-=a;;%O0HKxW!tQ8OLBFC=HaznA&uT-qY!BIVmZq&Vs zs_bJXLW`Q6=QxVgZs)^NKiMs2HxrJP*yJe?rXj#aSFDo)`RldECY+IwDF5OnUxhC8;3$`s0dF2Y^ zgp=07Z5yKP>dXN?{^-6R;#b~i-)S|P2Y+;-ck>lryZmpCwC}G2tdRc?2X+6igWZk) z$D@23`F|t-|Gwn^s)N!)O8mu<^Af4Q@Q;(eP4|`iZReb|Wq!~0oLEor_m+wN4I;W- zNnK30b61P%3gJ8|Zq&}L%XZc!THk79Mkqhm57pXb)XUB$!|ILVN?;?PzS+3566RtR zkiK15s$e#uFLZuYFKS08?;^J0l9_>Pom}Q-+oI{%z4Z_dw3ghPRKf@v{iBk<{G6rX zplB)2bU*1zIfZD9ugs;%(0z)|NHubep^QaSB-kR~t!q8pTB>8McZj7Mvn__FXpxx) ze(?abzXP`A<&GkAM~mw9N8>Bpk4%<=FMjI7iAJEC8bV6ZmC{UI3DBZT}o8q9OcbB86SH9e1POguZBc2)* zzBQxgS~M}c{toyAIK?xo;k!*|-gi9G-TyP4sQtdamHPh&IhgKc1z2_eqdyo_^#AA2 z_YOAt|6_a`{ePqXe|i1?ZTXa>ypt`K9Ccl&xQTEs)1(ogVgl%_)|-9NK6#Q@hcD!% zB|F2?`}Lo-QZK+PXZ$G3#IB~(Yz?J;2mFJrxmKIzSOD5+>hBT?dRROjRTcWk>0oC%R^?_`watoAn{nz9hI({;S^q-5nerZr=ZSlyAwd zSqlPI+HUV+ac(xJI|gC7fDK=OZ~BD^R1ZVzlHwCn@}8D=JF5BJEbm{&dR}nLu)j2$ zlxWJW$H8usUMW^?9!_u6(4QO0#@ajXWQ4ZeZSG-!ZgaRnzk=;5?bRrqLRfi7>+zku zbk_3IF=k{f+|^CvWkf?=IIv`xcPHn%%0ggj9R&>nR10iXma}WTJpODoDux6>&^-EH zrm=j?o_&e&_pp7Qj~G&-d>|AeZ9nwP4Fa4s@#<1?vXEnqGN3zX1%o$&;h*JOE&tvB zJ)q_C-(b)`*ssWc{oVe?|Nl|GwcRhO?*l!g`-St?k1hUvPD!)*j82< zIdn}y)aGYh5Vdn#1W`9iMZtwKK8}n{L3rcN;+lr)JXMiA8jx-`kyD1fu(4W#t6PEg z8Ym5OmZ{BhvS=>VVEFNkwCq|_^a1)k*i&srqvKJnHH~dqRtuOW@i zM6CH6J7dQeC4#XkV!UJ4)mv6YeKJZ zItj17k!+q1{6-fLjiI=cp@6EXPQN!7sh#Rnk9ewXjb+4rhLSPElN80$gRBWe2jw^J zWJz&5XG)x#;FZ>i+@c@!Wga`Pe$TspzysU}WL9Ygs<@XUtv~-!yUy*JMCy+c6u>I% z|5^LmwEUVB%@bt1C^}3jtRdppa5c~5v3Aj}4DzXSH$RX`uGbLcQ+v_q`8H=Nwy=ku z0p%yixRfqv=M;_c#~KBdE)(AfMpr0}hmTKf5ou#sNp3X`xt}zh)KURR^VtZ|qPT0; zvUpLM6Anpds|m0~gVlAlE+k84p*3FbJy16zbTdNN9-&nUwn6ji)MEF&pHD$}y*zC|;_QSgo-T21?ol3a_fR;p-a zHSOgL;-sc;Y%IZl*srtwSH5I*HzV+>`=8IN@n3cayStnBe;(yq+x}}0htFvQ)-R_$ zrX_fZA^4Bwj_?Px0cZ2E@d+Jj0beRuF&88|> z#djy?ZMR9S7cU!&ULK!2{u*@%yAfZ=fct=PZHxpjt*qzD`dUV$X|Ta6yN+N)%iUAA za|9wYvkc-TN?O*g6kQ`cnerhR^c${XHukOzMG1K{9fI!(;}>VA+dn`3dB?Mqu!p2c zYA1-!a4LJ_1SN1W1pEDd&7C^{YFNF^6Qy8SRBr!#b0d^zwZuCHi2jZ-oc+85{`)H0b#@5vp zYqt)+tI5BE#ou3HOEs&Y^m%WYZabj;cK<_|!DAw}MvK+rr;4t$V!Rd|$Y9Fq7NZq5 zZ?Mwt-7q%RFmrb>a#xUNkTE``B%e%&U zc@ zb3>WIqs(MJ`p8i#x!s!&Mu@{fCHzkX9%dPnr$9j^0;B!6;?j>$4oxw}q%X>_*PCEI z%|~HGX1ys&^gmgiB)xAA``_H3GcE^?&QCQE3%`e~Aih`hjK8{h4Ln%Nvj%poKXOo( zki`t8YY&~G;AZTs&6=)*r$F=@9X$>2&2$_-ZI8lyrtzcM^;;h~9k|kQ=vX~-x3Sa0 zv4-+0n>ud6*=rHn|T`+>?*FQez zELhdi%V$7SGkT}h`xD*TtUKopHA;T3Rc(hJTD6|vcVfQ%=h1N)ExhAOPDe0WV+nsQ zM)h(Zp{sI~`ykw@azRy?^C_YDKT=#@i;2sMcUkqjvGVxsNmm9&G+u*$f4w*VV1~aPNPG-VwNl3!yPZQxsjbKwm>96>FSw zO5!|{S}4a!0k9YDg?)Xb>`Y;SMsw&HxSrx@3bfHpXoB|J!T!zdtq%a>G>>>rQK-~A zMHXgu-O??9q6zx=8uDlgaLPD>u~62P3wbLI;Pw`bPy};^6lSrW8V&XeEr1P+Q}DOF za8JzBJmG=@0D+HFj_4RhNOELM@-+4VqLk3kd;0WJs-6_h$Q;GsdWy6I0^~3uldl<= z;S|sEw5d0qKJ6&c<(a%oYtibAWs5WZ&G!7Ke(=|S?>znK|GWM7)7#r8KG=5H13m#x zE;tpOuugvE@L4w69?t%=%>E}Cd%w_c@>>=EV}G~${{P`&e|Ka5dyH>m|J&IAzPSAl z%<*g}9}^b{`65FvW@27OQ#1s6S(a{U@<>W8_-cL6vk8T*@lUWy9({U$%N5{QMxV=(C?L7_xh1YMPRuh7B= zeg^q8o$!F{5OTVD3M}W5^O87YDdLuOs8rLh9cu| zR&TfASxeHe1i)?ng*-m0IXqFW0V(`?1>x4vC zh=Nl&Ac{6$NNE^I@5d#BF3XcdfwIcbE5zH@(KmS3p0~SGj!grkes>wD4pnyCm@>Tx zhAlW#9WnMeQeKVDz&N+i1kU|=r-m0|4OStot<&v=PPBER6JrW^!?1X8y z(WpSpRkjQ(lsXk_=jk$vbfbG_%Q46u_y1+`pMKfnv&(<|{rdZldxMSq_ZZ(s{@ciZ zUtIq4j`bZ;^*S7zLV*cJl+^qu8um7Gy-2Kr<{@plf;9%RQWr&Kz7AT|0Mz=Xk$pZd zP=rTWRvvG8Fv}`|ndVkZt$Gp5@%+Yq(yxkT22(geaWGPkauo&`b8E8Zl;3;mU1;L( z#nl=Mf=2q%wg;^hx6PH@#oL;fD zbct654M0>MLmF#Ft>lOX_uH(VNp-Zif~Ml6m?vVXBq>mibfK8T1-nCeWlDp>GzM%Q zxe%+!v=FSIw0)TWIZa}Js&AS6rzY=bfB$>$`Tl-Y{@dTg|9zZqBmZsWzb`KTb=`BFPIpel9vro=01gz+MF)(&Q?{sVq&J>cu4NUS*rC|=PagvDMlTK*T(Mu4o zsa?+BGV)4;v$Dx7*jjZ}t^su7yKMw~l4|2==dQKrEZCv2xI$<_tCPAmfu)r)_=?qH z52u}RwwPJ%fZ*jQw7OT!9OLo^nd)LaUKErR23K{n)|=WIW%FG9U1~ZMWeJQB@c)+& z{15)p);8%gx=Gd9uT`L z^Kq)&)MW!W0TaXl)Ilzkzh79o_0>!sYE4tn;RJD6pnNLb^?3_Y*Xd2C$})jTtazWb zZ9FX%TfTiXZHaBCipu&f$;)*99#RwF4tIFR|Pd!&NOIuw;Tf-4tU zf@O?ACjO9~fkH^p&9+M9S%&B_Wa!&k(c*n!Hv)5|4#$nI4O@9?*#@x*+_i?Y zOYI5x!EeXXsNQ^sxX=sa=mld+W<^j%*@G*4Zh}<6!*3~>N#|2N^R666RP}4EnN>qv z%q-b!uh62>gP{*ZJ&t#6j;as;NTGUR$Pu6V_JGY$csNxAb`4GV?DSC)sR{YkTVF6Wf0Poq=AO+ zGU8sLg%}p1-|Ycccw*S&Zr~2XUBB*NymBBq^%X*ld^+J$xt%@DWmBNYLj+yzQB=!Nl8Sf-qoYND@7{keT^e@ovo{m+D8 z`^^3yyZzngHUE#pgN^?87~e+!+vtB^T>tZ4BRWwnOGpG0ZIRTMw~WnS2NG9#TIyKh zz)-~Ir21lNl~W9Zi|PZu8 zq54XOyqO~^h9jy{Wmo5*`XFUo#Ko3wqK8FIvVzh3r4N?iz;`D>i0H$Q_p#xB>U1x%xVD>PNGE3~Ah1thVq*$(iRvM-xouQPQJj=SIEl+mA@->|m zWzB7JtFSt*c2bmesluq6n}%Y=ZJv^Q4Vdcus~oLMi>ZIE?5=A0T*zvB+O$n5uo?#D z8o%GtB`A%n?7BjWXO>~k?yiQ0UZF)}+uGXG@SJ0NgR&F{nJd}Fugi}1TuLgwD z0B0qdIZ5&vdQI}w#-@$3c4patuv(Y<#6kzsDH);4LoFIn5if7p#MmMibb6wtX+aZ< zM6oeu`7ueyc#=~UdP8HCqDv7*->##rU|IFy=eRxh`~Ozze;JAIYXM&6|Gm50ug3o$ z>>h6PzsLA2={qB_lBH!-!23(z8Hvl&FK4-^T^4S+DciD&>{g6bb#J~U@_m!*Uvc5Z zp)w=!MP0OQ5Ntb=S+9U%B2n3Iz}FH>L3|l57EMu{Cx{mBq1XxCa7+o~XDVi^$hUrW zFK=Wt^LJ}WOHhteR;o2MtWIw6qZMxv&9=Ew76Sh`$r(rVTTB`M5%cNy3e1tvm40}Gr3TI)g*IL)*vXV6#`i&cUN4cshQt4FFxLQ4{hW$~3AyeXy^-~3wyUWs$k{A^iIB#z~ z`}cj895|NiyPQkr@B856Btf)%ozMEYCe}Z_Aohj64)P!6_w)f+W&hthtjT`|yPNp0 zkMeEo{~P=Nm$v`+o_gnEl_^yYb1}(LIXWmDlv}S5$VYpb<9w^ciQZG=K`Wy@NhoRW zgV9vv92LTdiLVgY4Um*r(X{FhJi8%>w2e$i!_V{)eZ5Hi5mNcYr55#K`DQfwRbLeI zg@omU9jl_sn~*kG(D0I^Q95&qN#?6esW>&&Wkl^OoW`dN_$olEuWP?c zwPk(wGtf=-TNJEQQLzyCuf?1Y)5FxbvbBX%ty7U2KFVw3$V8KpX{zRW5j`Fxg_hu} zra-+h?r4?pC3rb(%V7R`OqJubE4?j^ZhxS*@l{e|Zfu$%usX9^=88K>8cNltOEFU# z`sm>Y!=~HYx?NJPuBG%SD)yH|$5U2y7K^zU99h8u`Pa~^4Fm;IEbHbScGp$kdKI{Q z+1~&D@=`t>+?0OdJJ0QB<@@gHjqRXzEwc(&BDCJ0cFQWZSf?K4sJqm=&({omEwaBB zTd9ztv}?N$tRpYmOwJ*lATD2z-mWgbR;JZBdEB*a{IK8TRJqYH5EEIWe%3-#8CzRo zi7W)$1qAqtJ+rdFS8T`7+FU&<52dwse{SBvwi{D2QB5LQ#IRT$8MQLJwK7lic9TQIt|O0G4lkM{9%UCKxn4F@^DMf5blDLky3ef>6$1_B7-b$*Q z-vMEUD3%9@&G?+`*1lU3>-T~E^jGfxwyVhYLzdv@CRUud~j?yxWsaA8gC9GoslL<3{{~YqE(%u44Bq$ZZ zg^}~9bU9Nupe^lFK(l;Q!s;I-E-QECd=%SR#o!muW_EjHBz7XjBb$zRHgh%-^_Zee zwv|9_Tzlc>+}upAxt&+QXw*USu3my0Wdl>*$?Em}w)%gFr{ri_ZP)D@N}6Mu(~dRMmG{)g4E#v8Pm-Xi4psrgJAn$EwK; z)eeJlN|+KbC1Wxp8*9wlORy0Z$f%Kq0M99HH3 z{muE`<9sGEAH`@c!_lMO80tMw^u3TOAvZ#vyjh3hR#B`NIH4#T!a2l=x;1M@*M1}4 z9y05k7+@rc5e@D7+^CFlW!w(IC+WX(q66AkFQXS8J_cS>bc`r}lSyH>xS%hpd4(40 z>W_x+LQ`3tnJq2t{vZT*l=1?5b3}N>=MKT#i|)ztQGz2GGLbml)3rks0yjM7Z->Fa zx9Af?vGrkjw^=2hSMiVHxv1wJ3{)6?s~o&9!@l%twD}(U>$3l=8=2t(&OXcjKiEI0 z#edpA*xT&?kMXTu@=Q$hQucnLlFnMfmDl6w6bjFh-QP7xOd)%P7VW@(sUrJs2t13n z7gnI+K>0D0nXSvIrF;jrLSl|uTxZa7RR_L}(OJqB<|6RVj(u!n^9KD|*WKGiswZFv z_+pzhuQKBI=CR57z`Md}Jk+mMdo#pg3^^P+2P76ZWP{XmfQ@&j%Qp=x9w2;?p&@Wz zbmR&1Ol>@2VWeF>SGCRB{YBfX7tKF`(cwNyBR3j}z;HX2 z0IypAcMog+pL@F-|Bpxc*3kcor3c^?;E%^;Zu^_5ZHiHY>>L(}dhs`Muer_c)Cjgs zc1?;7E$P{s=M7=$E9!yWUiq|v3Hl`0%#Lkb(Y7a=IH@h%y$R(OxtvQybx!@F@=2+Q zbS+zifp4O?SiH^VCW|}jU0n&*Kzec3;h;8d{EzspTK_XbIZQq%+t26m|Jys*t=j(v z{k_fo???HTu4k(AeOG=jqT`4>P><%KGTbwY06duzCf6PRNlIe$0cSq2@9B!H{r$b> zOI}mXGv>mdyO+Q$0*&fmf^OqD`SCg`$mLHmAVd)c;|k6lY#I0RcHpIf&cJ0R^>TBRNqDXT$2C0Kbq?;rvDO)El8Oq2^g>oH7oRL^>R{`|#-z7h2AW%`b`LkFTrM zmv-r2$Y?#IbX85a-c(U2Rm=S#2;BR862e{yN03L;Ua=njKV;NmbTu^I-Ucw|#A!`S}Tymt2g~=@P%L+gs&mB_pI;j$Pt!hU`&ZiRlqd$#n{Xx7txlZ1MB9 zsHGvz(<639(zk?g?R6k4R)gCVlri*WI%TvZ)+D0~8^RALzwE5OjGlbjCHNb|8PEK~?l_v+H z#Y z&n*s{%?;_^d2KG7>Z>?%TD+`=)N-9V)ptkN&gLeq{#|wc{0#S?|E!;u|3k6G<4H;= zdiXk4$p8I=y~_Qs!S3PnjsNGPd|Tiga*n8aOJ9uua6LsS809#L@S2*h zEB2mIGhm(o)x!6ORkVg+&m8)(p#xIORNJk?QyR1s;aD6brP z-qWYwlNri{#`p9o_?xMFg84Kbg%O$cIL(m?iPwW!#(JD0)SE%Z5$!1s{oV7nw!mwM zjn3(LpMXA~e>sCV0iVD-nt)H<9gyC8!cmMb)q5%m31-{0W@sSa{+u7Ezq3*KfQ}k^=Rw`H%CL{N;TD z`XMx-gna@(9~^%3vm);k&~K|X9`KNz3Kvn_| zbbxIKla3T5M$(`~<@90V}uQ-4*lL8VwqQnaj)Q4c>MpG*&IQk?37Q5g}}=dtA&TVqp);i0kcr1OMjt;VKeIqEMhE{`YgHn2?L`oI!v zc!z@Pa@mx#BVe!1WCw{p_|lvj?C$LjIu|XYtXec&9-nuv+==RX=XUVgFxPMJoGztg z-enW1l({DK3a673Ox+4=^~|%hJy1@2Ric>kqWTsmZlhA1G(mS<(-i2c%|k#Xc#cxU zm<&4D0X|jFCaEnZM9M{`1L2i&-J3x&luGvIm8G(!A{$7;=}7VC+~iE*@&;cMrcMhLSJKwCOM?>eY?MksBHjTeZwH1k{Rk1 zB|71&_5UF3hr9jVe*c@@=N1O@pi|p)rjwR+$vhU_l4)Y99If6xOW+@tZhDo-VD3CY zSwa>whuh`LZ%tc(e1@$AZg>-|WzSx+Segf78+oGN(QPkUzIEFI({y^>LZmsVE@G0j zY)bayV~teX@87j8!G#E3Y-^_~r48vCGJ97Ey^B1)OccMP;C){)yPHtGQuwVr)z=8q zWjHwR#?xE zqZ-5B zN*BvX6aG%-5%qa3a5~x$)bVqw<~9{{&hT+W@)&0BqX>F#rGn literal 0 HcmV?d00001 diff --git a/test/lychee/3.1.5/ix_values.yaml b/test/lychee/3.1.5/ix_values.yaml new file mode 100644 index 00000000..63bb15fa --- /dev/null +++ b/test/lychee/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: lycheeorg/lychee-laravel + pullPolicy: IfNotPresent + tag: v4.3.0 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/lychee/3.1.5/questions.yaml b/test/lychee/3.1.5/questions.yaml new file mode 100644 index 00000000..53e656bb --- /dev/null +++ b/test/lychee/3.1.5/questions.yaml @@ -0,0 +1,450 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36034 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/lychee/3.1.5/templates/common.yaml b/test/lychee/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/lychee/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/lychee/3.1.5/test_values.yaml b/test/lychee/3.1.5/test_values.yaml new file mode 100644 index 00000000..d333576f --- /dev/null +++ b/test/lychee/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Lychee. + +image: + repository: lycheeorg/lychee-laravel + pullPolicy: IfNotPresent + tag: v4.3.0 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # PHP_TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/lychee/3.1.5/values.yaml b/test/lychee/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/lychee/item.yaml b/test/lychee/item.yaml new file mode 100644 index 00000000..f4a427e5 --- /dev/null +++ b/test/lychee/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true diff --git a/test/navidrome/3.1.5/CONFIG.md b/test/navidrome/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/navidrome/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/navidrome/3.1.5/Chart.lock b/test/navidrome/3.1.5/Chart.lock new file mode 100644 index 00000000..7bc1bf1a --- /dev/null +++ b/test/navidrome/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:57.203494707Z" diff --git a/test/navidrome/3.1.5/Chart.yaml b/test/navidrome/3.1.5/Chart.yaml new file mode 100644 index 00000000..72932899 --- /dev/null +++ b/test/navidrome/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: navidrome +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: Navidrome is an open source web-based music collection server and streamer +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/navidrome +icon: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png +keywords: + - navidrome + - music + - streaming +sources: + - https://github.com/truecharts/apps/tree/master/incubator/navidrome + - https://github.com/k8s-at-home/charts/tree/master/charts/navidrome + - https://github.com/deluan/navidrome + - https://hub.docker.com/r/deluan/navidrome +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/navidrome/3.1.5/README.md b/test/navidrome/3.1.5/README.md new file mode 100644 index 00000000..5e5e1c74 --- /dev/null +++ b/test/navidrome/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Navidrome is an open source web-based music collection server and streamer + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `navidrome` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `navidrome` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/navidrome/3.1.5/app-readme.md b/test/navidrome/3.1.5/app-readme.md new file mode 100644 index 00000000..4f10b994 --- /dev/null +++ b/test/navidrome/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Navidrome is an open source web-based music collection server and streamer +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Navidrome is an open source web-based music collection server and streamer diff --git a/test/navidrome/3.1.5/charts/common-3.5.5.tgz b/test/navidrome/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/navidrome/3.1.5/ix_values.yaml b/test/navidrome/3.1.5/ix_values.yaml new file mode 100644 index 00000000..e473a71b --- /dev/null +++ b/test/navidrome/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: deluan/navidrome + pullPolicy: IfNotPresent + tag: 0.42.1 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/navidrome/3.1.5/questions.yaml b/test/navidrome/3.1.5/questions.yaml new file mode 100644 index 00000000..8758663b --- /dev/null +++ b/test/navidrome/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 4533 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 4533 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36027 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/navidrome/3.1.5/templates/common.yaml b/test/navidrome/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/navidrome/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/navidrome/3.1.5/test_values.yaml b/test/navidrome/3.1.5/test_values.yaml new file mode 100644 index 00000000..2446a844 --- /dev/null +++ b/test/navidrome/3.1.5/test_values.yaml @@ -0,0 +1,30 @@ +# Default values for Navidrome. + +image: + repository: deluan/navidrome + pullPolicy: IfNotPresent + tag: 0.42.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 4533 + +env: + ND_SCANINTERVAL: "15m" + ND_LOGLEVEL: "info" + ND_SESSIONTIMEOUT: "24h" + ND_ENABLETRANSCODINGCONFIG: "true" + ND_MUSICFOLDER: "/music" + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/navidrome/3.1.5/values.yaml b/test/navidrome/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/navidrome/item.yaml b/test/navidrome/item.yaml new file mode 100644 index 00000000..576fa6c3 --- /dev/null +++ b/test/navidrome/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png diff --git a/test/node-red/3.1.5/CONFIG.md b/test/node-red/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/node-red/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/node-red/3.1.5/Chart.lock b/test/node-red/3.1.5/Chart.lock new file mode 100644 index 00000000..97540c4a --- /dev/null +++ b/test/node-red/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:57.699027831Z" diff --git a/test/node-red/3.1.5/Chart.yaml b/test/node-red/3.1.5/Chart.yaml new file mode 100644 index 00000000..fc4384e3 --- /dev/null +++ b/test/node-red/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: node-red +version: 3.1.5 +upstream_version: 5.2.1 +appVersion: "auto" +description: Node-RED is low-code programming for event-driven applications +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/node-red +icon: https://nodered.org/about/resources/media/node-red-icon-2.png +keywords: + - node-red + - nodered +sources: + - https://github.com/truecharts/apps/tree/master/incubator/node-red + - https://github.com/k8s-at-home/charts/tree/master/charts/node-red + - https://github.com/node-red/node-red-docker +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/node-red/3.1.5/README.md b/test/node-red/3.1.5/README.md new file mode 100644 index 00000000..ef5216e0 --- /dev/null +++ b/test/node-red/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Node-RED is low-code programming for event-driven applications + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `node-red` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `node-red` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/node-red/3.1.5/app-readme.md b/test/node-red/3.1.5/app-readme.md new file mode 100644 index 00000000..6ecbe710 --- /dev/null +++ b/test/node-red/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Node-RED is low-code programming for event-driven applications +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Node-RED is low-code programming for event-driven applications diff --git a/test/node-red/3.1.5/charts/common-3.5.5.tgz b/test/node-red/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/node-red/3.1.5/ix_values.yaml b/test/node-red/3.1.5/ix_values.yaml new file mode 100644 index 00000000..48dd3201 --- /dev/null +++ b/test/node-red/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: nodered/node-red + pullPolicy: IfNotPresent + tag: 1.3.4 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/node-red/3.1.5/questions.yaml b/test/node-red/3.1.5/questions.yaml new file mode 100644 index 00000000..eb29b285 --- /dev/null +++ b/test/node-red/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 1880 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 1880 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36028 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/node-red/3.1.5/templates/common.yaml b/test/node-red/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/node-red/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/node-red/3.1.5/test_values.yaml b/test/node-red/3.1.5/test_values.yaml new file mode 100644 index 00000000..4339f588 --- /dev/null +++ b/test/node-red/3.1.5/test_values.yaml @@ -0,0 +1,32 @@ +# Default values for node-red. + +image: + repository: nodered/node-red + pullPolicy: IfNotPresent + tag: 1.3.4 + +strategy: + type: Recreate + +# See more environment varaibles in the node-red documentation +# https://nodered.org/docs/getting-started/docker +env: {} + # TZ: + # NODE_OPTIONS: + # NODE_RED_ENABLE_PROJECTS: + # NODE_RED_ENABLE_SAFE_MODE: + # FLOWS: + +services: + main: + port: + port: 1880 + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/node-red/3.1.5/values.yaml b/test/node-red/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/node-red/item.yaml b/test/node-red/item.yaml new file mode 100644 index 00000000..31b0c4a8 --- /dev/null +++ b/test/node-red/item.yaml @@ -0,0 +1,3 @@ +categories: + - tools +icon_url: https://nodered.org/about/resources/media/node-red-icon-2.png diff --git a/test/nzbget/3.1.5/CONFIG.md b/test/nzbget/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/nzbget/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/nzbget/3.1.5/Chart.lock b/test/nzbget/3.1.5/Chart.lock new file mode 100644 index 00000000..9d35bc3f --- /dev/null +++ b/test/nzbget/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:58.151914285Z" diff --git a/test/nzbget/3.1.5/Chart.yaml b/test/nzbget/3.1.5/Chart.yaml new file mode 100644 index 00000000..863ecde8 --- /dev/null +++ b/test/nzbget/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: nzbget +version: 3.1.5 +upstream_version: 7.3.1 +appVersion: "auto" +description: NZBGet is a Usenet downloader client +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/nzbget +icon: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4 +keywords: + - nzbget + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/nzbget + - https://github.com/k8s-at-home/charts/tree/master/charts/nzbget + - https://hub.docker.com/r/linuxserver/nzbget/ + - https://nzbget.net/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/nzbget/3.1.5/README.md b/test/nzbget/3.1.5/README.md new file mode 100644 index 00000000..927dec88 --- /dev/null +++ b/test/nzbget/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +NZBGet is a Usenet downloader client + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `nzbget` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `nzbget` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/nzbget/3.1.5/app-readme.md b/test/nzbget/3.1.5/app-readme.md new file mode 100644 index 00000000..bde861cf --- /dev/null +++ b/test/nzbget/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +NZBGet is a Usenet downloader client +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +NZBGet is a Usenet downloader client diff --git a/test/nzbget/3.1.5/charts/common-3.5.5.tgz b/test/nzbget/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/nzbget/3.1.5/ix_values.yaml b/test/nzbget/3.1.5/ix_values.yaml new file mode 100644 index 00000000..08de88a7 --- /dev/null +++ b/test/nzbget/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/nzbget + pullPolicy: IfNotPresent + tag: v21.0 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/nzbget/3.1.5/questions.yaml b/test/nzbget/3.1.5/questions.yaml new file mode 100644 index 00000000..842b21e7 --- /dev/null +++ b/test/nzbget/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 6789 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 6789 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36021 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/nzbget/3.1.5/templates/common.yaml b/test/nzbget/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/nzbget/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/nzbget/3.1.5/test_values.yaml b/test/nzbget/3.1.5/test_values.yaml new file mode 100644 index 00000000..212877c5 --- /dev/null +++ b/test/nzbget/3.1.5/test_values.yaml @@ -0,0 +1,23 @@ +# Default values for nzbget. + +image: + repository: ghcr.io/truecharts/nzbget + pullPolicy: IfNotPresent + tag: v21.0 + +strategy: + type: Recreate + +services: + main: + port: + port: 6789 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/nzbget/3.1.5/values.yaml b/test/nzbget/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/nzbget/item.yaml b/test/nzbget/item.yaml new file mode 100644 index 00000000..86059d18 --- /dev/null +++ b/test/nzbget/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4 diff --git a/test/nzbhydra/3.1.5/CONFIG.md b/test/nzbhydra/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/nzbhydra/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/nzbhydra/3.1.5/Chart.lock b/test/nzbhydra/3.1.5/Chart.lock new file mode 100644 index 00000000..cef5aa69 --- /dev/null +++ b/test/nzbhydra/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:58.660164697Z" diff --git a/test/nzbhydra/3.1.5/Chart.yaml b/test/nzbhydra/3.1.5/Chart.yaml new file mode 100644 index 00000000..5d35ede6 --- /dev/null +++ b/test/nzbhydra/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: nzbhydra +version: 3.1.5 +upstream_version: 5.3.1 +appVersion: "auto" +description: Usenet meta search +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/nzbhydra +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png +keywords: + - nzbhydra + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/nzbhydra + - https://github.com/k8s-at-home/charts/tree/master/charts/nzbhydra + - https://hub.docker.com/r/linuxserver/nzbhydra2 + - https://github.com/theotherp/nzbhydra2 +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/nzbhydra/3.1.5/README.md b/test/nzbhydra/3.1.5/README.md new file mode 100644 index 00000000..a3cd6644 --- /dev/null +++ b/test/nzbhydra/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Usenet meta search + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `nzbhydra` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `nzbhydra` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/nzbhydra/3.1.5/app-readme.md b/test/nzbhydra/3.1.5/app-readme.md new file mode 100644 index 00000000..2012c83a --- /dev/null +++ b/test/nzbhydra/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Usenet meta search +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Usenet meta search diff --git a/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz b/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/nzbhydra/3.1.5/ix_values.yaml b/test/nzbhydra/3.1.5/ix_values.yaml new file mode 100644 index 00000000..0a6fde47 --- /dev/null +++ b/test/nzbhydra/3.1.5/ix_values.yaml @@ -0,0 +1,51 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/nzbhydra2 + pullPolicy: IfNotPresent + tag: v3.14.1 + +probes: + liveness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/livenessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + readiness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + startup: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/nzbhydra/3.1.5/questions.yaml b/test/nzbhydra/3.1.5/questions.yaml new file mode 100644 index 00000000..a620bab6 --- /dev/null +++ b/test/nzbhydra/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5076 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 5076 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36041 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/nzbhydra/3.1.5/templates/common.yaml b/test/nzbhydra/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/nzbhydra/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/nzbhydra/3.1.5/test_values.yaml b/test/nzbhydra/3.1.5/test_values.yaml new file mode 100644 index 00000000..5baf1ad7 --- /dev/null +++ b/test/nzbhydra/3.1.5/test_values.yaml @@ -0,0 +1,64 @@ +# Default values for nzbhydra. + +image: + repository: ghcr.io/truecharts/nzbhydra2 + pullPolicy: IfNotPresent + tag: v3.14.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 5076 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +probes: + liveness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/livenessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + readiness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + startup: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/nzbhydra/3.1.5/values.yaml b/test/nzbhydra/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/nzbhydra/item.yaml b/test/nzbhydra/item.yaml new file mode 100644 index 00000000..9da6666b --- /dev/null +++ b/test/nzbhydra/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png diff --git a/test/organizr/3.1.5/CONFIG.md b/test/organizr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/organizr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/organizr/3.1.5/Chart.lock b/test/organizr/3.1.5/Chart.lock new file mode 100644 index 00000000..3afb86bf --- /dev/null +++ b/test/organizr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:59.129683638Z" diff --git a/test/organizr/3.1.5/Chart.yaml b/test/organizr/3.1.5/Chart.yaml new file mode 100644 index 00000000..631c1abc --- /dev/null +++ b/test/organizr/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: organizr +version: 3.1.5 +upstream_version: 3.2.1 +appVersion: "latest" +description: HTPC/Homelab Services Organizer +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/organizr +icon: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true +keywords: + - organizr +sources: + - https://github.com/truecharts/apps/tree/master/incubator/organizr + - https://github.com/k8s-at-home/charts/tree/master/charts/organizr + - https://github.com/causefx/Organizr + - https://hub.docker.com/r/organizr/organizr +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/organizr/3.1.5/README.md b/test/organizr/3.1.5/README.md new file mode 100644 index 00000000..dd5cdedc --- /dev/null +++ b/test/organizr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +HTPC/Homelab Services Organizer + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `organizr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `organizr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/organizr/3.1.5/app-readme.md b/test/organizr/3.1.5/app-readme.md new file mode 100644 index 00000000..0bfeec6a --- /dev/null +++ b/test/organizr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +HTPC/Homelab Services Organizer +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +HTPC/Homelab Services Organizer diff --git a/test/organizr/3.1.5/charts/common-3.5.5.tgz b/test/organizr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/organizr/3.1.5/ix_values.yaml b/test/organizr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..19a9fa1e --- /dev/null +++ b/test/organizr/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: organizr/organizr + pullPolicy: Always + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/organizr/3.1.5/questions.yaml b/test/organizr/3.1.5/questions.yaml new file mode 100644 index 00000000..35051230 --- /dev/null +++ b/test/organizr/3.1.5/questions.yaml @@ -0,0 +1,502 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36046 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/organizr/3.1.5/templates/common.yaml b/test/organizr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/organizr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/organizr/3.1.5/test_values.yaml b/test/organizr/3.1.5/test_values.yaml new file mode 100644 index 00000000..c784dfb7 --- /dev/null +++ b/test/organizr/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Organizr. + +image: + repository: organizr/organizr + pullPolicy: Always + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/organizr/3.1.5/values.yaml b/test/organizr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/organizr/item.yaml b/test/organizr/item.yaml new file mode 100644 index 00000000..8d111e1f --- /dev/null +++ b/test/organizr/item.yaml @@ -0,0 +1,3 @@ +categories: + - organizers +icon_url: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true diff --git a/test/podgrab/1.0.3/CONFIG.md b/test/podgrab/1.0.3/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/podgrab/1.0.3/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/podgrab/1.0.3/Chart.lock b/test/podgrab/1.0.3/Chart.lock new file mode 100644 index 00000000..ad7bd61f --- /dev/null +++ b/test/podgrab/1.0.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:59.589063587Z" diff --git a/test/podgrab/1.0.3/Chart.yaml b/test/podgrab/1.0.3/Chart.yaml new file mode 100644 index 00000000..da35df55 --- /dev/null +++ b/test/podgrab/1.0.3/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: podgrab +version: 1.0.3 +upstream_version: 1.0.0 +appVersion: "latest" +description: A self-hosted podcast manager to download episodes as soon as they become live. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/podgrab +icon: https://truecharts.org/_static/img/podgrab-icon.png +keywords: + - podgrab +sources: + - https://github.com/akhilrex/podgrab + - https://hub.docker.com/r/akhilrex/podgrab +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/test/podgrab/1.0.3/README.md b/test/podgrab/1.0.3/README.md new file mode 100644 index 00000000..9977071a --- /dev/null +++ b/test/podgrab/1.0.3/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 1.0.3](https://img.shields.io/badge/Version-1.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A self-hosted podcast manager to download episodes as soon as they become live. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `podgrab` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `podgrab` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/podgrab/1.0.3/app-readme.md b/test/podgrab/1.0.3/app-readme.md new file mode 100644 index 00000000..9d85b5de --- /dev/null +++ b/test/podgrab/1.0.3/app-readme.md @@ -0,0 +1,3 @@ +A self-hosted podcast manager to download episodes as soon as they become live. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A self-hosted podcast manager to download episodes as soon as they become live. diff --git a/test/podgrab/1.0.3/charts/common-3.5.5.tgz b/test/podgrab/1.0.3/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/podgrab/1.0.3/ix_values.yaml b/test/podgrab/1.0.3/ix_values.yaml new file mode 100644 index 00000000..4d5da6cf --- /dev/null +++ b/test/podgrab/1.0.3/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: akhilrex/podgrab + pullPolicy: Always + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/podgrab/1.0.3/questions.yaml b/test/podgrab/1.0.3/questions.yaml new file mode 100644 index 00000000..023e9e17 --- /dev/null +++ b/test/podgrab/1.0.3/questions.yaml @@ -0,0 +1,454 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + +# App env variables + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: PASSWORD + label: "Password" + description: "Desired Password" + schema: + type: string + default: "" + required: false + - variable: CHECK_FREQUENCY + label: "Update Frequency" + description: "Interval to check for new podcasts" + schema: + type: int + default: 240 + required: true + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36047 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Config Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "1Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/podgrab/1.0.3/templates/common.yaml b/test/podgrab/1.0.3/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/podgrab/1.0.3/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/podgrab/1.0.3/test_values.yaml b/test/podgrab/1.0.3/test_values.yaml new file mode 100644 index 00000000..6982fed0 --- /dev/null +++ b/test/podgrab/1.0.3/test_values.yaml @@ -0,0 +1,47 @@ +# Default values for podgrab. + +image: + repository: akhilrex/podgrab + pullPolicy: Always + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 51080 + protocol: TCP + targetPort: 51080 + +env: + PASSWORD: secretpasswordgoeshere + CHECK_FREQUENCY: 240 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + +customStorage: + - name: assets + enabled: true + mountPath: "/assets" + emptyDir: true diff --git a/test/podgrab/1.0.3/values.yaml b/test/podgrab/1.0.3/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/podgrab/item.yaml b/test/podgrab/item.yaml new file mode 100644 index 00000000..8fea192f --- /dev/null +++ b/test/podgrab/item.yaml @@ -0,0 +1,3 @@ +categories: + - mutlimedia +icon_url: https://truecharts.org/_static/img/podgrab-icon.png diff --git a/test/qbittorrent/3.1.5/CONFIG.md b/test/qbittorrent/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/qbittorrent/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/qbittorrent/3.1.5/Chart.lock b/test/qbittorrent/3.1.5/Chart.lock new file mode 100644 index 00000000..42139f48 --- /dev/null +++ b/test/qbittorrent/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.098310198Z" diff --git a/test/qbittorrent/3.1.5/Chart.yaml b/test/qbittorrent/3.1.5/Chart.yaml new file mode 100644 index 00000000..37d8d5de --- /dev/null +++ b/test/qbittorrent/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: qbittorrent +version: 3.1.5 +upstream_version: 7.2.1 +appVersion: "auto" +description: qBittorrent is a cross-platform free and open-source BitTorrent client +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/qbittorrent +icon: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png +keywords: + - qbittorrent + - torrrent +sources: + - https://github.com/truecharts/apps/tree/master/incubator/qbittorrent + - https://github.com/k8s-at-home/charts/tree/master/charts/qbittorrent + - https://hub.docker.com/r/linuxserver/qbittorrent/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/qbittorrent/3.1.5/README.md b/test/qbittorrent/3.1.5/README.md new file mode 100644 index 00000000..885309a1 --- /dev/null +++ b/test/qbittorrent/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +qBittorrent is a cross-platform free and open-source BitTorrent client + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `qbittorrent` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `qbittorrent` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/qbittorrent/3.1.5/app-readme.md b/test/qbittorrent/3.1.5/app-readme.md new file mode 100644 index 00000000..5d26b483 --- /dev/null +++ b/test/qbittorrent/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +qBittorrent is a cross-platform free and open-source BitTorrent client +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +qBittorrent is a cross-platform free and open-source BitTorrent client diff --git a/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz b/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/qbittorrent/3.1.5/ix_values.yaml b/test/qbittorrent/3.1.5/ix_values.yaml new file mode 100644 index 00000000..a99eddee --- /dev/null +++ b/test/qbittorrent/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/qbittorrent + pullPolicy: IfNotPresent + tag: v4.3.5 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/qbittorrent/3.1.5/questions.yaml b/test/qbittorrent/3.1.5/questions.yaml new file mode 100644 index 00000000..d2494a1b --- /dev/null +++ b/test/qbittorrent/3.1.5/questions.yaml @@ -0,0 +1,563 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36039 + required: true + - variable: tcp + label: "TCP Torrent connections" + description: "This service is used to process incomming torrent connections over TCP" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 6881 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36040 + required: true + - variable: udp + label: "UDP Torrent connections" + description: "This service is used to process incomming torrent connections over UDP" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 6881 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36040 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/qbittorrent/3.1.5/templates/common.yaml b/test/qbittorrent/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/qbittorrent/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/qbittorrent/3.1.5/templates/configmap.yaml b/test/qbittorrent/3.1.5/templates/configmap.yaml new file mode 100644 index 00000000..f8549d96 --- /dev/null +++ b/test/qbittorrent/3.1.5/templates/configmap.yaml @@ -0,0 +1,45 @@ +## +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# `SPDX-License-Identifier: Apache-2.0` +# +# This file is considered to be modified by the TrueCharts Project. +## + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-scripts + labels: + {{- include "common.labels" . | nindent 4 }} +data: + {{- $bittorrentPort := "" -}} + {{- $bittorrentPort = .Values.services.tcp.port.port -}} + {{- if $bittorrentPort }} + 31-update-port: |- + #!/bin/bash + QBITTORRENT_CONFIGFILE="/config/qBittorrent/qBittorrent.conf" + INCOMING_PORT={{- $bittorrentPort }} + + incoming_port_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin='${INCOMING_PORT}) + if [[ -z "${incoming_port_exist}" ]]; then + incoming_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin') + if [[ ! -z "${incoming_exist}" ]]; then + # Get line number of Incoming + LINE_NUM=$(grep -Fn -m 1 'Connection\PortRangeMin' ${QBITTORRENT_CONFIGFILE} | cut -d: -f 1) + sed -i "${LINE_NUM}s@.*@Connection\\\PortRangeMin=${INCOMING_PORT}@" ${QBITTORRENT_CONFIGFILE} + else + echo "Connection\\PortRangeMin=${INCOMING_PORT}" >> ${QBITTORRENT_CONFIGFILE} + fi + fi + {{- end }} diff --git a/test/qbittorrent/3.1.5/test_values.yaml b/test/qbittorrent/3.1.5/test_values.yaml new file mode 100644 index 00000000..02e101f8 --- /dev/null +++ b/test/qbittorrent/3.1.5/test_values.yaml @@ -0,0 +1,60 @@ +# Default values for qbittorrent. + +image: + repository: ghcr.io/truecharts/qbittorrent + pullPolicy: IfNotPresent + tag: v4.3.5 + +strategy: + type: Recreate + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + # UMASK: 022 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 6881 + protocol: TCP + targetPort: 51413 + udp: + enabled: true + type: ClusterIP + port: + port: 6881 + protocol: UDP + targetPort: 51413 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + +additionalVolumes: + - name: qbittorrent-scripts + emptyDir: {} + ## When you want to enable automatic port configuration at startup, adjust this to: + # configMap: + # name: -scripts + # defaultMode: 511 + +additionalVolumeMounts: + - mountPath: /config/custom-cont-init.d + name: qbittorrent-scripts + + +appAdditionalServicesEnabled: true +appAdditionalServices: diff --git a/test/qbittorrent/3.1.5/values.yaml b/test/qbittorrent/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/qbittorrent/item.yaml b/test/qbittorrent/item.yaml new file mode 100644 index 00000000..a366e589 --- /dev/null +++ b/test/qbittorrent/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png diff --git a/test/readarr/3.1.5/CONFIG.md b/test/readarr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/readarr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/readarr/3.1.5/Chart.lock b/test/readarr/3.1.5/Chart.lock new file mode 100644 index 00000000..ab4b8a02 --- /dev/null +++ b/test/readarr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.428743745Z" diff --git a/test/readarr/3.1.5/Chart.yaml b/test/readarr/3.1.5/Chart.yaml new file mode 100644 index 00000000..041ee3f5 --- /dev/null +++ b/test/readarr/3.1.5/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: readarr +version: 3.1.5 +upstream_version: 2.1.0 +appVersion: "auto" +description: A fork of Radarr to work with Books & AudioBooks +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/readarr +icon: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true +keywords: + - readarr + - torrent + - usenet + - AudioBooks + - ebooks +sources: + - https://github.com/truecharts/apps/tree/master/incubator/readarr + - https://github.com/k8s-at-home/charts/tree/master/charts/readarr + - https://github.com/Readarr/Readarr + - https://readarr.com +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/test/readarr/3.1.5/README.md b/test/readarr/3.1.5/README.md new file mode 100644 index 00000000..dded0c18 --- /dev/null +++ b/test/readarr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +A fork of Radarr to work with Books & AudioBooks + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `readarr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `readarr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/readarr/3.1.5/app-readme.md b/test/readarr/3.1.5/app-readme.md new file mode 100644 index 00000000..ec0ebb21 --- /dev/null +++ b/test/readarr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +A fork of Radarr to work with Books & AudioBooks +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A fork of Radarr to work with Books & AudioBooks diff --git a/test/readarr/3.1.5/charts/common-3.5.5.tgz b/test/readarr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/readarr/3.1.5/ix_values.yaml b/test/readarr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..8e161d6d --- /dev/null +++ b/test/readarr/3.1.5/ix_values.yaml @@ -0,0 +1,37 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/readarr + pullPolicy: IfNotPresent + tag: v0.1.0.643 + +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: true + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/readarr/3.1.5/questions.yaml b/test/readarr/3.1.5/questions.yaml new file mode 100644 index 00000000..840fe89a --- /dev/null +++ b/test/readarr/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8787 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8787 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36038 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/readarr/3.1.5/templates/common.yaml b/test/readarr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/readarr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/readarr/3.1.5/test_values.yaml b/test/readarr/3.1.5/test_values.yaml new file mode 100644 index 00000000..09676bb4 --- /dev/null +++ b/test/readarr/3.1.5/test_values.yaml @@ -0,0 +1,49 @@ +# Default values for Radarr. + +image: + repository: ghcr.io/truecharts/readarr + pullPolicy: IfNotPresent + tag: v0.1.0.643 + +strategy: + type: Recreate + +services: + main: + port: + port: 8787 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: true + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/readarr/3.1.5/values.yaml b/test/readarr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/readarr/item.yaml b/test/readarr/item.yaml new file mode 100644 index 00000000..e409535f --- /dev/null +++ b/test/readarr/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true diff --git a/test/sabnzbd/3.1.5/CONFIG.md b/test/sabnzbd/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/sabnzbd/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/sabnzbd/3.1.5/Chart.lock b/test/sabnzbd/3.1.5/Chart.lock new file mode 100644 index 00000000..5c046e33 --- /dev/null +++ b/test/sabnzbd/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.676279356Z" diff --git a/test/sabnzbd/3.1.5/Chart.yaml b/test/sabnzbd/3.1.5/Chart.yaml new file mode 100644 index 00000000..281a1644 --- /dev/null +++ b/test/sabnzbd/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: sabnzbd +version: 3.1.5 +upstream_version: 5.0.1 +appVersion: "auto" +description: Free and easy binary newsreader +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/sabnzbd +icon: https://avatars1.githubusercontent.com/u/960698?s=400&v=4 +keywords: + - sabnzbd + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/sabnzbd + - https://github.com/k8s-at-home/charts/tree/master/charts/sabnzbd + - https://hub.docker.com/r/linuxserver/sabnzbd/ + - https://sabnzbd.org/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/sabnzbd/3.1.5/README.md b/test/sabnzbd/3.1.5/README.md new file mode 100644 index 00000000..cfa2b2d0 --- /dev/null +++ b/test/sabnzbd/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Free and easy binary newsreader + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `sabnzbd` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `sabnzbd` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/sabnzbd/3.1.5/app-readme.md b/test/sabnzbd/3.1.5/app-readme.md new file mode 100644 index 00000000..05e7f339 --- /dev/null +++ b/test/sabnzbd/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Free and easy binary newsreader +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Free and easy binary newsreader diff --git a/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz b/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 zcmV+(K;ge1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{d)qeBFuFhUufR*EZ|!^`CHa=F&SuYg?X>ktSS@AO^De_{(B8oFEQ@+j9Nc;s7Jfe^;z?e{QNpmEJ z5A&vEhK69udB%pl-URb$J_;i;>v5W+NW%1Bma!hE2=!)=aYTD+1bR3UHJGy3*Vo~M zkV%4Mc|3y?#CjtN(-^0dp2|wdg!BdtHZ&J%{X7m<`x zk|c;;N(5ygZwp)?4q%!R4i#3C0zS17_bgPsq7Dn`QCWHjZf-Ts1ddR07j!?!f)bNQ zQI_BcvLP6Fj8n+bWHIyr*xCZ$5(-WVtn3+>!vx1b%?`<%w}4dbcA&=)o#O}{MG?tU zE*TCkG8Ex4Mhsj}5uYLoAkc6CDnP)dBu`>6LO^jo_JICt2*xmBl54=K4sZfs9E<-5 zdMfxlU=uA#6Xh?bNba+MjGIacWI02jggqUDlyJag`(sTEz)Wt)&j3`2Far~mA~C*V zkTaZ4Bx1u&z|kyARHv(*TX5Aw>Aa-re-FXC%VW>m+5+z(#c-4ePGLSZ!%2`Zreszi zW6uEk2xnP>M4=xAC_%q_Ry&fIr$fLp z6on~?k>G;tOodENJ|SVIV?22cGg)4hHd33&31%=0M1q87VyWRZP?fB}ye)8?Gfrk8 zqnJ?47a&R?V^T1W@pz0V5`$NaP{9N+TBy+-O;MaDh1T*v6M6+^@CpHzQv?q z`z@x7i%IgmD(YD%%;F-(;E7%-Cy0X)WGEJEon2i?Tv5%?sYI^Ra*KrtI61p8CD=3F z^*J>QL>d#$^nMIxZ~-V{B$*4QrYs@kD$f9BOiUq?0!C&Cyej5}z?)|*RFoV`)N1(X z4c?5UK#wL_n@$62Y7T)vkPH0FRLqxNjG6eaBu=krf;2J)*7O4NVv>uor5-r_!OCBZ%a}z6C0;Bze5kn=3FSK zA8>lblnNzhk?sW5$_o_baxxv0l%tPaA`}_tYHu_7I$JCSG*6G%8A;y~!Zli*_>Lhu z1P6!Tn1t^r$upBOZv1&X74yUlB>#;>`x>(u#NR*zK(mm9N(Q_PP^ zq1s9*0LC#^!?l{TwFS;886j4TT*+TAlZk>C37(@AG5I$DitTa16e;5f*+ED(a+9Vx z0(dNE>NRFlk*1ddkwyWzP79o}YKcXyJf#dE@rrF+lvRteX*rX;F#C>XjS+tw%%MSa zI@T*kf+Dejo7&VCFG*KbOi2a1=5G_4j1*q_D2)$NAD1! zZ}L2Q$nMZ6AHFke#1GpQb9I%__-v*9f(T8 zbo3=jtx`#*2w2;;%n8eSPR9;nrbjhKu^vMbQ<~34h>Gl7h+SBzn8k)>4=kKAj$jPP zxU57|70SBhKVlY8)zN|(v8+bvFr*V zb56+|#|Xf5VZk~2|Me6{Qz@~I#8Uffjwy;mH65Eus|O@e1}sctI(+6twFr;-;JX6hSlubA~}72eYG?;;f(a7XRh;n5C^-a=Nsp}0L=AEhv&yf=?@GG3gU1~>ITG;HB+C?Ng4t&$ssZG74xb4n2&Bjn# z9)=*D;PhiFFi%(jBiUN985*Lk-d71iyDpSfp{|OAA&`ewfi@V035j4*zyOd*BTUcR zvPPcfc`+}WC#EwqeVAcQSR)U*GoV}RtBrTt-l^%L~D6`->ouob0feH{H9{Q|4eU~+PuO*yhz~;M`AsmW6>EnomlwtR8s-A ztxaJ^p3A7J(mY9?ft1v$Q(`|ZS|nyXe+Hr{A%$JK*knxYh=u@cPqJM=QgHO+g=hs# zV@PA5g;0syA9hB(=ULU9e1ot>hb2|)v(kC<^m zUz9*RdnSQ|Adx|))C${RfBybht@H+~GH)vk#{xlNqS9nJnM0{f1+peXc0STpT{1%f z%SU1oD4{^wonDg|4Z&Lk;~y#J=uH|a%nbhr4Z+|$?C5h^m6Pog!fQ!%Mp7_E$qeMF zkYQnxC^T0%D^dz;q#*3roIn9I%lP61Q!rQKSEw^nAszeXqpFiA>jS@gfmj$7xC zL1?Ke_LNekZK+31oSM-{CBGI$b)KS7^7_&oR_Mj!ofhq_Lp;$EbFPxcc#h*7CSs~w zDJ2!bXeuRsA+SklOPMppyjC)UMRk#A_nYr@oLY&?o+~kqV04vdHJny*F;4gtU8uj; zsBQN@zZUr0JwrS=eydUBNp0hqxo6Z7!&TtKVsR0@OI5--iX_maqA90$7gfD?H(gLo83 z0)lJIr}EDLDzbaBe{ePg{@|~>;o$I_a1ajqeZ|*;Dz(1^z&Be;L}tE8yS}~-opg^P z<20jo;va>+lEWlf0E&djh|*Z@mzD{pv|8!1Qn}*2FIXH+#qefoV`PBlsaT6GtGhl?OEBjNl6|1bcm`M=O-0qO zaf(H6gl3tINwLzJR#?UIRJBwoW@C~hr$`KPNEgp!%PE?X zxw1(|IZYN|M4{x$m?H|lE?N9_C{fO^5d)$uAA&)@KT}f;%?Mo#!C?2B*H|{}*Br4f zu-?{|<#uIGm?O_Se|LJK%KDu}{1b)B2>w9DTQ7%~Lh|Vx$Y8sgXf*6T0 zs~0pygmt*mqL-Abshujur&=(4Eu;8_9Nt{Hnx0xXF{4@^8jHovU!MqTE%SRej^$$c@B%9C>G6{PHk z#t|y?p7w5Uy_=gr>sEzP1}2FQg4n`!j5ZXXjNUtcW-%B zCDfg3vXl)UEUU}`Y^=^@XIodXHe#2UB|E_vLX|w>fJx_qTD=Ifa;t7C>)9>*((Bdc zd)TkO{}+?%!K8o{`~P15aJRDmAM8Cp-0c64@yY%F2OObPY}Rrgm%H9k2BRqgI_DWM z_Tk;Iuk4S$&hmHuFHfkIGq{k-an6uAH%$;gABD~jq!ZFCOR&&qmCnjb?4kEBjev}# zX-ufg*}_=%G!%ebokmVM&-4``D5(qyo%9j~#d<%S9=|-hcp2=5eb0NBCWx`(G!l#! z=1h8&AdtXoKq!C{isZSZp!1qyj?>9Az{r?iLyEi@Gfwd+=MIAmRhR)AfTRGXz(2YG zrx!l>=h4OK#WU~6)64JQyt@QH9=&~gbar|A@&deh3y$BMot$2tzB#)9Z@vXbXa54P zPR~xBnR6QSF_XtvgaRyBhvLw?K**`w2x|K5JOT+!CpnxTFd=h9Qz4L9tGkevJgIc+ zBimYYLeKm8;{4?Q4fOBeRO|zIj1e8`F(DZHv*%qFeT=0i7{f85ii;xzW+awp`NrYY z(#X##`2|H>OMqf`={;50%pxSuqmVS5h_a(3M@phG%`H6S0T~Hg0uFL{h;Mwv#TYBR z1#Bs{UGlV~3bE7KH{%*M&j@C4gcHm$Vr9{=ETv_#D|tFsQ0&bRheF>T7JlCi$dyse zxQZ9jojxdP6;)KeD`)K6vW=X1b%{vbj<5ka`4^le?TCapP)I*5SZ$Yl32Pswb*Raz z$M^;@WBpW?X~?7L51n`tnvy>>u;@_LXNI3fZuL_m``kMYhB*zbY;ET^Wg&;B)|sG{ zeTRk>71+L2O}NTV6U}Pijz!;>-mx~{Lw*hNU!li6lmNI&{@bnDe+~|wKi|lIkMV8f zzm5F&MdiP{h=0Wj^|11vWx!fn04x{HHVLr2AG;9&?;!$~w|8%DiW*H~3qj_VugbRX z{H{U3M*7@HpMSisF8>*C#)mrtTrU3&1_!&<_zwsD=eryE?=e2P{l1kad1|}W{<6i+ zYKu;CH-9AbY%mG2p`f`qu~Wq;OeY9D5hb31C&oW~_@Y=}wJ~ z6;43DcIAvqVl@WsnBgEWX=QooK~X7+$3g(y1}U=WuqxUC+jW#X783hJa9bV;?lhbU zTC{3piX%3~64Zk2JyjR0%fr?RDm<25zAe-O7j0O&Tkq(`NncK1j2FK`zozShphZ+z zq0ldJ`5KMersC|%YrzNnH*&Bmgg)4gam0aNj6Ao(I&-xfb)|{&{>nP-5CwdF^`NZ@ ztE(*r$vRb=LO$?YtFG29hb8*8vDyCR@wpnCZ2<31B)}2~!H3}VZFMv>3J?jDi-<<^ zmgF4y;7P3=3r*Ad-L%43n3jUuL#1I|>9S*N>)JknUvt6{*!j%6$9l7Nvw3{}&1187 z{4w_q(6Du&kLsqbzGZu-{iBM*+C3^+OE-@S?89#z)e1h-#!+R*?`zwrmw%zyF$Vru z^Wdww4}8-?du6}FcC*<|HrvVXX*;?5N^UBwEDd@s-|SiKd)DvOL|wQ4X7lKg?|&TZ zKCj;Y*d1){e>}>!Isf0B|9|=OfBOKUjLPu7yfXd(#}P0|R7?PU$ytvsE4~D{LQC8O z$54QWt9&fg!~iicgjeF;UG&INQK{!1}+n^2uhT+Dt+v05n6OM7l3oAAQ7s+s z2mRysC>sUmoSt?pFw0I2Q`_daGA+?Nrsi zHdb#VR^6xO1MLOn*0PQ#lv~Bw1NlVNU4`76nDF5on0}k9L+kv1KnIXj{=a+swfkSY z`+J-D{}^9Q{4&7s~B zzT7i})eXd~(J*XGPo{)rs#VsccCUu@%ohgof6`TUUQLN5=CNk`uH?}PNx6&wq+;wV z0Z(WZ6^3aq8{HC%d7#PH!=d4Rz8-FKK9_lw6?QJCzV7C}5<#<+*e*1B^+8>qAFa+$ z)`@yCLf1MFp|IgJq=A6yuy@K9!~P!U6ZLWHP*?Zg>2mr|ABam&A69_39a?{>d34tk z@Zay8>O8A{o5I#_@N1C&%6JzKBm%CG|MvIyYyQ8_4>$M!ALZNFe>e8uFK_={@BWwd zzTSgg0COV!ta}5@UN&2gV*T05HWe|0u#EXBC$?pNnp9`5E>F5gVN_)Xsb zaw5TZ9}AmnW9`?*0B8(4+9ot*Rc z$BpDj;2Ir9d6W=Vz~d649w}YSg)!JhzXCt->qU3K?XB+@E;YBerXL*qB_*{%+pIPG zSrmwx{I9jIhx7wkCI9#LYVjWq_xl_9|1rLe{J)X^f4lNOtVsVbNmlrWJcJ(L9Qy|v z=E=OUOg8y$7%)5rQ^;PS1qiElv7jQN+PO7cg`G`T`vQa(0%MW0jC0D*V;-GpW9Dl4 zu}-q7%(tKWwh1pPcwt~e8?-=a;;%O0HKxW!tQ8OLBFC=HaznA&uT-qY!BIVmZq&Vs zs_bJXLW`Q6=QxVgZs)^NKiMs2HxrJP*yJe?rXj#aSFDo)`RldECY+IwDF5OnUxhC8;3$`s0dF2Y^ zgp=07Z5yKP>dXN?{^-6R;#b~i-)S|P2Y+;-ck>lryZmpCwC}G2tdRc?2X+6igWZk) z$D@23`F|t-|Gwn^s)N!)O8mu<^Af4Q@Q;(eP4|`iZReb|Wq!~0oLEor_m+wN4I;W- zNnK30b61P%3gJ8|Zq&}L%XZc!THk79Mkqhm57pXb)XUB$!|ILVN?;?PzS+3566RtR zkiK15s$e#uFLZuYFKS08?;^J0l9_>Pom}Q-+oI{%z4Z_dw3ghPRKf@v{iBk<{G6rX zplB)2bU*1zIfZD9ugs;%(0z)|NHubep^QaSB-kR~t!q8pTB>8McZj7Mvn__FXpxx) ze(?abzXP`A<&GkAM~mw9N8>Bpk4%<=FMjI7iAJEC8bV6ZmC{UI3DBZT}o8q9OcbB86SH9e1POguZBc2)* zzBQxgS~M}c{toyAIK?xo;k!*|-gi9G-TyP4sQtdamHPh&IhgKc1z2_eqdyo_^#AA2 z_YOAt|6_a`{ePqXe|i1?ZTXa>ypt`K9Ccl&xQTEs)1(ogVgl%_)|-9NK6#Q@hcD!% zB|F2?`}Lo-QZK+PXZ$G3#IB~(Yz?J;2mFJrxmKIzSOD5+>hBT?dRROjRTcWk>0oC%R^?_`watoAn{nz9hI({;S^q-5nerZr=ZSlyAwd zSqlPI+HUV+ac(xJI|gC7fDK=OZ~BD^R1ZVzlHwCn@}8D=JF5BJEbm{&dR}nLu)j2$ zlxWJW$H8usUMW^?9!_u6(4QO0#@ajXWQ4ZeZSG-!ZgaRnzk=;5?bRrqLRfi7>+zku zbk_3IF=k{f+|^CvWkf?=IIv`xcPHn%%0ggj9R&>nR10iXma}WTJpODoDux6>&^-EH zrm=j?o_&e&_pp7Qj~G&-d>|AeZ9nwP4Fa4s@#<1?vXEnqGN3zX1%o$&;h*JOE&tvB zJ)q_C-(b)`*ssWc{oVe?|Nl|GwcRhO?*l!g`-St?k1hUvPD!)*j82< zIdn}y)aGYh5Vdn#1W`9iMZtwKK8}n{L3rcN;+lr)JXMiA8jx-`kyD1fu(4W#t6PEg z8Ym5OmZ{BhvS=>VVEFNkwCq|_^a1)k*i&srqvKJnHH~dqRtuOW@i zM6CH6J7dQeC4#XkV!UJ4)mv6YeKJZ zItj17k!+q1{6-fLjiI=cp@6EXPQN!7sh#Rnk9ewXjb+4rhLSPElN80$gRBWe2jw^J zWJz&5XG)x#;FZ>i+@c@!Wga`Pe$TspzysU}WL9Ygs<@XUtv~-!yUy*JMCy+c6u>I% z|5^LmwEUVB%@bt1C^}3jtRdppa5c~5v3Aj}4DzXSH$RX`uGbLcQ+v_q`8H=Nwy=ku z0p%yixRfqv=M;_c#~KBdE)(AfMpr0}hmTKf5ou#sNp3X`xt}zh)KURR^VtZ|qPT0; zvUpLM6Anpds|m0~gVlAlE+k84p*3FbJy16zbTdNN9-&nUwn6ji)MEF&pHD$}y*zC|;_QSgo-T21?ol3a_fR;p-a zHSOgL;-sc;Y%IZl*srtwSH5I*HzV+>`=8IN@n3cayStnBe;(yq+x}}0htFvQ)-R_$ zrX_fZA^4Bwj_?Px0cZ2E@d+Jj0beRuF&88|> z#djy?ZMR9S7cU!&ULK!2{u*@%yAfZ=fct=PZHxpjt*qzD`dUV$X|Ta6yN+N)%iUAA za|9wYvkc-TN?O*g6kQ`cnerhR^c${XHukOzMG1K{9fI!(;}>VA+dn`3dB?Mqu!p2c zYA1-!a4LJ_1SN1W1pEDd&7C^{YFNF^6Qy8SRBr!#b0d^zwZuCHi2jZ-oc+85{`)H0b#@5vp zYqt)+tI5BE#ou3HOEs&Y^m%WYZabj;cK<_|!DAw}MvK+rr;4t$V!Rd|$Y9Fq7NZq5 zZ?Mwt-7q%RFmrb>a#xUNkTE``B%e%&U zc@ zb3>WIqs(MJ`p8i#x!s!&Mu@{fCHzkX9%dPnr$9j^0;B!6;?j>$4oxw}q%X>_*PCEI z%|~HGX1ys&^gmgiB)xAA``_H3GcE^?&QCQE3%`e~Aih`hjK8{h4Ln%Nvj%poKXOo( zki`t8YY&~G;AZTs&6=)*r$F=@9X$>2&2$_-ZI8lyrtzcM^;;h~9k|kQ=vX~-x3Sa0 zv4-+0n>ud6*=rHn|T`+>?*FQez zELhdi%V$7SGkT}h`xD*TtUKopHA;T3Rc(hJTD6|vcVfQ%=h1N)ExhAOPDe0WV+nsQ zM)h(Zp{sI~`ykw@azRy?^C_YDKT=#@i;2sMcUkqjvGVxsNmm9&G+u*$f4w*VV1~aPNPG-VwNl3!yPZQxsjbKwm>96>FSw zO5!|{S}4a!0k9YDg?)Xb>`Y;SMsw&HxSrx@3bfHpXoB|J!T!zdtq%a>G>>>rQK-~A zMHXgu-O??9q6zx=8uDlgaLPD>u~62P3wbLI;Pw`bPy};^6lSrW8V&XeEr1P+Q}DOF za8JzBJmG=@0D+HFj_4RhNOELM@-+4VqLk3kd;0WJs-6_h$Q;GsdWy6I0^~3uldl<= z;S|sEw5d0qKJ6&c<(a%oYtibAWs5WZ&G!7Ke(=|S?>znK|GWM7)7#r8KG=5H13m#x zE;tpOuugvE@L4w69?t%=%>E}Cd%w_c@>>=EV}G~${{P`&e|Ka5dyH>m|J&IAzPSAl z%<*g}9}^b{`65FvW@27OQ#1s6S(a{U@<>W8_-cL6vk8T*@lUWy9({U$%N5{QMxV=(C?L7_xh1YMPRuh7B= zeg^q8o$!F{5OTVD3M}W5^O87YDdLuOs8rLh9cu| zR&TfASxeHe1i)?ng*-m0IXqFW0V(`?1>x4vC zh=Nl&Ac{6$NNE^I@5d#BF3XcdfwIcbE5zH@(KmS3p0~SGj!grkes>wD4pnyCm@>Tx zhAlW#9WnMeQeKVDz&N+i1kU|=r-m0|4OStot<&v=PPBER6JrW^!?1X8y z(WpSpRkjQ(lsXk_=jk$vbfbG_%Q46u_y1+`pMKfnv&(<|{rdZldxMSq_ZZ(s{@ciZ zUtIq4j`bZ;^*S7zLV*cJl+^qu8um7Gy-2Kr<{@plf;9%RQWr&Kz7AT|0Mz=Xk$pZd zP=rTWRvvG8Fv}`|ndVkZt$Gp5@%+Yq(yxkT22(geaWGPkauo&`b8E8Zl;3;mU1;L( z#nl=Mf=2q%wg;^hx6PH@#oL;fD zbct654M0>MLmF#Ft>lOX_uH(VNp-Zif~Ml6m?vVXBq>mibfK8T1-nCeWlDp>GzM%Q zxe%+!v=FSIw0)TWIZa}Js&AS6rzY=bfB$>$`Tl-Y{@dTg|9zZqBmZsWzb`KTb=`BFPIpel9vro=01gz+MF)(&Q?{sVq&J>cu4NUS*rC|=PagvDMlTK*T(Mu4o zsa?+BGV)4;v$Dx7*jjZ}t^su7yKMw~l4|2==dQKrEZCv2xI$<_tCPAmfu)r)_=?qH z52u}RwwPJ%fZ*jQw7OT!9OLo^nd)LaUKErR23K{n)|=WIW%FG9U1~ZMWeJQB@c)+& z{15)p);8%gx=Gd9uT`L z^Kq)&)MW!W0TaXl)Ilzkzh79o_0>!sYE4tn;RJD6pnNLb^?3_Y*Xd2C$})jTtazWb zZ9FX%TfTiXZHaBCipu&f$;)*99#RwF4tIFR|Pd!&NOIuw;Tf-4tU zf@O?ACjO9~fkH^p&9+M9S%&B_Wa!&k(c*n!Hv)5|4#$nI4O@9?*#@x*+_i?Y zOYI5x!EeXXsNQ^sxX=sa=mld+W<^j%*@G*4Zh}<6!*3~>N#|2N^R666RP}4EnN>qv z%q-b!uh62>gP{*ZJ&t#6j;as;NTGUR$Pu6V_JGY$csNxAb`4GV?DSC)sR{YkTVF6Wf0Poq=AO+ zGU8sLg%}p1-|Ycccw*S&Zr~2XUBB*NymBBq^%X*ld^+J$xt%@DWmBNYLj+yzQB=!Nl8Sf-qoYND@7{keT^e@ovo{m+D8 z`^^3yyZzngHUE#pgN^?87~e+!+vtB^T>tZ4BRWwnOGpG0ZIRTMw~WnS2NG9#TIyKh zz)-~Ir21lNl~W9Zi|PZu8 zq54XOyqO~^h9jy{Wmo5*`XFUo#Ko3wqK8FIvVzh3r4N?iz;`D>i0H$Q_p#xB>U1x%xVD>PNGE3~Ah1thVq*$(iRvM-xouQPQJj=SIEl+mA@->|m zWzB7JtFSt*c2bmesluq6n}%Y=ZJv^Q4Vdcus~oLMi>ZIE?5=A0T*zvB+O$n5uo?#D z8o%GtB`A%n?7BjWXO>~k?yiQ0UZF)}+uGXG@SJ0NgR&F{nJd}Fugi}1TuLgwD z0B0qdIZ5&vdQI}w#-@$3c4patuv(Y<#6kzsDH);4LoFIn5if7p#MmMibb6wtX+aZ< zM6oeu`7ueyc#=~UdP8HCqDv7*->##rU|IFy=eRxh`~Ozze;JAIYXM&6|Gm50ug3o$ z>>h6PzsLA2={qB_lBH!-!23(z8Hvl&FK4-^T^4S+DciD&>{g6bb#J~U@_m!*Uvc5Z zp)w=!MP0OQ5Ntb=S+9U%B2n3Iz}FH>L3|l57EMu{Cx{mBq1XxCa7+o~XDVi^$hUrW zFK=Wt^LJ}WOHhteR;o2MtWIw6qZMxv&9=Ew76Sh`$r(rVTTB`M5%cNy3e1tvm40}Gr3TI)g*IL)*vXV6#`i&cUN4cshQt4FFxLQ4{hW$~3AyeXy^-~3wyUWs$k{A^iIB#z~ z`}cj895|NiyPQkr@B856Btf)%ozMEYCe}Z_Aohj64)P!6_w)f+W&hthtjT`|yPNp0 zkMeEo{~P=Nm$v`+o_gnEl_^yYb1}(LIXWmDlv}S5$VYpb<9w^ciQZG=K`Wy@NhoRW zgV9vv92LTdiLVgY4Um*r(X{FhJi8%>w2e$i!_V{)eZ5Hi5mNcYr55#K`DQfwRbLeI zg@omU9jl_sn~*kG(D0I^Q95&qN#?6esW>&&Wkl^OoW`dN_$olEuWP?c zwPk(wGtf=-TNJEQQLzyCuf?1Y)5FxbvbBX%ty7U2KFVw3$V8KpX{zRW5j`Fxg_hu} zra-+h?r4?pC3rb(%V7R`OqJubE4?j^ZhxS*@l{e|Zfu$%usX9^=88K>8cNltOEFU# z`sm>Y!=~HYx?NJPuBG%SD)yH|$5U2y7K^zU99h8u`Pa~^4Fm;IEbHbScGp$kdKI{Q z+1~&D@=`t>+?0OdJJ0QB<@@gHjqRXzEwc(&BDCJ0cFQWZSf?K4sJqm=&({omEwaBB zTd9ztv}?N$tRpYmOwJ*lATD2z-mWgbR;JZBdEB*a{IK8TRJqYH5EEIWe%3-#8CzRo zi7W)$1qAqtJ+rdFS8T`7+FU&<52dwse{SBvwi{D2QB5LQ#IRT$8MQLJwK7lic9TQIt|O0G4lkM{9%UCKxn4F@^DMf5blDLky3ef>6$1_B7-b$*Q z-vMEUD3%9@&G?+`*1lU3>-T~E^jGfxwyVhYLzdv@CRUud~j?yxWsaA8gC9GoslL<3{{~YqE(%u44Bq$ZZ zg^}~9bU9Nupe^lFK(l;Q!s;I-E-QECd=%SR#o!muW_EjHBz7XjBb$zRHgh%-^_Zee zwv|9_Tzlc>+}upAxt&+QXw*USu3my0Wdl>*$?Em}w)%gFr{ri_ZP)D@N}6Mu(~dRMmG{)g4E#v8Pm-Xi4psrgJAn$EwK; z)eeJlN|+KbC1Wxp8*9wlORy0Z$f%Kq0M99HH3 z{muE`<9sGEAH`@c!_lMO80tMw^u3TOAvZ#vyjh3hR#B`NIH4#T!a2l=x;1M@*M1}4 z9y05k7+@rc5e@D7+^CFlW!w(IC+WX(q66AkFQXS8J_cS>bc`r}lSyH>xS%hpd4(40 z>W_x+LQ`3tnJq2t{vZT*l=1?5b3}N>=MKT#i|)ztQGz2GGLbml)3rks0yjM7Z->Fa zx9Af?vGrkjw^=2hSMiVHxv1wJ3{)6?s~o&9!@l%twD}(U>$3l=8=2t(&OXcjKiEI0 z#edpA*xT&?kMXTu@=Q$hQucnLlFnMfmDl6w6bjFh-QP7xOd)%P7VW@(sUrJs2t13n z7gnI+K>0D0nXSvIrF;jrLSl|uTxZa7RR_L}(OJqB<|6RVj(u!n^9KD|*WKGiswZFv z_+pzhuQKBI=CR57z`Md}Jk+mMdo#pg3^^P+2P76ZWP{XmfQ@&j%Qp=x9w2;?p&@Wz zbmR&1Ol>@2VWeF>SGCRB{YBfX7tKF`(cwNyBR3j}z;HX2 z0IypAcMog+pL@F-|Bpxc*3kcor3c^?;E%^;Zu^_5ZHiHY>>L(}dhs`Muer_c)Cjgs zc1?;7E$P{s=M7=$E9!yWUiq|v3Hl`0%#Lkb(Y7a=IH@h%y$R(OxtvQybx!@F@=2+Q zbS+zifp4O?SiH^VCW|}jU0n&*Kzec3;h;8d{EzspTK_XbIZQq%+t26m|Jys*t=j(v z{k_fo???HTu4k(AeOG=jqT`4>P><%KGTbwY06duzCf6PRNlIe$0cSq2@9B!H{r$b> zOI}mXGv>mdyO+Q$0*&fmf^OqD`SCg`$mLHmAVd)c;|k6lY#I0RcHpIf&cJ0R^>TBRNqDXT$2C0Kbq?;rvDO)El8Oq2^g>oH7oRL^>R{`|#-z7h2AW%`b`LkFTrM zmv-r2$Y?#IbX85a-c(U2Rm=S#2;BR862e{yN03L;Ua=njKV;NmbTu^I-Ucw|#A!`S}Tymt2g~=@P%L+gs&mB_pI;j$Pt!hU`&ZiRlqd$#n{Xx7txlZ1MB9 zsHGvz(<639(zk?g?R6k4R)gCVlri*WI%TvZ)+D0~8^RALzwE5OjGlbjCHNb|8PEK~?l_v+H z#Y z&n*s{%?;_^d2KG7>Z>?%TD+`=)N-9V)ptkN&gLeq{#|wc{0#S?|E!;u|3k6G<4H;= zdiXk4$p8I=y~_Qs!S3PnjsNGPd|Tiga*n8aOJ9uua6LsS809#L@S2*h zEB2mIGhm(o)x!6ORkVg+&m8)(p#xIORNJk?QyR1s;aD6brP z-qWYwlNri{#`p9o_?xMFg84Kbg%O$cIL(m?iPwW!#(JD0)SE%Z5$!1s{oV7nw!mwM zjn3(LpMXA~e>sCV0iVD-nt)H<9gyC8!cmMb)q5%m31-{0W@sSa{+u7Ezq3*KfQ}k^=Rw`H%CL{N;TD z`XMx-gna@(9~^%3vm);k&~K|X9`KNz3Kvn_| zbbxIKla3T5M$(`~<@90V}uQ-4*lL8VwqQnaj)Q4c>MpG*&IQk?37Q5g}}=dtA&TVqp);i0kcr1OMjt;VKeIqEMhE{`YgHn2?L`oI!v zc!z@Pa@mx#BVe!1WCw{p_|lvj?C$LjIu|XYtXec&9-nuv+==RX=XUVgFxPMJoGztg z-enW1l({DK3a673Ox+4=^~|%hJy1@2Ric>kqWTsmZlhA1G(mS<(-i2c%|k#Xc#cxU zm<&4D0X|jFCaEnZM9M{`1L2i&-J3x&luGvIm8G(!A{$7;=}7VC+~iE*@&;cMrcMhLSJKwCOM?>eY?MksBHjTeZwH1k{Rk1 zB|71&_5UF3hr9jVe*c@@=N1O@pi|p)rjwR+$vhU_l4)Y99If6xOW+@tZhDo-VD3CY zSwa>whuh`LZ%tc(e1@$AZg>-|WzSx+Segf78+oGN(QPkUzIEFI({y^>LZmsVE@G0j zY)bayV~teX@87j8!G#E3Y-^_~r48vCGJ97Ey^B1)OccMP;C){)yPHtGQuwVr)z=8q zWjHwR#?xE zqZ-5B zN*BvX6aG%-5%qa3a5~x$)bVqw<~9{{&hT+W@)&0BqX>F#rGn literal 0 HcmV?d00001 diff --git a/test/sabnzbd/3.1.5/ix_values.yaml b/test/sabnzbd/3.1.5/ix_values.yaml new file mode 100644 index 00000000..70a2cef7 --- /dev/null +++ b/test/sabnzbd/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/sabnzbd + pullPolicy: IfNotPresent + tag: v3.2.1 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/sabnzbd/3.1.5/questions.yaml b/test/sabnzbd/3.1.5/questions.yaml new file mode 100644 index 00000000..d47bf059 --- /dev/null +++ b/test/sabnzbd/3.1.5/questions.yaml @@ -0,0 +1,452 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: HOST_WHITELIST_ENTRIES + label: "HostName Whitelist" + description: "If you use a reverse proxy, you might need to enter your hostname's here (comma seperated)" + schema: + type: string + default: "" + required: false + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36045 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/sabnzbd/3.1.5/templates/common.yaml b/test/sabnzbd/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/sabnzbd/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/sabnzbd/3.1.5/test_values.yaml b/test/sabnzbd/3.1.5/test_values.yaml new file mode 100644 index 00000000..b5ccdd61 --- /dev/null +++ b/test/sabnzbd/3.1.5/test_values.yaml @@ -0,0 +1,28 @@ +# Default values for Sabnzbd. + +image: + repository: ghcr.io/truecharts/sabnzbd + pullPolicy: IfNotPresent + tag: v3.2.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 8080 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/sabnzbd/3.1.5/values.yaml b/test/sabnzbd/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/sabnzbd/item.yaml b/test/sabnzbd/item.yaml new file mode 100644 index 00000000..b81149d2 --- /dev/null +++ b/test/sabnzbd/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars1.githubusercontent.com/u/960698?s=400&v=4 diff --git a/test/truecommand/3.1.5/CONFIG.md b/test/truecommand/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/truecommand/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/truecommand/3.1.5/Chart.lock b/test/truecommand/3.1.5/Chart.lock new file mode 100644 index 00000000..7d44d79e --- /dev/null +++ b/test/truecommand/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.892306191Z" diff --git a/test/truecommand/3.1.5/Chart.yaml b/test/truecommand/3.1.5/Chart.yaml new file mode 100644 index 00000000..c8ab27ff --- /dev/null +++ b/test/truecommand/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: truecommand +version: 3.1.5 +# upstream_version: 1.1.0 +appVersion: "nightly" +description: Aggregated management of TrueNAS devices +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/truecommand +icon: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png +keywords: + - truecommand +sources: + - https://github.com/truecharts/apps/tree/master/incubator/truecommand + - https://hub.docker.com/r/ixsystems/truecommand +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/test/truecommand/3.1.5/README.md b/test/truecommand/3.1.5/README.md new file mode 100644 index 00000000..8caf3b92 --- /dev/null +++ b/test/truecommand/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: nightly](https://img.shields.io/badge/AppVersion-nightly-informational?style=flat-square) + +Aggregated management of TrueNAS devices + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `truecommand` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `truecommand` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/truecommand/3.1.5/app-readme.md b/test/truecommand/3.1.5/app-readme.md new file mode 100644 index 00000000..8e146848 --- /dev/null +++ b/test/truecommand/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Aggregated management of TrueNAS devices +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Aggregated management of TrueNAS devices diff --git a/test/truecommand/3.1.5/charts/common-3.5.5.tgz b/test/truecommand/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/truecommand/3.1.5/ix_values.yaml b/test/truecommand/3.1.5/ix_values.yaml new file mode 100644 index 00000000..d2b8ab2a --- /dev/null +++ b/test/truecommand/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ixsystems/truecommand + pullPolicy: IfNotPresent + tag: nightly + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/truecommand/3.1.5/questions.yaml b/test/truecommand/3.1.5/questions.yaml new file mode 100644 index 00000000..1701b241 --- /dev/null +++ b/test/truecommand/3.1.5/questions.yaml @@ -0,0 +1,453 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36044 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/truecommand/3.1.5/templates/common.yaml b/test/truecommand/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/truecommand/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/truecommand/3.1.5/test_values.yaml b/test/truecommand/3.1.5/test_values.yaml new file mode 100644 index 00000000..ee4eb28f --- /dev/null +++ b/test/truecommand/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Jackett. + +image: + repository: ixsystems/truecommand + pullPolicy: IfNotPresent + tag: nightly + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/truecommand/3.1.5/values.yaml b/test/truecommand/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/truecommand/item.yaml b/test/truecommand/item.yaml new file mode 100644 index 00000000..9c10785b --- /dev/null +++ b/test/truecommand/item.yaml @@ -0,0 +1,3 @@ +categories: + - Administration +icon_url: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png diff --git a/test/tvheadend/4.1.5/CONFIG.md b/test/tvheadend/4.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/tvheadend/4.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/tvheadend/4.1.5/Chart.lock b/test/tvheadend/4.1.5/Chart.lock new file mode 100644 index 00000000..3987b9bb --- /dev/null +++ b/test/tvheadend/4.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:01.11612182Z" diff --git a/test/tvheadend/4.1.5/Chart.yaml b/test/tvheadend/4.1.5/Chart.yaml new file mode 100644 index 00000000..2e376dda --- /dev/null +++ b/test/tvheadend/4.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: tvheadend +version: 4.1.5 +upstream_version: 1.1.2 +appVersion: "latest" +description: TVheadend - a TV streaming server and digital video recorder +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/tvheadend +icon: https://avatars.githubusercontent.com/u/1908588?s=200&v=4 +keywords: + - tvheadend + - tv + - streaming + - dvb +sources: + - https://github.com/truecharts/apps/tree/master/incubator/tvheadend + - https://github.com/k8s-at-home/charts/tree/master/charts/tvheadend + - https://github.com/tvheadend/tvheadend +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/tvheadend/4.1.5/README.md b/test/tvheadend/4.1.5/README.md new file mode 100644 index 00000000..63f3c617 --- /dev/null +++ b/test/tvheadend/4.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 4.1.5](https://img.shields.io/badge/Version-4.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +TVheadend - a TV streaming server and digital video recorder + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `tvheadend` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `tvheadend` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/tvheadend/4.1.5/app-readme.md b/test/tvheadend/4.1.5/app-readme.md new file mode 100644 index 00000000..972a532e --- /dev/null +++ b/test/tvheadend/4.1.5/app-readme.md @@ -0,0 +1,3 @@ +TVheadend - a TV streaming server and digital video recorder +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +TVheadend - a TV streaming server and digital video recorder diff --git a/test/tvheadend/4.1.5/charts/common-3.5.5.tgz b/test/tvheadend/4.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 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 literal 0 HcmV?d00001 diff --git a/test/tvheadend/4.1.5/ix_values.yaml b/test/tvheadend/4.1.5/ix_values.yaml new file mode 100644 index 00000000..1d54e5cb --- /dev/null +++ b/test/tvheadend/4.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/tvheadend + pullPolicy: IfNotPresent + tag: latest + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/tvheadend/4.1.5/questions.yaml b/test/tvheadend/4.1.5/questions.yaml new file mode 100644 index 00000000..5a869bcc --- /dev/null +++ b/test/tvheadend/4.1.5/questions.yaml @@ -0,0 +1,492 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Service Configuration + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 9981 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9981 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36042 + required: true + - variable: htsp + label: "HTSP service" + description: "Service to connect to htsp" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 9982 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9982 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36043 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/tvheadend/4.1.5/templates/common.yaml b/test/tvheadend/4.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/tvheadend/4.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/tvheadend/4.1.5/test_values.yaml b/test/tvheadend/4.1.5/test_values.yaml new file mode 100644 index 00000000..4d5ca71d --- /dev/null +++ b/test/tvheadend/4.1.5/test_values.yaml @@ -0,0 +1,44 @@ +# Default values for tvheadend. + +image: + repository: linuxserver/tvheadend + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +# See https://github.com/linuxserver/docker-tvheadend#parameters +env: {} + # PUID: 1000 + # PGID: 1000 + # TZ: Europe/London + # RUN_OPTS: + +services: + main: + port: + port: 9981 + htsp: + enabled: true + type: ClusterIP + port: + port: 9982 + protocol: TCP + targetPort: 9982 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/tvheadend/4.1.5/values.yaml b/test/tvheadend/4.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/tvheadend/item.yaml b/test/tvheadend/item.yaml new file mode 100644 index 00000000..4e787795 --- /dev/null +++ b/test/tvheadend/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars.githubusercontent.com/u/1908588?s=200&v=4 diff --git a/test/unifi/3.1.5/CONFIG.md b/test/unifi/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/test/unifi/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/test/unifi/3.1.5/Chart.lock b/test/unifi/3.1.5/Chart.lock new file mode 100644 index 00000000..1cb7fec5 --- /dev/null +++ b/test/unifi/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:01.348637242Z" diff --git a/test/unifi/3.1.5/Chart.yaml b/test/unifi/3.1.5/Chart.yaml new file mode 100644 index 00000000..744da8ed --- /dev/null +++ b/test/unifi/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: unifi +version: 3.1.5 +upstream_version: 1.5.1 +appVersion: "auto" +description: Ubiquiti Network's Unifi Controller +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/unifi +icon: https://dl.ubnt.com/press/logo-UniFi.png +keywords: + - ubiquiti + - unifi +sources: + - https://github.com/truecharts/apps/tree/master/incubator/unifi + - https://github.com/jacobalberty/unifi-docker + - https://unifi-network.ui.com +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/test/unifi/3.1.5/README.md b/test/unifi/3.1.5/README.md new file mode 100644 index 00000000..048495ca --- /dev/null +++ b/test/unifi/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Ubiquiti Network's Unifi Controller + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `unifi` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `unifi` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/test/unifi/3.1.5/app-readme.md b/test/unifi/3.1.5/app-readme.md new file mode 100644 index 00000000..0e6732e4 --- /dev/null +++ b/test/unifi/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Ubiquiti Network's Unifi Controller +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Ubiquiti Network's Unifi Controller diff --git a/test/unifi/3.1.5/charts/common-3.5.5.tgz b/test/unifi/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d01688bb84b5e7afb21a34f05f9a7227fe79c198 GIT binary patch literal 16414 zcmV+(K;ge1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{d)qeBFuFhUufR*EZ|!^`CHa=F&SuYg?X>ktSS@AO^De_{(B8oFEQ@+j9Nc;s7Jfe^;z?e{QNpmEJ z5A&vEhK69udB%pl-URb$J_;i;>v5W+NW%1Bma!hE2=!)=aYTD+1bR3UHJGy3*Vo~M zkV%4Mc|3y?#CjtN(-^0dp2|wdg!BdtHZ&J%{X7m<`x zk|c;;N(5ygZwp)?4q%!R4i#3C0zS17_bgPsq7Dn`QCWHjZf-Ts1ddR07j!?!f)bNQ zQI_BcvLP6Fj8n+bWHIyr*xCZ$5(-WVtn3+>!vx1b%?`<%w}4dbcA&=)o#O}{MG?tU zE*TCkG8Ex4Mhsj}5uYLoAkc6CDnP)dBu`>6LO^jo_JICt2*xmBl54=K4sZfs9E<-5 zdMfxlU=uA#6Xh?bNba+MjGIacWI02jggqUDlyJag`(sTEz)Wt)&j3`2Far~mA~C*V zkTaZ4Bx1u&z|kyARHv(*TX5Aw>Aa-re-FXC%VW>m+5+z(#c-4ePGLSZ!%2`Zreszi zW6uEk2xnP>M4=xAC_%q_Ry&fIr$fLp z6on~?k>G;tOodENJ|SVIV?22cGg)4hHd33&31%=0M1q87VyWRZP?fB}ye)8?Gfrk8 zqnJ?47a&R?V^T1W@pz0V5`$NaP{9N+TBy+-O;MaDh1T*v6M6+^@CpHzQv?q z`z@x7i%IgmD(YD%%;F-(;E7%-Cy0X)WGEJEon2i?Tv5%?sYI^Ra*KrtI61p8CD=3F z^*J>QL>d#$^nMIxZ~-V{B$*4QrYs@kD$f9BOiUq?0!C&Cyej5}z?)|*RFoV`)N1(X z4c?5UK#wL_n@$62Y7T)vkPH0FRLqxNjG6eaBu=krf;2J)*7O4NVv>uor5-r_!OCBZ%a}z6C0;Bze5kn=3FSK zA8>lblnNzhk?sW5$_o_baxxv0l%tPaA`}_tYHu_7I$JCSG*6G%8A;y~!Zli*_>Lhu z1P6!Tn1t^r$upBOZv1&X74yUlB>#;>`x>(u#NR*zK(mm9N(Q_PP^ zq1s9*0LC#^!?l{TwFS;886j4TT*+TAlZk>C37(@AG5I$DitTa16e;5f*+ED(a+9Vx z0(dNE>NRFlk*1ddkwyWzP79o}YKcXyJf#dE@rrF+lvRteX*rX;F#C>XjS+tw%%MSa zI@T*kf+Dejo7&VCFG*KbOi2a1=5G_4j1*q_D2)$NAD1! zZ}L2Q$nMZ6AHFke#1GpQb9I%__-v*9f(T8 zbo3=jtx`#*2w2;;%n8eSPR9;nrbjhKu^vMbQ<~34h>Gl7h+SBzn8k)>4=kKAj$jPP zxU57|70SBhKVlY8)zN|(v8+bvFr*V zb56+|#|Xf5VZk~2|Me6{Qz@~I#8Uffjwy;mH65Eus|O@e1}sctI(+6twFr;-;JX6hSlubA~}72eYG?;;f(a7XRh;n5C^-a=Nsp}0L=AEhv&yf=?@GG3gU1~>ITG;HB+C?Ng4t&$ssZG74xb4n2&Bjn# z9)=*D;PhiFFi%(jBiUN985*Lk-d71iyDpSfp{|OAA&`ewfi@V035j4*zyOd*BTUcR zvPPcfc`+}WC#EwqeVAcQSR)U*GoV}RtBrTt-l^%L~D6`->ouob0feH{H9{Q|4eU~+PuO*yhz~;M`AsmW6>EnomlwtR8s-A ztxaJ^p3A7J(mY9?ft1v$Q(`|ZS|nyXe+Hr{A%$JK*knxYh=u@cPqJM=QgHO+g=hs# zV@PA5g;0syA9hB(=ULU9e1ot>hb2|)v(kC<^m zUz9*RdnSQ|Adx|))C${RfBybht@H+~GH)vk#{xlNqS9nJnM0{f1+peXc0STpT{1%f z%SU1oD4{^wonDg|4Z&Lk;~y#J=uH|a%nbhr4Z+|$?C5h^m6Pog!fQ!%Mp7_E$qeMF zkYQnxC^T0%D^dz;q#*3roIn9I%lP61Q!rQKSEw^nAszeXqpFiA>jS@gfmj$7xC zL1?Ke_LNekZK+31oSM-{CBGI$b)KS7^7_&oR_Mj!ofhq_Lp;$EbFPxcc#h*7CSs~w zDJ2!bXeuRsA+SklOPMppyjC)UMRk#A_nYr@oLY&?o+~kqV04vdHJny*F;4gtU8uj; zsBQN@zZUr0JwrS=eydUBNp0hqxo6Z7!&TtKVsR0@OI5--iX_maqA90$7gfD?H(gLo83 z0)lJIr}EDLDzbaBe{ePg{@|~>;o$I_a1ajqeZ|*;Dz(1^z&Be;L}tE8yS}~-opg^P z<20jo;va>+lEWlf0E&djh|*Z@mzD{pv|8!1Qn}*2FIXH+#qefoV`PBlsaT6GtGhl?OEBjNl6|1bcm`M=O-0qO zaf(H6gl3tINwLzJR#?UIRJBwoW@C~hr$`KPNEgp!%PE?X zxw1(|IZYN|M4{x$m?H|lE?N9_C{fO^5d)$uAA&)@KT}f;%?Mo#!C?2B*H|{}*Br4f zu-?{|<#uIGm?O_Se|LJK%KDu}{1b)B2>w9DTQ7%~Lh|Vx$Y8sgXf*6T0 zs~0pygmt*mqL-Abshujur&=(4Eu;8_9Nt{Hnx0xXF{4@^8jHovU!MqTE%SRej^$$c@B%9C>G6{PHk z#t|y?p7w5Uy_=gr>sEzP1}2FQg4n`!j5ZXXjNUtcW-%B zCDfg3vXl)UEUU}`Y^=^@XIodXHe#2UB|E_vLX|w>fJx_qTD=Ifa;t7C>)9>*((Bdc zd)TkO{}+?%!K8o{`~P15aJRDmAM8Cp-0c64@yY%F2OObPY}Rrgm%H9k2BRqgI_DWM z_Tk;Iuk4S$&hmHuFHfkIGq{k-an6uAH%$;gABD~jq!ZFCOR&&qmCnjb?4kEBjev}# zX-ufg*}_=%G!%ebokmVM&-4``D5(qyo%9j~#d<%S9=|-hcp2=5eb0NBCWx`(G!l#! z=1h8&AdtXoKq!C{isZSZp!1qyj?>9Az{r?iLyEi@Gfwd+=MIAmRhR)AfTRGXz(2YG zrx!l>=h4OK#WU~6)64JQyt@QH9=&~gbar|A@&deh3y$BMot$2tzB#)9Z@vXbXa54P zPR~xBnR6QSF_XtvgaRyBhvLw?K**`w2x|K5JOT+!CpnxTFd=h9Qz4L9tGkevJgIc+ zBimYYLeKm8;{4?Q4fOBeRO|zIj1e8`F(DZHv*%qFeT=0i7{f85ii;xzW+awp`NrYY z(#X##`2|H>OMqf`={;50%pxSuqmVS5h_a(3M@phG%`H6S0T~Hg0uFL{h;Mwv#TYBR z1#Bs{UGlV~3bE7KH{%*M&j@C4gcHm$Vr9{=ETv_#D|tFsQ0&bRheF>T7JlCi$dyse zxQZ9jojxdP6;)KeD`)K6vW=X1b%{vbj<5ka`4^le?TCapP)I*5SZ$Yl32Pswb*Raz z$M^;@WBpW?X~?7L51n`tnvy>>u;@_LXNI3fZuL_m``kMYhB*zbY;ET^Wg&;B)|sG{ zeTRk>71+L2O}NTV6U}Pijz!;>-mx~{Lw*hNU!li6lmNI&{@bnDe+~|wKi|lIkMV8f zzm5F&MdiP{h=0Wj^|11vWx!fn04x{HHVLr2AG;9&?;!$~w|8%DiW*H~3qj_VugbRX z{H{U3M*7@HpMSisF8>*C#)mrtTrU3&1_!&<_zwsD=eryE?=e2P{l1kad1|}W{<6i+ zYKu;CH-9AbY%mG2p`f`qu~Wq;OeY9D5hb31C&oW~_@Y=}wJ~ z6;43DcIAvqVl@WsnBgEWX=QooK~X7+$3g(y1}U=WuqxUC+jW#X783hJa9bV;?lhbU zTC{3piX%3~64Zk2JyjR0%fr?RDm<25zAe-O7j0O&Tkq(`NncK1j2FK`zozShphZ+z zq0ldJ`5KMersC|%YrzNnH*&Bmgg)4gam0aNj6Ao(I&-xfb)|{&{>nP-5CwdF^`NZ@ ztE(*r$vRb=LO$?YtFG29hb8*8vDyCR@wpnCZ2<31B)}2~!H3}VZFMv>3J?jDi-<<^ zmgF4y;7P3=3r*Ad-L%43n3jUuL#1I|>9S*N>)JknUvt6{*!j%6$9l7Nvw3{}&1187 z{4w_q(6Du&kLsqbzGZu-{iBM*+C3^+OE-@S?89#z)e1h-#!+R*?`zwrmw%zyF$Vru z^Wdww4}8-?du6}FcC*<|HrvVXX*;?5N^UBwEDd@s-|SiKd)DvOL|wQ4X7lKg?|&TZ zKCj;Y*d1){e>}>!Isf0B|9|=OfBOKUjLPu7yfXd(#}P0|R7?PU$ytvsE4~D{LQC8O z$54QWt9&fg!~iicgjeF;UG&INQK{!1}+n^2uhT+Dt+v05n6OM7l3oAAQ7s+s z2mRysC>sUmoSt?pFw0I2Q`_daGA+?Nrsi zHdb#VR^6xO1MLOn*0PQ#lv~Bw1NlVNU4`76nDF5on0}k9L+kv1KnIXj{=a+swfkSY z`+J-D{}^9Q{4&7s~B zzT7i})eXd~(J*XGPo{)rs#VsccCUu@%ohgof6`TUUQLN5=CNk`uH?}PNx6&wq+;wV z0Z(WZ6^3aq8{HC%d7#PH!=d4Rz8-FKK9_lw6?QJCzV7C}5<#<+*e*1B^+8>qAFa+$ z)`@yCLf1MFp|IgJq=A6yuy@K9!~P!U6ZLWHP*?Zg>2mr|ABam&A69_39a?{>d34tk z@Zay8>O8A{o5I#_@N1C&%6JzKBm%CG|MvIyYyQ8_4>$M!ALZNFe>e8uFK_={@BWwd zzTSgg0COV!ta}5@UN&2gV*T05HWe|0u#EXBC$?pNnp9`5E>F5gVN_)Xsb zaw5TZ9}AmnW9`?*0B8(4+9ot*Rc z$BpDj;2Ir9d6W=Vz~d649w}YSg)!JhzXCt->qU3K?XB+@E;YBerXL*qB_*{%+pIPG zSrmwx{I9jIhx7wkCI9#LYVjWq_xl_9|1rLe{J)X^f4lNOtVsVbNmlrWJcJ(L9Qy|v z=E=OUOg8y$7%)5rQ^;PS1qiElv7jQN+PO7cg`G`T`vQa(0%MW0jC0D*V;-GpW9Dl4 zu}-q7%(tKWwh1pPcwt~e8?-=a;;%O0HKxW!tQ8OLBFC=HaznA&uT-qY!BIVmZq&Vs zs_bJXLW`Q6=QxVgZs)^NKiMs2HxrJP*yJe?rXj#aSFDo)`RldECY+IwDF5OnUxhC8;3$`s0dF2Y^ zgp=07Z5yKP>dXN?{^-6R;#b~i-)S|P2Y+;-ck>lryZmpCwC}G2tdRc?2X+6igWZk) z$D@23`F|t-|Gwn^s)N!)O8mu<^Af4Q@Q;(eP4|`iZReb|Wq!~0oLEor_m+wN4I;W- zNnK30b61P%3gJ8|Zq&}L%XZc!THk79Mkqhm57pXb)XUB$!|ILVN?;?PzS+3566RtR zkiK15s$e#uFLZuYFKS08?;^J0l9_>Pom}Q-+oI{%z4Z_dw3ghPRKf@v{iBk<{G6rX zplB)2bU*1zIfZD9ugs;%(0z)|NHubep^QaSB-kR~t!q8pTB>8McZj7Mvn__FXpxx) ze(?abzXP`A<&GkAM~mw9N8>Bpk4%<=FMjI7iAJEC8bV6ZmC{UI3DBZT}o8q9OcbB86SH9e1POguZBc2)* zzBQxgS~M}c{toyAIK?xo;k!*|-gi9G-TyP4sQtdamHPh&IhgKc1z2_eqdyo_^#AA2 z_YOAt|6_a`{ePqXe|i1?ZTXa>ypt`K9Ccl&xQTEs)1(ogVgl%_)|-9NK6#Q@hcD!% zB|F2?`}Lo-QZK+PXZ$G3#IB~(Yz?J;2mFJrxmKIzSOD5+>hBT?dRROjRTcWk>0oC%R^?_`watoAn{nz9hI({;S^q-5nerZr=ZSlyAwd zSqlPI+HUV+ac(xJI|gC7fDK=OZ~BD^R1ZVzlHwCn@}8D=JF5BJEbm{&dR}nLu)j2$ zlxWJW$H8usUMW^?9!_u6(4QO0#@ajXWQ4ZeZSG-!ZgaRnzk=;5?bRrqLRfi7>+zku zbk_3IF=k{f+|^CvWkf?=IIv`xcPHn%%0ggj9R&>nR10iXma}WTJpODoDux6>&^-EH zrm=j?o_&e&_pp7Qj~G&-d>|AeZ9nwP4Fa4s@#<1?vXEnqGN3zX1%o$&;h*JOE&tvB zJ)q_C-(b)`*ssWc{oVe?|Nl|GwcRhO?*l!g`-St?k1hUvPD!)*j82< zIdn}y)aGYh5Vdn#1W`9iMZtwKK8}n{L3rcN;+lr)JXMiA8jx-`kyD1fu(4W#t6PEg z8Ym5OmZ{BhvS=>VVEFNkwCq|_^a1)k*i&srqvKJnHH~dqRtuOW@i zM6CH6J7dQeC4#XkV!UJ4)mv6YeKJZ zItj17k!+q1{6-fLjiI=cp@6EXPQN!7sh#Rnk9ewXjb+4rhLSPElN80$gRBWe2jw^J zWJz&5XG)x#;FZ>i+@c@!Wga`Pe$TspzysU}WL9Ygs<@XUtv~-!yUy*JMCy+c6u>I% z|5^LmwEUVB%@bt1C^}3jtRdppa5c~5v3Aj}4DzXSH$RX`uGbLcQ+v_q`8H=Nwy=ku z0p%yixRfqv=M;_c#~KBdE)(AfMpr0}hmTKf5ou#sNp3X`xt}zh)KURR^VtZ|qPT0; zvUpLM6Anpds|m0~gVlAlE+k84p*3FbJy16zbTdNN9-&nUwn6ji)MEF&pHD$}y*zC|;_QSgo-T21?ol3a_fR;p-a zHSOgL;-sc;Y%IZl*srtwSH5I*HzV+>`=8IN@n3cayStnBe;(yq+x}}0htFvQ)-R_$ zrX_fZA^4Bwj_?Px0cZ2E@d+Jj0beRuF&88|> z#djy?ZMR9S7cU!&ULK!2{u*@%yAfZ=fct=PZHxpjt*qzD`dUV$X|Ta6yN+N)%iUAA za|9wYvkc-TN?O*g6kQ`cnerhR^c${XHukOzMG1K{9fI!(;}>VA+dn`3dB?Mqu!p2c zYA1-!a4LJ_1SN1W1pEDd&7C^{YFNF^6Qy8SRBr!#b0d^zwZuCHi2jZ-oc+85{`)H0b#@5vp zYqt)+tI5BE#ou3HOEs&Y^m%WYZabj;cK<_|!DAw}MvK+rr;4t$V!Rd|$Y9Fq7NZq5 zZ?Mwt-7q%RFmrb>a#xUNkTE``B%e%&U zc@ zb3>WIqs(MJ`p8i#x!s!&Mu@{fCHzkX9%dPnr$9j^0;B!6;?j>$4oxw}q%X>_*PCEI z%|~HGX1ys&^gmgiB)xAA``_H3GcE^?&QCQE3%`e~Aih`hjK8{h4Ln%Nvj%poKXOo( zki`t8YY&~G;AZTs&6=)*r$F=@9X$>2&2$_-ZI8lyrtzcM^;;h~9k|kQ=vX~-x3Sa0 zv4-+0n>ud6*=rHn|T`+>?*FQez zELhdi%V$7SGkT}h`xD*TtUKopHA;T3Rc(hJTD6|vcVfQ%=h1N)ExhAOPDe0WV+nsQ zM)h(Zp{sI~`ykw@azRy?^C_YDKT=#@i;2sMcUkqjvGVxsNmm9&G+u*$f4w*VV1~aPNPG-VwNl3!yPZQxsjbKwm>96>FSw zO5!|{S}4a!0k9YDg?)Xb>`Y;SMsw&HxSrx@3bfHpXoB|J!T!zdtq%a>G>>>rQK-~A zMHXgu-O??9q6zx=8uDlgaLPD>u~62P3wbLI;Pw`bPy};^6lSrW8V&XeEr1P+Q}DOF za8JzBJmG=@0D+HFj_4RhNOELM@-+4VqLk3kd;0WJs-6_h$Q;GsdWy6I0^~3uldl<= z;S|sEw5d0qKJ6&c<(a%oYtibAWs5WZ&G!7Ke(=|S?>znK|GWM7)7#r8KG=5H13m#x zE;tpOuugvE@L4w69?t%=%>E}Cd%w_c@>>=EV}G~${{P`&e|Ka5dyH>m|J&IAzPSAl z%<*g}9}^b{`65FvW@27OQ#1s6S(a{U@<>W8_-cL6vk8T*@lUWy9({U$%N5{QMxV=(C?L7_xh1YMPRuh7B= zeg^q8o$!F{5OTVD3M}W5^O87YDdLuOs8rLh9cu| zR&TfASxeHe1i)?ng*-m0IXqFW0V(`?1>x4vC zh=Nl&Ac{6$NNE^I@5d#BF3XcdfwIcbE5zH@(KmS3p0~SGj!grkes>wD4pnyCm@>Tx zhAlW#9WnMeQeKVDz&N+i1kU|=r-m0|4OStot<&v=PPBER6JrW^!?1X8y z(WpSpRkjQ(lsXk_=jk$vbfbG_%Q46u_y1+`pMKfnv&(<|{rdZldxMSq_ZZ(s{@ciZ zUtIq4j`bZ;^*S7zLV*cJl+^qu8um7Gy-2Kr<{@plf;9%RQWr&Kz7AT|0Mz=Xk$pZd zP=rTWRvvG8Fv}`|ndVkZt$Gp5@%+Yq(yxkT22(geaWGPkauo&`b8E8Zl;3;mU1;L( z#nl=Mf=2q%wg;^hx6PH@#oL;fD zbct654M0>MLmF#Ft>lOX_uH(VNp-Zif~Ml6m?vVXBq>mibfK8T1-nCeWlDp>GzM%Q zxe%+!v=FSIw0)TWIZa}Js&AS6rzY=bfB$>$`Tl-Y{@dTg|9zZqBmZsWzb`KTb=`BFPIpel9vro=01gz+MF)(&Q?{sVq&J>cu4NUS*rC|=PagvDMlTK*T(Mu4o zsa?+BGV)4;v$Dx7*jjZ}t^su7yKMw~l4|2==dQKrEZCv2xI$<_tCPAmfu)r)_=?qH z52u}RwwPJ%fZ*jQw7OT!9OLo^nd)LaUKErR23K{n)|=WIW%FG9U1~ZMWeJQB@c)+& z{15)p);8%gx=Gd9uT`L z^Kq)&)MW!W0TaXl)Ilzkzh79o_0>!sYE4tn;RJD6pnNLb^?3_Y*Xd2C$})jTtazWb zZ9FX%TfTiXZHaBCipu&f$;)*99#RwF4tIFR|Pd!&NOIuw;Tf-4tU zf@O?ACjO9~fkH^p&9+M9S%&B_Wa!&k(c*n!Hv)5|4#$nI4O@9?*#@x*+_i?Y zOYI5x!EeXXsNQ^sxX=sa=mld+W<^j%*@G*4Zh}<6!*3~>N#|2N^R666RP}4EnN>qv z%q-b!uh62>gP{*ZJ&t#6j;as;NTGUR$Pu6V_JGY$csNxAb`4GV?DSC)sR{YkTVF6Wf0Poq=AO+ zGU8sLg%}p1-|Ycccw*S&Zr~2XUBB*NymBBq^%X*ld^+J$xt%@DWmBNYLj+yzQB=!Nl8Sf-qoYND@7{keT^e@ovo{m+D8 z`^^3yyZzngHUE#pgN^?87~e+!+vtB^T>tZ4BRWwnOGpG0ZIRTMw~WnS2NG9#TIyKh zz)-~Ir21lNl~W9Zi|PZu8 zq54XOyqO~^h9jy{Wmo5*`XFUo#Ko3wqK8FIvVzh3r4N?iz;`D>i0H$Q_p#xB>U1x%xVD>PNGE3~Ah1thVq*$(iRvM-xouQPQJj=SIEl+mA@->|m zWzB7JtFSt*c2bmesluq6n}%Y=ZJv^Q4Vdcus~oLMi>ZIE?5=A0T*zvB+O$n5uo?#D z8o%GtB`A%n?7BjWXO>~k?yiQ0UZF)}+uGXG@SJ0NgR&F{nJd}Fugi}1TuLgwD z0B0qdIZ5&vdQI}w#-@$3c4patuv(Y<#6kzsDH);4LoFIn5if7p#MmMibb6wtX+aZ< zM6oeu`7ueyc#=~UdP8HCqDv7*->##rU|IFy=eRxh`~Ozze;JAIYXM&6|Gm50ug3o$ z>>h6PzsLA2={qB_lBH!-!23(z8Hvl&FK4-^T^4S+DciD&>{g6bb#J~U@_m!*Uvc5Z zp)w=!MP0OQ5Ntb=S+9U%B2n3Iz}FH>L3|l57EMu{Cx{mBq1XxCa7+o~XDVi^$hUrW zFK=Wt^LJ}WOHhteR;o2MtWIw6qZMxv&9=Ew76Sh`$r(rVTTB`M5%cNy3e1tvm40}Gr3TI)g*IL)*vXV6#`i&cUN4cshQt4FFxLQ4{hW$~3AyeXy^-~3wyUWs$k{A^iIB#z~ z`}cj895|NiyPQkr@B856Btf)%ozMEYCe}Z_Aohj64)P!6_w)f+W&hthtjT`|yPNp0 zkMeEo{~P=Nm$v`+o_gnEl_^yYb1}(LIXWmDlv}S5$VYpb<9w^ciQZG=K`Wy@NhoRW zgV9vv92LTdiLVgY4Um*r(X{FhJi8%>w2e$i!_V{)eZ5Hi5mNcYr55#K`DQfwRbLeI zg@omU9jl_sn~*kG(D0I^Q95&qN#?6esW>&&Wkl^OoW`dN_$olEuWP?c zwPk(wGtf=-TNJEQQLzyCuf?1Y)5FxbvbBX%ty7U2KFVw3$V8KpX{zRW5j`Fxg_hu} zra-+h?r4?pC3rb(%V7R`OqJubE4?j^ZhxS*@l{e|Zfu$%usX9^=88K>8cNltOEFU# z`sm>Y!=~HYx?NJPuBG%SD)yH|$5U2y7K^zU99h8u`Pa~^4Fm;IEbHbScGp$kdKI{Q z+1~&D@=`t>+?0OdJJ0QB<@@gHjqRXzEwc(&BDCJ0cFQWZSf?K4sJqm=&({omEwaBB zTd9ztv}?N$tRpYmOwJ*lATD2z-mWgbR;JZBdEB*a{IK8TRJqYH5EEIWe%3-#8CzRo zi7W)$1qAqtJ+rdFS8T`7+FU&<52dwse{SBvwi{D2QB5LQ#IRT$8MQLJwK7lic9TQIt|O0G4lkM{9%UCKxn4F@^DMf5blDLky3ef>6$1_B7-b$*Q z-vMEUD3%9@&G?+`*1lU3>-T~E^jGfxwyVhYLzdv@CRUud~j?yxWsaA8gC9GoslL<3{{~YqE(%u44Bq$ZZ zg^}~9bU9Nupe^lFK(l;Q!s;I-E-QECd=%SR#o!muW_EjHBz7XjBb$zRHgh%-^_Zee zwv|9_Tzlc>+}upAxt&+QXw*USu3my0Wdl>*$?Em}w)%gFr{ri_ZP)D@N}6Mu(~dRMmG{)g4E#v8Pm-Xi4psrgJAn$EwK; z)eeJlN|+KbC1Wxp8*9wlORy0Z$f%Kq0M99HH3 z{muE`<9sGEAH`@c!_lMO80tMw^u3TOAvZ#vyjh3hR#B`NIH4#T!a2l=x;1M@*M1}4 z9y05k7+@rc5e@D7+^CFlW!w(IC+WX(q66AkFQXS8J_cS>bc`r}lSyH>xS%hpd4(40 z>W_x+LQ`3tnJq2t{vZT*l=1?5b3}N>=MKT#i|)ztQGz2GGLbml)3rks0yjM7Z->Fa zx9Af?vGrkjw^=2hSMiVHxv1wJ3{)6?s~o&9!@l%twD}(U>$3l=8=2t(&OXcjKiEI0 z#edpA*xT&?kMXTu@=Q$hQucnLlFnMfmDl6w6bjFh-QP7xOd)%P7VW@(sUrJs2t13n z7gnI+K>0D0nXSvIrF;jrLSl|uTxZa7RR_L}(OJqB<|6RVj(u!n^9KD|*WKGiswZFv z_+pzhuQKBI=CR57z`Md}Jk+mMdo#pg3^^P+2P76ZWP{XmfQ@&j%Qp=x9w2;?p&@Wz zbmR&1Ol>@2VWeF>SGCRB{YBfX7tKF`(cwNyBR3j}z;HX2 z0IypAcMog+pL@F-|Bpxc*3kcor3c^?;E%^;Zu^_5ZHiHY>>L(}dhs`Muer_c)Cjgs zc1?;7E$P{s=M7=$E9!yWUiq|v3Hl`0%#Lkb(Y7a=IH@h%y$R(OxtvQybx!@F@=2+Q zbS+zifp4O?SiH^VCW|}jU0n&*Kzec3;h;8d{EzspTK_XbIZQq%+t26m|Jys*t=j(v z{k_fo???HTu4k(AeOG=jqT`4>P><%KGTbwY06duzCf6PRNlIe$0cSq2@9B!H{r$b> zOI}mXGv>mdyO+Q$0*&fmf^OqD`SCg`$mLHmAVd)c;|k6lY#I0RcHpIf&cJ0R^>TBRNqDXT$2C0Kbq?;rvDO)El8Oq2^g>oH7oRL^>R{`|#-z7h2AW%`b`LkFTrM zmv-r2$Y?#IbX85a-c(U2Rm=S#2;BR862e{yN03L;Ua=njKV;NmbTu^I-Ucw|#A!`S}Tymt2g~=@P%L+gs&mB_pI;j$Pt!hU`&ZiRlqd$#n{Xx7txlZ1MB9 zsHGvz(<639(zk?g?R6k4R)gCVlri*WI%TvZ)+D0~8^RALzwE5OjGlbjCHNb|8PEK~?l_v+H z#Y z&n*s{%?;_^d2KG7>Z>?%TD+`=)N-9V)ptkN&gLeq{#|wc{0#S?|E!;u|3k6G<4H;= zdiXk4$p8I=y~_Qs!S3PnjsNGPd|Tiga*n8aOJ9uua6LsS809#L@S2*h zEB2mIGhm(o)x!6ORkVg+&m8)(p#xIORNJk?QyR1s;aD6brP z-qWYwlNri{#`p9o_?xMFg84Kbg%O$cIL(m?iPwW!#(JD0)SE%Z5$!1s{oV7nw!mwM zjn3(LpMXA~e>sCV0iVD-nt)H<9gyC8!cmMb)q5%m31-{0W@sSa{+u7Ezq3*KfQ}k^=Rw`H%CL{N;TD z`XMx-gna@(9~^%3vm);k&~K|X9`KNz3Kvn_| zbbxIKla3T5M$(`~<@90V}uQ-4*lL8VwqQnaj)Q4c>MpG*&IQk?37Q5g}}=dtA&TVqp);i0kcr1OMjt;VKeIqEMhE{`YgHn2?L`oI!v zc!z@Pa@mx#BVe!1WCw{p_|lvj?C$LjIu|XYtXec&9-nuv+==RX=XUVgFxPMJoGztg z-enW1l({DK3a673Ox+4=^~|%hJy1@2Ric>kqWTsmZlhA1G(mS<(-i2c%|k#Xc#cxU zm<&4D0X|jFCaEnZM9M{`1L2i&-J3x&luGvIm8G(!A{$7;=}7VC+~iE*@&;cMrcMhLSJKwCOM?>eY?MksBHjTeZwH1k{Rk1 zB|71&_5UF3hr9jVe*c@@=N1O@pi|p)rjwR+$vhU_l4)Y99If6xOW+@tZhDo-VD3CY zSwa>whuh`LZ%tc(e1@$AZg>-|WzSx+Segf78+oGN(QPkUzIEFI({y^>LZmsVE@G0j zY)bayV~teX@87j8!G#E3Y-^_~r48vCGJ97Ey^B1)OccMP;C){)yPHtGQuwVr)z=8q zWjHwR#?xE zqZ-5B zN*BvX6aG%-5%qa3a5~x$)bVqw<~9{{&hT+W@)&0BqX>F#rGn literal 0 HcmV?d00001 diff --git a/test/unifi/3.1.5/ix_values.yaml b/test/unifi/3.1.5/ix_values.yaml new file mode 100644 index 00000000..a7c2aa22 --- /dev/null +++ b/test/unifi/3.1.5/ix_values.yaml @@ -0,0 +1,21 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: jacobalberty/unifi + tag: 6.1.71 + pullPolicy: IfNotPresent + + +envTpl: +# Permissions Settings + UNIFI_GID: "{{ .Values.PUID }}" + UNIFI_UID: "{{ .Values.PGID }}" + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/test/unifi/3.1.5/questions.yaml b/test/unifi/3.1.5/questions.yaml new file mode 100644 index 00000000..9b329892 --- /dev/null +++ b/test/unifi/3.1.5/questions.yaml @@ -0,0 +1,635 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTPS" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8443 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8443 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36035 + required: true + - variable: tcp + label: "Unifi Device Communications" + description: "This services is used for devices to communicate with the controller" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36036 + required: true + - variable: udp + label: "Stun Device Communications" + description: "This services is used for devices to communicate with the controller using STUN" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 3478 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 3478 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36037 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/unifi" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: tcp + label: "TCP Ingress Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable TCP Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + label: "Select Ingress Type" + schema: + type: string + default: "TCP" + required: true + editable: false + hidden: true + - variable: entrypoint + label: "Select Entrypoint" + schema: + type: string + default: "unificom" + required: true + enum: + - value: "unificom" + description: "Unifi Communications TCP: port 8080" + - variable: udp + label: "UDP Ingress Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable UDP Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + label: "Select Ingress Type" + schema: + type: string + default: "UDP" + required: true + editable: false + hidden: true + - variable: entrypoint + label: "Select Entrypoint" + schema: + type: string + default: "stun-udp" + required: true + enum: + - value: "stun-udp" + description: "STUN UDP: port 3478" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/test/unifi/3.1.5/templates/common.yaml b/test/unifi/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/test/unifi/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/test/unifi/3.1.5/test_values.yaml b/test/unifi/3.1.5/test_values.yaml new file mode 100644 index 00000000..b8989031 --- /dev/null +++ b/test/unifi/3.1.5/test_values.yaml @@ -0,0 +1,54 @@ +# Default values for Unifi. + +image: + repository: jacobalberty/unifi + tag: 6.1.71 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +envTpl: +# Permissions Settings + UNIFI_GID: "{{ .Values.PUID }}" + UNIFI_UID: "{{ .Values.PGID }}" + +services: + main: + port: + port: 8443 + tcp: + enabled: true + type: ClusterIP + port: + port: 8080 + protocol: TCP + targetPort: 8080 + udp: + enabled: true + type: ClusterIP + port: + port: 3478 + protocol: UDP + targetPort: 3478 + +env: {} + # TZ: + # PUID: + # PGID: + +persistence: + config: + enabled: true + mountPath: "/unifi" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/test/unifi/3.1.5/values.yaml b/test/unifi/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/test/unifi/item.yaml b/test/unifi/item.yaml new file mode 100644 index 00000000..288785c1 --- /dev/null +++ b/test/unifi/item.yaml @@ -0,0 +1,3 @@ +categories: + - Networking +icon_url: https://dl.ubnt.com/press/logo-UniFi.png From cb1c04726c02f235519ef5530cc6145ba3c994a7 Mon Sep 17 00:00:00 2001 From: kjeld Schouten-Lebbing Date: Sat, 8 May 2021 12:40:31 +0200 Subject: [PATCH 3/6] add very basic CI example --- .github/workflows/PR_testing.yaml | 36 +++++++++++++++++++++++++++++ .github/workflows/Push_testing.yaml | 17 ++++++++++++++ README.md | 3 ++- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/PR_testing.yaml create mode 100644 .github/workflows/Push_testing.yaml diff --git a/.github/workflows/PR_testing.yaml b/.github/workflows/PR_testing.yaml new file mode 100644 index 00000000..001e3c06 --- /dev/null +++ b/.github/workflows/PR_testing.yaml @@ -0,0 +1,36 @@ +name: "Apps: Test PR" + +on: [pull_request] + +jobs: + test-apps: + runs-on: ubuntu-latest + container: + image: ixsystems/catalog_validation:latest + + steps: + - name: Install Helm + run: /bin/bash -c "curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash" + + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Fetch base branch history + run: git fetch origin master:master + + - name: Setup catalog validation + run: | + sudo apt update > /dev/null 2>&1 + sudo apt install -y python3-all-dev python3-pip python3-setuptools > /dev/null 2>&1 + git clone https://github.com/truenas/catalog_validation + sudo pip3 install --disable-pip-version-check --exists-action w -r catalog_validation/requirements.txt > /dev/null 2>&1 + sudo pip3 install -U catalog_validation/. + + - name: Validate catalog format + run: | + /bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD" + + - name: Validate changed charts + run: /bin/bash -c "PWD=${pwd}; sudo /usr/local/bin/charts_validate deploy --path $PWD" \ No newline at end of file diff --git a/.github/workflows/Push_testing.yaml b/.github/workflows/Push_testing.yaml new file mode 100644 index 00000000..47d58ac7 --- /dev/null +++ b/.github/workflows/Push_testing.yaml @@ -0,0 +1,17 @@ +name: "Apps: Test Push" + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ixsystems/catalog_validation:latest + + steps: + - uses: actions/checkout@v1 + name: Checkout + + - name: Validate catalog format + run: | + /bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD" \ No newline at end of file diff --git a/README.md b/README.md index 52c27e1c..e57c7fee 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,5 @@ It contains: - Base folder structure - Basic required files - 3 example Trains (charts, stable and test) -- 1 example app in each train (each based on TrueCharts) \ No newline at end of file +- 1 example app in each train (each based on TrueCharts) +- Basic CI to test PR's and catalog-health From 1e939116ce08820baed38e177a404dadf89703df Mon Sep 17 00:00:00 2001 From: kjeld Schouten-Lebbing Date: Sat, 8 May 2021 12:42:35 +0200 Subject: [PATCH 4/6] add an example library --- README.md | 2 + library/common/.helmignore | 23 ++ library/common/Chart.yaml | 26 ++ library/common/README.md | 151 +++++++++ library/common/templates/_all.tpl | 27 ++ library/common/templates/_daemonset.tpl | 52 +++ library/common/templates/_deployment.tpl | 56 ++++ library/common/templates/_ingress.tpl | 122 +++++++ library/common/templates/_pvc.tpl | 36 ++ library/common/templates/_serviceaccount.tpl | 15 + library/common/templates/_services.tpl | 46 +++ library/common/templates/_statefulset.tpl | 71 ++++ library/common/templates/classes/_pvc.tpl | 62 ++++ library/common/templates/classes/_service.tpl | 99 ++++++ .../templates/classes/_service_ports.tpl | 47 +++ .../classes/ingress/_externalService.tpl | 63 ++++ .../templates/classes/ingress/_ingress.tpl | 148 +++++++++ .../classes/ingress/_ingressRoute.tpl | 127 +++++++ .../templates/lib/chart/_capabilities.tpl | 146 ++++++++ .../common/templates/lib/chart/_errors.tpl | 38 +++ .../common/templates/lib/chart/_images.tpl | 65 ++++ .../common/templates/lib/chart/_labels.tpl | 55 +++ library/common/templates/lib/chart/_names.tpl | 62 ++++ library/common/templates/lib/chart/_utils.tpl | 80 +++++ .../common/templates/lib/chart/_values.tpl | 29 ++ .../templates/lib/controller/_container.tpl | 92 +++++ .../common/templates/lib/controller/_pod.tpl | 69 ++++ .../templates/lib/controller/_ports.tpl | 76 +++++ .../templates/lib/controller/_probes.tpl | 41 +++ .../lib/controller/_volumeMounts.tpl | 62 ++++ .../templates/lib/controller/_volumes.tpl | 84 +++++ .../templates/lib/resources/_certHelpers.tpl | 32 ++ .../templates/lib/resources/_certSecret.yaml | 25 ++ .../common/templates/lib/resources/_certs.tpl | 24 ++ .../lib/resources/_portal_config.tpl | 64 ++++ .../lib/storage/_mountPermissions.tpl | 77 +++++ library/common/values.yaml | 314 ++++++++++++++++++ 37 files changed, 2608 insertions(+) create mode 100644 library/common/.helmignore create mode 100644 library/common/Chart.yaml create mode 100644 library/common/README.md create mode 100644 library/common/templates/_all.tpl create mode 100644 library/common/templates/_daemonset.tpl create mode 100644 library/common/templates/_deployment.tpl create mode 100644 library/common/templates/_ingress.tpl create mode 100644 library/common/templates/_pvc.tpl create mode 100644 library/common/templates/_serviceaccount.tpl create mode 100644 library/common/templates/_services.tpl create mode 100644 library/common/templates/_statefulset.tpl create mode 100644 library/common/templates/classes/_pvc.tpl create mode 100644 library/common/templates/classes/_service.tpl create mode 100644 library/common/templates/classes/_service_ports.tpl create mode 100644 library/common/templates/classes/ingress/_externalService.tpl create mode 100644 library/common/templates/classes/ingress/_ingress.tpl create mode 100644 library/common/templates/classes/ingress/_ingressRoute.tpl create mode 100644 library/common/templates/lib/chart/_capabilities.tpl create mode 100644 library/common/templates/lib/chart/_errors.tpl create mode 100644 library/common/templates/lib/chart/_images.tpl create mode 100644 library/common/templates/lib/chart/_labels.tpl create mode 100644 library/common/templates/lib/chart/_names.tpl create mode 100644 library/common/templates/lib/chart/_utils.tpl create mode 100644 library/common/templates/lib/chart/_values.tpl create mode 100644 library/common/templates/lib/controller/_container.tpl create mode 100644 library/common/templates/lib/controller/_pod.tpl create mode 100644 library/common/templates/lib/controller/_ports.tpl create mode 100644 library/common/templates/lib/controller/_probes.tpl create mode 100644 library/common/templates/lib/controller/_volumeMounts.tpl create mode 100644 library/common/templates/lib/controller/_volumes.tpl create mode 100644 library/common/templates/lib/resources/_certHelpers.tpl create mode 100644 library/common/templates/lib/resources/_certSecret.yaml create mode 100644 library/common/templates/lib/resources/_certs.tpl create mode 100644 library/common/templates/lib/resources/_portal_config.tpl create mode 100644 library/common/templates/lib/storage/_mountPermissions.tpl create mode 100644 library/common/values.yaml diff --git a/README.md b/README.md index e57c7fee..d911e3d3 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,6 @@ It contains: - Basic required files - 3 example Trains (charts, stable and test) - 1 example app in each train (each based on TrueCharts) +- 1 library train (which is not processed by CI +- 1 example library (common) - Basic CI to test PR's and catalog-health diff --git a/library/common/.helmignore b/library/common/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/library/common/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/library/common/Chart.yaml b/library/common/Chart.yaml new file mode 100644 index 00000000..67d13c13 --- /dev/null +++ b/library/common/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: common +version: 3.5.5 +# upstream_version: +appVersion: none +description: Function library for TrueCharts +type: library +deprecated: false +home: https://github.com/truecharts/apps/tree/master/common +icon: https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png +keywords: + - truecharts + - library-chart + - common +sources: + - https://github.com/truecharts/apps/tree/master/library/common +# dependencies: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/library/common/README.md b/library/common/README.md new file mode 100644 index 00000000..7b8dbf3c --- /dev/null +++ b/library/common/README.md @@ -0,0 +1,151 @@ +# common + +![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) + +Function library for TrueCharts + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| truecharts | | | + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| PGID | int | `568` | | +| PUID | int | `568` | | +| UMASK | string | `"002"` | | +| additionalContainers | list | `[]` | | +| additionalVolumeMounts | list | `[]` | | +| additionalVolumes | list | `[]` | | +| addons.codeserver.args[0] | string | `"--auth"` | | +| addons.codeserver.args[1] | string | `"none"` | | +| addons.codeserver.enabled | bool | `false` | | +| addons.codeserver.env | object | `{}` | | +| addons.codeserver.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.codeserver.image.repository | string | `"codercom/code-server"` | | +| addons.codeserver.image.tag | string | `"3.7.4"` | | +| addons.codeserver.ingress.annotations | object | `{}` | | +| addons.codeserver.ingress.enabled | bool | `false` | | +| addons.codeserver.ingress.hosts[0].host | string | `"code.chart-example.local"` | | +| addons.codeserver.ingress.hosts[0].paths[0].path | string | `"/"` | | +| addons.codeserver.ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| addons.codeserver.ingress.labels | object | `{}` | | +| addons.codeserver.ingress.nameSuffix | string | `"codeserver"` | | +| addons.codeserver.ingress.tls | list | `[]` | | +| addons.codeserver.securityContext.runAsUser | int | `0` | | +| addons.codeserver.service.annotations | object | `{}` | | +| addons.codeserver.service.enabled | bool | `true` | | +| addons.codeserver.service.labels | object | `{}` | | +| addons.codeserver.service.port.name | string | `"codeserver"` | | +| addons.codeserver.service.port.port | int | `12321` | | +| addons.codeserver.service.port.protocol | string | `"TCP"` | | +| addons.codeserver.service.port.targetPort | string | `"codeserver"` | | +| addons.codeserver.service.type | string | `"ClusterIP"` | | +| addons.codeserver.volumeMounts | list | `[]` | | +| addons.codeserver.workingDir | string | `""` | | +| addons.vpn.additionalVolumeMounts | list | `[]` | | +| addons.vpn.configFile | string | `nil` | | +| addons.vpn.enabled | bool | `false` | | +| addons.vpn.env | object | `{}` | | +| addons.vpn.livenessProbe | object | `{}` | | +| addons.vpn.networkPolicy.egress | string | `nil` | | +| addons.vpn.networkPolicy.enabled | bool | `false` | | +| addons.vpn.openvpn.auth | string | `nil` | | +| addons.vpn.openvpn.authSecret | string | `nil` | | +| addons.vpn.openvpn.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.vpn.openvpn.image.repository | string | `"dperson/openvpn-client"` | | +| addons.vpn.openvpn.image.tag | string | `"latest"` | | +| addons.vpn.scripts.down | string | `nil` | | +| addons.vpn.scripts.up | string | `nil` | | +| addons.vpn.securityContext.capabilities.add[0] | string | `"NET_ADMIN"` | | +| addons.vpn.securityContext.capabilities.add[1] | string | `"SYS_MODULE"` | | +| addons.vpn.type | string | `"openvpn"` | | +| addons.vpn.wireguard.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.vpn.wireguard.image.repository | string | `"k8sathome/wireguard"` | | +| addons.vpn.wireguard.image.tag | string | `"1.0.20200827"` | | +| affinity | object | `{}` | | +| args | list | `[]` | | +| command | list | `[]` | | +| controllerAnnotations | object | `{}` | | +| controllerLabels | object | `{}` | | +| controllerType | string | `"deployment"` | | +| dnsPolicy | string | `"ClusterFirst"` | | +| enableServiceLinks | bool | `true` | | +| env | object | `{}` | | +| envFrom | list | `[]` | | +| envTpl | object | `{}` | | +| envValueFrom | object | `{}` | | +| fixMountPermissions | bool | `true` | | +| fullnameOverride | string | `""` | | +| hostAliases | list | `[]` | | +| hostNetwork | bool | `false` | | +| ingress.additionalIngresses | list | `[]` | | +| ingress.annotations | object | `{}` | | +| ingress.enabled | bool | `false` | | +| ingress.hosts[0].host | string | `"chart-example.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| ingress.labels | object | `{}` | | +| ingress.tls | list | `[]` | | +| initContainers | list | `[]` | | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | | +| persistence.config.accessMode | string | `"ReadWriteOnce"` | | +| persistence.config.enabled | bool | `false` | | +| persistence.config.mountPath | string | `"/config"` | | +| persistence.config.size | string | `"1Gi"` | | +| persistence.config.skipuninstall | bool | `false` | | +| persistence.shared.emptyDir | bool | `true` | | +| persistence.shared.enabled | bool | `false` | | +| persistence.shared.mountPath | string | `"/shared"` | | +| podAnnotations | object | `{}` | | +| podSecurityContext | object | `{}` | | +| probes.liveness.custom | bool | `false` | | +| probes.liveness.enabled | bool | `true` | | +| probes.liveness.spec.failureThreshold | int | `5` | | +| probes.liveness.spec.initialDelaySeconds | int | `30` | | +| probes.liveness.spec.periodSeconds | int | `10` | | +| probes.liveness.spec.timeoutSeconds | int | `10` | | +| probes.readiness.custom | bool | `false` | | +| probes.readiness.enabled | bool | `true` | | +| probes.readiness.spec.failureThreshold | int | `5` | | +| probes.readiness.spec.initialDelaySeconds | int | `30` | | +| probes.readiness.spec.periodSeconds | int | `10` | | +| probes.readiness.spec.timeoutSeconds | int | `10` | | +| probes.startup.custom | bool | `false` | | +| probes.startup.enabled | bool | `true` | | +| probes.startup.spec.failureThreshold | int | `30` | | +| probes.startup.spec.initialDelaySeconds | int | `5` | | +| probes.startup.spec.periodSeconds | int | `10` | | +| probes.startup.spec.timeoutSeconds | int | `10` | | +| replicas | int | `1` | | +| resources | object | `{}` | | +| securityContext | object | `{}` | | +| service.additionalPorts | list | `[]` | | +| service.additionalServices | list | `[]` | | +| service.annotations | object | `{}` | | +| service.enabled | bool | `true` | | +| service.labels | object | `{}` | | +| service.port.name | string | `nil` | | +| service.port.port | string | `nil` | | +| service.port.protocol | string | `"TCP"` | | +| service.port.targetPort | string | `nil` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `false` | | +| serviceAccount.name | string | `""` | | +| strategy.type | string | `"RollingUpdate"` | | +| tolerations | list | `[]` | | +| volumeClaimTemplates | list | `[]` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/library/common/templates/_all.tpl b/library/common/templates/_all.tpl new file mode 100644 index 00000000..9bb0b3ea --- /dev/null +++ b/library/common/templates/_all.tpl @@ -0,0 +1,27 @@ +{{/* +Main entrypoint for the common library chart. It will render all underlying templates based on the provided values. +*/}} +{{- define "common.all" -}} + {{- /* Merge the local chart values and the common chart defaults */ -}} + {{- include "common.values.setup" . }} + + {{- /* Build the templates */ -}} + {{- include "common.pvc" . }} + {{- print "---" | nindent 0 -}} + {{- if .Values.serviceAccount.create -}} + {{- include "common.serviceAccount" . }} + {{- print "---" | nindent 0 -}} + {{- end -}} + {{- if eq .Values.controllerType "deployment" }} + {{- include "common.deployment" . | nindent 0 }} + {{ else if eq .Values.controllerType "daemonset" }} + {{- include "common.daemonset" . | nindent 0 }} + {{ else if eq .Values.controllerType "statefulset" }} + {{- include "common.statefulset" . | nindent 0 }} + {{- end -}} + {{ include "common.services" . | nindent 0 }} + {{ include "common.ingress" . | nindent 0 }} + {{ include "common.resources.portal" . | nindent 0 }} + {{ include "common.storage.permissions" . | nindent 0 }} + +{{- end -}} diff --git a/library/common/templates/_daemonset.tpl b/library/common/templates/_daemonset.tpl new file mode 100644 index 00000000..91bb0a4f --- /dev/null +++ b/library/common/templates/_daemonset.tpl @@ -0,0 +1,52 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +This template serves as the blueprint for the DaemonSet objects that are created +within the common library. +*/}} +{{- define "common.daemonset" -}} +apiVersion: {{ include "common.capabilities.daemonset.apiVersion" . }} +kind: DaemonSet +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} +{{- end }} diff --git a/library/common/templates/_deployment.tpl b/library/common/templates/_deployment.tpl new file mode 100644 index 00000000..caa94643 --- /dev/null +++ b/library/common/templates/_deployment.tpl @@ -0,0 +1,56 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as the blueprint for the Deployment objects that are created +within the common library. +*/}} +{{- define "common.deployment" -}} +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicas }} + {{- with .Values.strategy }} + strategy: + {{- toYaml . | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} +{{- end }} diff --git a/library/common/templates/_ingress.tpl b/library/common/templates/_ingress.tpl new file mode 100644 index 00000000..b329c09c --- /dev/null +++ b/library/common/templates/_ingress.tpl @@ -0,0 +1,122 @@ +{{/* +Renders the Ingress objects required by the chart by returning a concatinated list +of the main Ingress and any additionalIngresses. +*/}} +{{- define "common.ingress" -}} + {{- /* Generate named ingresses as required */ -}} + {{- range $name, $ingress := .Values.ingress }} + {{- $certType := $ingress.certType | default "disabled" -}} + {{- $enabled := $ingress.enabled | default false -}} + {{- if or ( ne $certType "disabled" ) ( $ingress.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $ingress -}} + + {{/* set defaults */}} + {{- if and (not $ingressValues.nameSuffix) ( ne $name "main" ) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + + + {{- /* Generate additional ingresses as required */ -}} + {{- range $index, $additionalIngress := .Values.additionalIngress }} + {{- $certType := $additionalIngress.certType | default "disabled" -}} + {{- if or ( ne $certType "disabled" ) ( $additionalIngress.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $additionalIngress -}} + + {{/* set defaults */}} + {{- $name := $index -}} + {{- if $ingressValues.name -}} + {{- $name := $ingressValues.name -}} + {{- end }} + + {{- if or (not $ingressValues.nameSuffix) ( ne ( $name | quote ) "main" ) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + + {{- /* Generate externalService ingresses as required */ -}} + {{- range $index, $externalService := .Values.externalServices }} + {{- $certType := $externalService.certType | default "disabled" -}} + {{- if or ( ne $certType "disabled" ) ( $externalService.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $externalService -}} + + {{/* set defaults */}} + {{- $name := $index -}} + {{- if $ingressValues.name -}} + {{- $name := $ingressValues.name -}} + {{- end }} + {{- $name = printf "%v-%v" "external" $name -}} + + {{- if or (not $ingressValues.nameSuffix) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- print ("---") | nindent 0 -}} + {{- include "common.classes.externalService" $ }} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + +{{- end }} diff --git a/library/common/templates/_pvc.tpl b/library/common/templates/_pvc.tpl new file mode 100644 index 00000000..1e00d3e4 --- /dev/null +++ b/library/common/templates/_pvc.tpl @@ -0,0 +1,36 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Renders the PersistentVolumeClaim objects required by the chart by returning a concatinated list +of all the entries of the persistence key. +*/}} +{{- define "common.pvc" -}} + {{- /* Generate pvc as required */ -}} + {{- range $index, $PVC := .Values.persistence }} + {{- if and $PVC.enabled (not (or $PVC.emptyDir $PVC.existingClaim)) -}} + {{- $persistenceValues := $PVC -}} + {{- if not $persistenceValues.nameSuffix -}} + {{- $_ := set $persistenceValues "nameSuffix" $index -}} + {{- end -}} + {{- $_ := set $ "ObjectValues" (dict "persistence" $persistenceValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.classes.pvc" $ -}} + {{- end }} + {{- end }} +{{- end }} diff --git a/library/common/templates/_serviceaccount.tpl b/library/common/templates/_serviceaccount.tpl new file mode 100644 index 00000000..a8c0e790 --- /dev/null +++ b/library/common/templates/_serviceaccount.tpl @@ -0,0 +1,15 @@ +{{/* +The ServiceAccount object to be created. +*/}} +{{- define "common.serviceAccount" -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "common.names.serviceAccountName" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/library/common/templates/_services.tpl b/library/common/templates/_services.tpl new file mode 100644 index 00000000..9e72e9d0 --- /dev/null +++ b/library/common/templates/_services.tpl @@ -0,0 +1,46 @@ +{{/* +Renders the Service objects required by the chart by returning a concatinated list +of the main Service and any additionalServices. +*/}} +{{- define "common.services" -}} + {{- if .Values.services -}} + {{- /* Add dict of primary services */ -}} + {{- range $name, $service := .Values.services }} + {{- if or ( $service.enabled ) ( eq $name "main" ) -}} + {{- print ("---") | nindent 0 -}} + {{- print ("\n") | nindent 0 -}} + {{- $serviceValues := $service -}} + + {{- /* Dont add name suffix for primary service named "main" */ -}} + {{- if and (not $serviceValues.nameSuffix) ( ne $name "main" ) -}} + {{- $_ := set $serviceValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}} + {{- include "common.classes.service" $ -}} + {{- end }} + {{- end }} + {{- end }} + + + {{- if .Values.additionalServices -}} + {{- /* Generate additional services as required */ -}} + {{- range $index, $extraService := .Values.additionalServices }} + {{- if $extraService.enabled -}} + {{- print ("---") | nindent 0 -}} + {{- $serviceValues := $extraService -}} + + {{- $name := $index -}} + {{- if $serviceValues.name -}} + {{- $name := $serviceValues.name -}} + {{- end }} + + {{- /* Dont add name suffix for primary service named "main" */ -}} + {{- if and (not $serviceValues.nameSuffix) ( ne ( $name | quote ) "main" ) -}} + {{- $_ := set $serviceValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}} + {{- include "common.classes.service" $ -}} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/library/common/templates/_statefulset.tpl b/library/common/templates/_statefulset.tpl new file mode 100644 index 00000000..3b7915b3 --- /dev/null +++ b/library/common/templates/_statefulset.tpl @@ -0,0 +1,71 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as the blueprint for the StatefulSet objects that are created +within the common library. +*/}} +{{- define "common.statefulset" -}} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicas }} + {{- with .Values.strategy }} + updateStrategy: + {{- toYaml . | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + serviceName: {{ include "common.names.fullname" . }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} + volumeClaimTemplates: + {{- range $index, $vct := .Values.volumeClaimTemplates }} + - metadata: + name: {{ $vct.name }} + spec: + accessModes: + - {{ required (printf "accessMode is required for vCT %v" $vct.name) $vct.accessMode | quote }} + resources: + requests: + storage: {{ required (printf "size is required for PVC %v" $vct.name) $vct.size | quote }} + {{- if $vct.storageClass }} + storageClassName: {{ if (eq "-" $vct.storageClass) }}""{{- else }}{{ $vct.storageClass | quote }}{{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/library/common/templates/classes/_pvc.tpl b/library/common/templates/classes/_pvc.tpl new file mode 100644 index 00000000..5799ae0a --- /dev/null +++ b/library/common/templates/classes/_pvc.tpl @@ -0,0 +1,62 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as a blueprint for all PersistentVolumeClaim objects that are created +within the common library. +*/}} +{{- define "common.classes.pvc" -}} +{{- $values := .Values.persistence -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.persistence -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} +{{- $pvcName := include "common.names.fullname" . -}} +{{- if hasKey $values "nameOverride" -}} + {{- $pvcName = $values.nameOverride -}} +{{- else if hasKey $values "nameSuffix" -}} + {{- $pvcName = printf "%v-%v" $pvcName $values.nameSuffix -}} +{{ end -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ $pvcName }} + {{- if or $values.skipuninstall $values.annotations }} + annotations: + {{- if $values.skipuninstall }} + "helm.sh/resource-policy": keep + {{- end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} + labels: + {{- include "common.labels" . | nindent 4 }} +spec: + accessModes: + - {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }} + resources: + requests: + storage: {{ required (printf "size is required for PVC %v" $pvcName) $values.size | quote }} + {{- if $values.storageClass }} + storageClassName: {{ include "common.storage.class" . }} + {{- else }} + storageClassName: {{ ( printf "%v-%v" "ix-storage-class" .Release.Name ) }} + {{- end }} +{{- end -}} diff --git a/library/common/templates/classes/_service.tpl b/library/common/templates/classes/_service.tpl new file mode 100644 index 00000000..c8243072 --- /dev/null +++ b/library/common/templates/classes/_service.tpl @@ -0,0 +1,99 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as a blueprint for all Service objects that are created +within the common library. +*/}} +{{- define "common.classes.service" -}} +{{- $values := .Values.services.main -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.service -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- $serviceName := include "common.names.fullname" . -}} + + +{{- if hasKey $values "nameSuffix" -}} + {{- $serviceName = printf "%v-%v" $serviceName $values.nameSuffix -}} +{{ end -}} +{{- $svcType := $values.type | default "" -}} + +{{- $portProtocol := $values.port.protocol -}} +{{- if or ( eq $values.port.protocol "HTTP" ) ( eq $values.port.protocol "HTTPS" ) ( eq $values.port.protocol "TCP" ) -}} +{{- $portProtocol = "TCP" -}} +{{- else if eq $values.port.protocol "UDP" }} +{{- $portProtocol = "UDP" -}} +{{- end }} +apiVersion: v1 +kind: Service +metadata: + name: {{ $serviceName }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- if $values.labels }} + {{ toYaml $values.labels | nindent 4 }} + {{- end }} + annotations: + {{- if eq $values.port.protocol "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + {{- with $values.annotations }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }} + type: ClusterIP + {{- if $values.clusterIP }} + clusterIP: {{ $values.clusterIP }} + {{end}} + {{- else if eq $svcType "LoadBalancer" }} + type: {{ $svcType }} + {{- if $values.loadBalancerIP }} + loadBalancerIP: {{ $values.loadBalancerIP }} + {{- end }} + {{- if $values.externalTrafficPolicy }} + externalTrafficPolicy: {{ $values.externalTrafficPolicy }} + {{- end }} + {{- if $values.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{ toYaml $values.loadBalancerSourceRanges | nindent 4 }} + {{- end -}} + {{- else }} + type: {{ $svcType }} + {{- end }} + {{- if $values.sessionAffinity }} + sessionAffinity: {{ $values.sessionAffinity }} + {{- if $values.sessionAffinityConfig }} + sessionAffinityConfig: + {{ toYaml $values.sessionAffinityConfig | nindent 4 }} + {{- end -}} + {{- end }} + {{- with $values.externalIPs }} + externalIPs: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if $values.publishNotReadyAddresses }} + publishNotReadyAddresses: {{ $values.publishNotReadyAddresses }} + {{- end }} + {{- include "common.classes.service.ports" (dict "svcType" $svcType "values" $values ) | trim | nindent 2 }} + selector: + {{- include "common.labels.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/library/common/templates/classes/_service_ports.tpl b/library/common/templates/classes/_service_ports.tpl new file mode 100644 index 00000000..859c3ff5 --- /dev/null +++ b/library/common/templates/classes/_service_ports.tpl @@ -0,0 +1,47 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Render all the ports and additionalPorts for a Service object. +*/}} +{{- define "common.classes.service.ports" -}} + {{- $ports := list -}} + {{- $values := .values -}} + {{- $ports = mustAppend $ports $values.port -}} + {{- range $_ := $values.additionalPorts -}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- if $ports -}} + ports: + {{- range $_ := $ports }} + {{- $protocol := "" -}} + {{- if or ( eq .protocol "HTTP" ) ( eq .protocol "HTTPS" ) }} + {{- $protocol = "TCP" -}} + {{- else }} + {{- $protocol = .protocol | default "TCP" -}} + {{- end }} + - port: {{ .port }} + targetPort: {{ .targetPort | default .name | default "http" }} + protocol: {{ $protocol | default "TCP" }} + name: {{ .name | default "http" }} + {{- if (and (eq $.svcType "NodePort") (not (empty .nodePort))) }} + nodePort: {{ .nodePort }} + {{ end }} + {{- end -}} + {{- end -}} +{{- end }} diff --git a/library/common/templates/classes/ingress/_externalService.tpl b/library/common/templates/classes/ingress/_externalService.tpl new file mode 100644 index 00000000..a2aedaf5 --- /dev/null +++ b/library/common/templates/classes/ingress/_externalService.tpl @@ -0,0 +1,63 @@ +{{- define "common.classes.externalService" -}} +{{- $serviceName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 }} +{{- $ingressService := $.Values }} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- if hasKey $values "nameSuffix" -}} + {{- $serviceName = printf "%v-%v" $serviceName $values.nameSuffix -}} +{{ end -}} + +{{- $svcName := $values.serviceName | default $serviceName -}} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort -}} +{{- end }} + +apiVersion: v1 +kind: Service +metadata: + name: {{ $svcName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- if eq ( $values.serviceType | default "" ) "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ports: +{{- if eq $values.type "UDP"}} + - protocol: UDP + port: {{ $values.servicePort }} + targetPort: {{ $values.servicePort }} +{{- else }} + - protocol: TCP + port: {{ $values.servicePort }} + targetPort: {{ $values.servicePort }} +{{- end }} +--- +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ $svcName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +subsets: + - addresses: + - ip: {{ $values.serviceTarget }} + ports: + - port: {{ $values.servicePort }} + +{{- end }} diff --git a/library/common/templates/classes/ingress/_ingress.tpl b/library/common/templates/classes/ingress/_ingress.tpl new file mode 100644 index 00000000..3552f79d --- /dev/null +++ b/library/common/templates/classes/ingress/_ingress.tpl @@ -0,0 +1,148 @@ +{{/* +This template serves as a blueprint for all Ingress objects that are created +within the common library. +*/}} +{{- define "common.classes.ingress" -}} +{{- $ingressName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 -}} +{{- $portProtocol := "" -}} +{{- $ingressService := $.Values -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + + +{{- if hasKey $values "nameSuffix" -}} + {{- $ingressName = printf "%v-%v" $ingressName $values.nameSuffix -}} + {{- if not $values.servicePort }} + {{- $ingressService := index $.Values.services ( $values.nameSuffix | quote ) }} + {{- if $ingressService.enabled }} + {{- $svcPort = $ingressService.port.port -}} + {{- $portProtocol = $ingressService.port.protocol | default "" }} + {{- else if $.Values.services.main.enabled }} + {{- $svcPort = $.Values.services.main.port.port -}} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" -}} + {{ end -}} + {{ end -}} +{{- else if and ( $.Values.services.main.enabled ) ( not $values.servicePort ) }} + {{- $svcPort = $.Values.services.main.port.port -}} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" -}} +{{ end -}} + +{{- $authForwardName := ( printf "%v-%v" $ingressName "auth-forward" ) -}} + +{{- $svcName := $values.serviceName | default $ingressName -}} + +{{- if $values.dynamicServiceName }} + {{- $dynamicServiceName := printf "%v-%v" .Release.Name $values.dynamicServiceName -}} + {{- $svcName = $dynamicServiceName -}} +{{- end }} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort -}} +{{- end }} + +{{- if $values.serviceType }} + {{- $portProtocol = $values.serviceType -}} +{{- end }} + +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ $ingressName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- if eq $portProtocol "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + traefik.ingress.kubernetes.io/router.entrypoints: {{ $values.entrypoint | default "websecure" }} + traefik.ingress.kubernetes.io/router.middlewares: traefik-middlewares-chain-public@kubernetescrd{{ if $values.authForwardURL }},{{ printf "%v-%v@%v" .Release.Namespace $authForwardName "kubernetescrd" }}{{ end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + {{- if $values.ingressClassName }} + ingressClassName: {{ $values.ingressClassName }} + {{- end }} + {{- end }} + {{- if or ( eq $values.certType "selfsigned") (eq $values.certType "ixcert") }} + tls: + - hosts: + {{- if $values.host}} + - {{ $values.host | quote }} + {{- else }} + {{- range $values.hosts }} + - {{ .host | quote }} + {{- end }} + {{- end }} + {{- if eq $values.certType "ixcert" }} + secretName: {{ $ingressName }} + {{- end }} + {{- end }} + rules: + {{- if $values.host }} + - host: {{ $values.host | quote }} + http: + paths: + - path: {{ $values.path | default "/" }} + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + pathType: Prefix + {{- end }} + backend: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + service: + name: {{ $svcName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $svcName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- range $values.hosts }} + - host: {{ .host | quote }} + http: + paths: + - path: {{ .path | default "/" }} + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + pathType: Prefix + {{- end }} + backend: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + service: + name: {{ $svcName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $svcName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + +{{- if $values.authForwardURL }} + +--- + +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $authForwardName }} +spec: + forwardAuth: + address: {{ $values.authForwardURL | quote }} + tls: + insecureSkipVerify: true + trustForwardHeader: true + authResponseHeaders: + - Remote-User + - Remote-Groups + - Remote-Name + - Remote-Email +{{- end }} + +{{- end }} diff --git a/library/common/templates/classes/ingress/_ingressRoute.tpl b/library/common/templates/classes/ingress/_ingressRoute.tpl new file mode 100644 index 00000000..a44fe553 --- /dev/null +++ b/library/common/templates/classes/ingress/_ingressRoute.tpl @@ -0,0 +1,127 @@ +{{/* +This template serves as a blueprint for all ingressRoute objects that are created +within the common library. +*/}} +{{- define "common.classes.ingressRoute" -}} +{{- $ingressName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 }} +{{- $portProtocol := "" }} +{{- $ingressService := $.Values }} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- if hasKey $values "nameSuffix" -}} + {{- $ingressName = printf "%v-%v" $ingressName $values.nameSuffix -}} + {{- if and ( $.Values.services ) ( not $values.servicePort ) }} + {{- $ingressService := index $.Values.services ( $values.nameSuffix | quote) }} + {{- $svcPort = $ingressService.port.port }} + {{- $portProtocol = $ingressService.port.protocol | default "" }} + {{ end -}} +{{- else if and ( $.Values.services ) ( not $values.servicePort ) }} + {{- $svcPort = $.Values.services.main.port.port }} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" }} +{{ end -}} + +{{- $authForwardName := ( printf "%v-%v" $ingressName "auth-forward" ) -}} + +{{- $svcName := $values.serviceName | default $ingressName -}} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort }} +{{- end }} + +{{- if $values.serviceType }} + {{- $portProtocol = $values.serviceType }} +{{- end }} + +apiVersion: traefik.containo.us/v1alpha1 +{{- if eq $values.type "UDP" }} +kind: IngressRouteUDP +{{- else if eq $values.type "TCP" }} +kind: IngressRouteTCP +{{- else }} +kind: IngressRoute +{{- end }} +metadata: + name: {{ $ingressName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + entryPoints: + - {{ $values.entrypoint }} + routes: + {{- if eq $values.type "UDP" }} + - services: + - name: {{ $svcName }} + port: {{ $svcPort }} + weight: 10 + {{- else if eq $values.type "TCP" }} + - match: HostSNI(`*`) + services: + - name: {{ $svcName }} + port: {{ $svcPort }} + weight: 10 + terminationDelay: 400 + {{- else }} + - kind: Rule + match: Host(`{{ (index $values.hosts 0).host }}`) && PathPrefix(`{{ (index $values.hosts 0).path | default "/" }}`) + services: + - name: {{ $svcName }} + {{- if $values.serviceKind }} + kind: {{ $values.serviceKind }} + {{- else }} + port: {{ $svcPort }} + {{- end }} + middlewares: + - name: traefik-middlewares-chain-public@kubernetescrd + {{- if $values.authForwardURL }} + - name: "{{ printf "%v-%v@%v" .Release.Namespace $authForwardName "kubernetescrd" }}" + {{- end }} + {{- end }} + +{{- if not ( eq $values.type "UDP" ) }} +{{- if or ( eq $values.certType "selfsigned") (eq $values.certType "ixcert") }} + tls: + domains: + - main: {{ (index $values.hosts 0).host }} + sans: + {{- range $values.hosts }} + - {{ .host | quote }} + {{- end }} + {{- if eq $values.certType "ixcert" }} + secretName: {{ $ingressName }} + {{- end }} + passthrough: false + +{{- end }} +{{- end }} + +{{- if $values.authForwardURL }} +--- + +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $authForwardName }} +spec: + forwardAuth: + address: {{ $values.authForwardURL | quote }} + tls: + insecureSkipVerify: true + trustForwardHeader: true + authResponseHeaders: + - Remote-User + - Remote-Groups + - Remote-Name + - Remote-Email + +{{- end }} +{{- end }} diff --git a/library/common/templates/lib/chart/_capabilities.tpl b/library/common/templates/lib/chart/_capabilities.tpl new file mode 100644 index 00000000..37ff7d74 --- /dev/null +++ b/library/common/templates/lib/chart/_capabilities.tpl @@ -0,0 +1,146 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Return the appropriate apiVersion for DaemonSet objects. +*/}} +{{- define "common.capabilities.daemonset.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.daemonset.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/DaemonSet" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for Deployment objects. +*/}} +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/Deployment" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for StatefulSet objects. +*/}} +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "apps/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/StatefulSet" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "apps/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for Ingress objects. +*/}} + +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Values.ingress.apiVersion -}} +{{- .Values.ingress.apiVersion -}} +{{- else if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end }} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}} +{{- print "networking.k8s.io/v1" -}} +{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end }} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for RBAC resources. +*/}} +{{- define "common.capabilities.rbac.apiVersion" -}} +{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for CRDs. +*/}} +{{- define "common.capabilities.crd.apiVersion" -}} +{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiextensions.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiextensions.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the used Helm version is 3.3+. +A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. +This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. +**To be removed when the catalog's minimun Helm version is 3.3** +*/}} +{{- define "common.capabilities.supportsHelmVersion" -}} +{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/library/common/templates/lib/chart/_errors.tpl b/library/common/templates/lib/chart/_errors.tpl new file mode 100644 index 00000000..2985af44 --- /dev/null +++ b/library/common/templates/lib/chart/_errors.tpl @@ -0,0 +1,38 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Through error when upgrading using empty passwords values that must not be empty. + +Usage: +{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} +{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} +{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} + +Required password params: + - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. + - context - Context - Required. Parent context. +*/}} +{{- define "common.errors.upgrade.passwords.empty" -}} + {{- $validationErrors := join "" .validationErrors -}} + {{- if and $validationErrors .context.Release.IsUpgrade -}} + {{- $errorString := "\nPASSWORDS ERROR: you must provide your current passwords when upgrade the release%s" -}} + {{- printf $errorString $validationErrors | fail -}} + {{- end -}} +{{- end -}} diff --git a/library/common/templates/lib/chart/_images.tpl b/library/common/templates/lib/chart/_images.tpl new file mode 100644 index 00000000..12c8ea13 --- /dev/null +++ b/library/common/templates/lib/chart/_images.tpl @@ -0,0 +1,65 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper image name +{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" $) }} +*/}} +{{- define "common.images.image" -}} +{{- $registryName := .imageRoot.registry -}} +{{- $repositoryName := .imageRoot.repository -}} +{{- $tag := .imageRoot.tag | toString -}} +{{- if .global }} + {{- if .global.imageRegistry }} + {{- $registryName = .global.imageRegistry -}} + {{- end -}} +{{- end -}} +{{- if $registryName }} +{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} +{{- else -}} +{{- printf "%s:%s" $repositoryName $tag -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} +*/}} +{{- define "common.images.pullSecrets" -}} + {{- $pullSecrets := list }} + + {{- if .global }} + {{- range .global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/library/common/templates/lib/chart/_labels.tpl b/library/common/templates/lib/chart/_labels.tpl new file mode 100644 index 00000000..b5be0514 --- /dev/null +++ b/library/common/templates/lib/chart/_labels.tpl @@ -0,0 +1,55 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Common labels shared across objects. +*/}} +{{- define "common.labels" -}} +helm.sh/chart: {{ include "common.names.chart" . }} +{{ include "common.labels.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels shared across objects. +*/}} +{{- define "common.labels.selectorLabels" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + + +## Bitnami Compatibility links + +{{/* vim: set filetype=mustache: */}} +{{/* +Kubernetes standard labels +*/}} +{{- define "common.labels.standard" -}} +{{ include "common.labels" . }} +{{- end -}} + +{{/* +Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector +*/}} +{{- define "common.labels.matchLabels" -}} +{{ include "common.labels.selectorLabels" . }} +{{- end -}} diff --git a/library/common/templates/lib/chart/_names.tpl b/library/common/templates/lib/chart/_names.tpl new file mode 100644 index 00000000..41273d69 --- /dev/null +++ b/library/common/templates/lib/chart/_names.tpl @@ -0,0 +1,62 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "common.names.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "common.names.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "common.names.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create the name of the ServiceAccount to use. +*/}} +{{- define "common.names.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} + {{- default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else }} + {{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/library/common/templates/lib/chart/_utils.tpl b/library/common/templates/lib/chart/_utils.tpl new file mode 100644 index 00000000..c8cec118 --- /dev/null +++ b/library/common/templates/lib/chart/_utils.tpl @@ -0,0 +1,80 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Print instructions to get a secret value. +Usage: +{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} +*/}} +{{- define "common.utils.secret.getvalue" -}} +{{- $varname := include "common.utils.fieldToEnvVar" . -}} +export {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 --decode) +{{- end -}} + +{{/* +Build env var name given a field +Usage: +{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} +*/}} +{{- define "common.utils.fieldToEnvVar" -}} + {{- $fieldNameSplit := splitList "-" .field -}} + {{- $upperCaseFieldNameSplit := list -}} + + {{- range $fieldNameSplit -}} + {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} + {{- end -}} + + {{ join "_" $upperCaseFieldNameSplit }} +{{- end -}} + +{{/* +Gets a value from .Values given +Usage: +{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} +*/}} +{{- define "common.utils.getValueFromKey" -}} +{{- $splitKey := splitList "." .key -}} +{{- $value := "" -}} +{{- $latestObj := $.context.Values -}} +{{- range $splitKey -}} + {{- if not $latestObj -}} + {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} + {{- end -}} + {{- $value = ( index $latestObj . ) -}} + {{- $latestObj = $value -}} +{{- end -}} +{{- printf "%v" (default "" $value) -}} +{{- end -}} + +{{/* +Returns first .Values key with a defined value or first of the list if all non-defined +Usage: +{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} +*/}} +{{- define "common.utils.getKeyFromList" -}} +{{- $key := first .keys -}} +{{- $reverseKeys := reverse .keys }} +{{- range $reverseKeys }} + {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} + {{- if $value -}} + {{- $key = . }} + {{- end -}} +{{- end -}} +{{- printf "%s" $key -}} +{{- end -}} diff --git a/library/common/templates/lib/chart/_values.tpl b/library/common/templates/lib/chart/_values.tpl new file mode 100644 index 00000000..af6b4658 --- /dev/null +++ b/library/common/templates/lib/chart/_values.tpl @@ -0,0 +1,29 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Merge the local chart values and the common chart defaults. +*/}} +{{- define "common.values.setup" -}} + {{- if .Values.common -}} + {{- $defaultValues := deepCopy .Values.common -}} + {{- $userValues := deepCopy (omit .Values "common") -}} + {{- $mergedValues := mustMergeOverwrite $defaultValues $userValues -}} + {{- $_ := set . "Values" (deepCopy $mergedValues) -}} + {{- end }} +{{- end }} diff --git a/library/common/templates/lib/controller/_container.tpl b/library/common/templates/lib/controller/_container.tpl new file mode 100644 index 00000000..cdd777ab --- /dev/null +++ b/library/common/templates/lib/controller/_container.tpl @@ -0,0 +1,92 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{- /* +The main container included in the controller. +*/ -}} +{{- define "common.controller.mainContainer" -}} +- name: {{ include "common.names.fullname" . }} + image: "{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- with .Values.command }} + command: {{ . }} + {{- end }} + {{- with .Values.args }} + args: {{ . }} + {{- end }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 4 }} + {{- end }} + env: + - name: PUID + value: {{ .Values.PUID | quote }} + - name: PGID + value: {{ .Values.PGID | quote }} + - name: UMASK + value: {{ .Values.UMASK | quote }} + {{- if .Values.timezone }} + - name: TZ + value: {{ .Values.timezone | quote }} + {{- end }} + {{- if or .Values.env .Values.envTpl .Values.envValueFrom .Values.envVariable .Values.environmentVariables }} + {{- range $envVariable := .Values.environmentVariables }} + {{- if and $envVariable.name $envVariable.value }} + - name: {{ $envVariable.name }} + value: {{ $envVariable.value | quote }} + {{- else }} + {{- fail "Please specify name/value for environment variable" }} + {{- end }} + {{- end}} + {{- range $key, $value := .Values.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + {{- range $key, $value := .Values.envTpl }} + - name: {{ $key }} + value: {{ tpl $value $ | quote }} + {{- end }} + {{- range $key, $value := .Values.envValueFrom }} + - name: {{ $key }} + valueFrom: + {{- $value | toYaml | nindent 8 }} + {{- end }} + {{- end }} + {{- with .Values.envFrom }} + envFrom: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- include "common.controller.ports" . | trim | nindent 2 }} + + {{- with (include "common.controller.volumeMounts" . | trim) }} + volumeMounts: + {{- . | nindent 2 }} + {{- end }} + + + {{- include "common.controller.probes" . | nindent 2 }} + resources: + {{- with .Values.resources }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if and .Values.gpuConfiguration }} + limits: + {{- toYaml .Values.gpuConfiguration | nindent 6 }} + {{- end }} +{{- end -}} diff --git a/library/common/templates/lib/controller/_pod.tpl b/library/common/templates/lib/controller/_pod.tpl new file mode 100644 index 00000000..90196a4b --- /dev/null +++ b/library/common/templates/lib/controller/_pod.tpl @@ -0,0 +1,69 @@ +{{- /* +The pod definition included in the controller. +*/ -}} +{{- define "common.controller.pod" -}} +{{- with .Values.imagePullSecrets }} +imagePullSecrets: + {{- toYaml . | nindent 2 }} +{{- end }} +serviceAccountName: {{ include "common.names.serviceAccountName" . }} +{{- with .Values.podSecurityContext }} +securityContext: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.priorityClassName }} +priorityClassName: {{ . }} +{{- end }} +{{- with .Values.schedulerName }} +schedulerName: {{ . }} +{{- end }} +{{- with .Values.hostNetwork }} +hostNetwork: {{ . }} +{{- end }} +{{- with .Values.hostname }} +hostname: {{ . }} +{{- end }} +{{- if .Values.dnsPolicy }} +{{- with .Values.dnsPolicy }} +dnsPolicy: {{ . }} +{{- end }} +{{- else if .Values.hostNetwork }} +dnsPolicy: "ClusterFirstWithHostNet" +{{- else }} +dnsPolicy: ClusterFirst +{{- end }} +{{- with .Values.dnsConfig }} +dnsConfig: + {{- toYaml . | nindent 2 }} +{{- end }} +enableServiceLinks: {{ .Values.enableServiceLinks }} +{{- with .Values.initContainers }} +initContainers: + {{- toYaml . | nindent 2 }} +{{- end }} +containers: + {{- include "common.controller.mainContainer" . | nindent 0 }} + {{- with .Values.additionalContainers }} + {{- toYaml . | nindent 0 }} + {{- end }} +{{- with (include "common.controller.volumes" . | trim) }} +volumes: + {{- . | nindent 0 }} +{{- end }} +{{- with .Values.hostAliases }} +hostAliases: +{{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.nodeSelector }} +nodeSelector: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.affinity }} +affinity: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.tolerations }} +tolerations: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end -}} diff --git a/library/common/templates/lib/controller/_ports.tpl b/library/common/templates/lib/controller/_ports.tpl new file mode 100644 index 00000000..528b233d --- /dev/null +++ b/library/common/templates/lib/controller/_ports.tpl @@ -0,0 +1,76 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Ports included by the controller. +*/}} +{{- define "common.controller.ports" -}} +{{- $ports := list -}} + {{/* append the ports for each appAdditionalService - TrueCharts */}} + {{- if $.Values.services -}} + {{- range $name, $_ := $.Values.services }} + {{- if or ( .enabled ) ( eq $name "main" ) -}} + {{- if eq $name "main" -}} + {{- $_ := set .port "name" (default "http" .port.name) -}} + {{- else if kindIs "string" $name -}} + {{- $_ := set .port "name" (default .port.name | default $name) -}} + {{- else -}} + {{- $_ := set .port "name" (required "Missing port.name" .port.name) -}} + {{- end -}} + {{- $ports = mustAppend $ports .port -}} + {{- range $_ := .additionalPorts -}} + {{/* append the additonalPorts for each additional service */}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + + {{- if $.Values.additionalServices -}} + {{- range $_ := $.Values.additionalServices }} + {{- if .enabled -}} + {{- $_ := set .port "name" (required "Missing port.name" .port.name) -}} + {{- $ports = mustAppend $ports .port -}} + {{- range $_ := .additionalPorts -}} + {{/* append the additonalPorts for each additional service */}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + +{{/* export/render the list of ports */}} +{{- if $ports -}} +ports: +{{- range $_ := $ports }} +{{- $protocol := "" -}} +{{- if or ( eq .protocol "HTTP" ) ( eq .protocol "HTTPS" ) }} + {{- $protocol = "TCP" -}} +{{- else }} + {{- $protocol = .protocol | default "TCP" -}} +{{- end }} +- name: {{ required "The port's 'name' is not defined" .name }} + {{- if and .targetPort (kindIs "string" .targetPort) }} + {{- fail (printf "Our charts do not support named ports for targetPort. (port name %s, targetPort %s)" .name .targetPort) }} + {{- end }} + containerPort: {{ .targetPort | default .port }} + protocol: {{ $protocol | default "TCP" }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/library/common/templates/lib/controller/_probes.tpl b/library/common/templates/lib/controller/_probes.tpl new file mode 100644 index 00000000..47d33442 --- /dev/null +++ b/library/common/templates/lib/controller/_probes.tpl @@ -0,0 +1,41 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Probes selection logic. +*/}} +{{- define "common.controller.probes" -}} +{{- $svcPort := .Values.services.main.port.name -}} +{{- range $probeName, $probe := .Values.probes }} + {{- if $probe.enabled -}} + {{- "" | nindent 0 }} + {{- $probeName }}Probe: + {{- if $probe.custom -}} + {{- $probe.spec | toYaml | nindent 2 }} + {{- else }} + {{- "tcpSocket:" | nindent 2 }} + {{- printf "port: %v" $svcPort | nindent 4 }} + {{- printf "initialDelaySeconds: %v" $probe.spec.initialDelaySeconds | nindent 2 }} + {{- printf "failureThreshold: %v" $probe.spec.failureThreshold | nindent 2 }} + {{- printf "timeoutSeconds: %v" $probe.spec.timeoutSeconds | nindent 2 }} + {{- printf "periodSeconds: %v" $probe.spec.periodSeconds | nindent 2 }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/library/common/templates/lib/controller/_volumeMounts.tpl b/library/common/templates/lib/controller/_volumeMounts.tpl new file mode 100644 index 00000000..e69903e0 --- /dev/null +++ b/library/common/templates/lib/controller/_volumeMounts.tpl @@ -0,0 +1,62 @@ + +{{/* +Volumes included by the controller. +*/}} +{{- define "common.controller.volumeMounts" -}} +{{- range $index, $PVC := .Values.persistence }} +{{- if and ( $PVC.enabled ) ( $PVC.mountPath ) }} +- mountPath: {{ $PVC.mountPath }} + name: {{ $index }} +{{- if $PVC.subPath }} + subPath: {{ $PVC.subPath }} +{{- end }} +{{- end }} +{{- end }} + + +{{ range $name, $dmm := .Values.deviceMounts }} +{{- if $dmm.enabled -}} +{{ if $dmm.name }} + {{ $name = $dmm.name }} +{{ end }} +- name: devicemount-{{ $name }} + mountPath: {{ $dmm.devicePath }} + {{ if $dmm.subPath }} + subPath: {{ $dmm.subPath }} + {{ end }} +{{- end -}} +{{ end }} + +{{ range $name, $csm := .Values.customStorage }} +{{- if $csm.enabled -}} +{{ if $csm.name }} + {{ $name = $csm.name }} +{{ end }} +- name: customstorage-{{ $name }} + mountPath: {{ $csm.mountPath }} + {{ if $csm.subPath }} + subPath: {{ $csm.subPath }} + {{ end }} + {{ if $csm.readOnly }} + readOnly: {{ $csm.readOnly }} + {{ end }} +{{- end -}} +{{ end }} + + +{{- if .Values.additionalVolumeMounts }} + {{- toYaml .Values.additionalVolumeMounts | nindent 0 }} +{{- end }} + + +{{- if eq .Values.controllerType "statefulset" }} +{{- range $index, $vct := .Values.volumeClaimTemplates }} +- mountPath: {{ $vct.mountPath }} + name: {{ $vct.name }} +{{- if $vct.subPath }} + subPath: {{ $vct.subPath }} +{{- end }} +{{- end }} +{{- end }} + +{{- end -}} diff --git a/library/common/templates/lib/controller/_volumes.tpl b/library/common/templates/lib/controller/_volumes.tpl new file mode 100644 index 00000000..49403cfa --- /dev/null +++ b/library/common/templates/lib/controller/_volumes.tpl @@ -0,0 +1,84 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Volumes included by the controller. +*/}} +{{- define "common.controller.volumes" -}} +{{- range $index, $persistence := .Values.persistence }} +{{- if $persistence.enabled }} +- name: {{ $index }} +{{- if $persistence.existingClaim }} +{{- /* Always prefer an existingClaim if that is set */}} + persistentVolumeClaim: + claimName: {{ $persistence.existingClaim }} +{{- else -}} + {{- if $persistence.emptyDir -}} + {{- /* Always prefer an emptyDir next if that is set */}} + emptyDir: {} + {{- else -}} + {{- /* Otherwise refer to the PVC name */}} + persistentVolumeClaim: + {{- if $persistence.nameOverride }} + claimName: {{ $persistence.nameOverride }} + {{- else if $persistence.nameSuffix }} + claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $persistence.nameSuffix }} + {{- else }} + claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $index }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} + +{{- range $name, $dm := .Values.deviceMounts -}} +{{ if $dm.enabled }} +{{ if $dm.name }} +{{ $name = $dm.name }} +{{ end }} +- name: devicemount-{{ $name }} + {{ if $dm.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $dm.devicePath }} + {{ end }} +{{ end }} +{{- end -}} + +{{- range $name, $cs := .Values.customStorage -}} +{{ if $cs.enabled }} +{{ if $cs.name }} +{{ $name = $cs.name }} +{{ end }} +- name: customstorage-{{ $name }} + {{ if $cs.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $cs.hostPath }} + {{ end }} +{{ end }} +{{- end -}} + + +{{- if .Values.additionalVolumes }} + {{- toYaml .Values.additionalVolumes | nindent 0 }} +{{- end }} +{{- end -}} diff --git a/library/common/templates/lib/resources/_certHelpers.tpl b/library/common/templates/lib/resources/_certHelpers.tpl new file mode 100644 index 00000000..d2b07a9b --- /dev/null +++ b/library/common/templates/lib/resources/_certHelpers.tpl @@ -0,0 +1,32 @@ +{{/* +Retrieve true/false if certificate is configured +*/}} +{{- define "common.resources.cert.available" -}} +{{- if .ObjectValues.certHolder.certificate -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate) -}} +{{- template "common.resources.cert_present" $values -}} +{{- else -}} +{{- false -}} +{{- end -}} +{{- end -}} + + +{{/* +Retrieve public key of certificate +*/}} +{{- define "common.resources.cert.publicKey" -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate "publicKey" true) -}} +{{ include "common.resources.cert" $values }} +{{- end -}} + + +{{/* +Retrieve private key of certificate +*/}} +{{- define "common.resources.cert.privateKey" -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate) -}} +{{ include "common.resources.cert" $values }} +{{- end -}} diff --git a/library/common/templates/lib/resources/_certSecret.yaml b/library/common/templates/lib/resources/_certSecret.yaml new file mode 100644 index 00000000..2409ae70 --- /dev/null +++ b/library/common/templates/lib/resources/_certSecret.yaml @@ -0,0 +1,25 @@ +{{- define "common.resources.cert.secret" -}} + + +{{- $secretName := include "common.names.fullname" . -}} + +{{- if .ObjectValues.certHolder -}} + {{- if hasKey .ObjectValues.certHolder "nameSuffix" -}} + {{- $secretName = printf "%v-%v" $secretName .ObjectValues.certHolder.nameSuffix -}} + {{ end -}} +{{ else }} + {{- $_ := set $ "ObjectValues" (dict "certHolder" .Values) -}} +{{ end -}} + +{{- if eq (include "common.resources.cert.available" $ ) "true" -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ $secretName }} + labels: {{ include "common.labels" . | nindent 4 }} +type: kubernetes.io/tls +data: + tls.crt: {{ (include "common.resources.cert.publicKey" $ ) | toString | b64enc | quote }} + tls.key: {{ (include "common.resources.cert.privateKey" $ ) | toString | b64enc | quote }} +{{- end -}} +{{- end -}} diff --git a/library/common/templates/lib/resources/_certs.tpl b/library/common/templates/lib/resources/_certs.tpl new file mode 100644 index 00000000..91c525ab --- /dev/null +++ b/library/common/templates/lib/resources/_certs.tpl @@ -0,0 +1,24 @@ +{{/* +Retrieve true/false if certificate is available in ixCertificates +*/}} +{{- define "common.resources.cert_present" -}} +{{- $values := . -}} +{{- hasKey $values.Values.ixCertificates ($values.commonCertOptions.certKeyName | toString) -}} +{{- end -}} + + +{{/* +Retrieve certificate from variable name +*/}} +{{- define "common.resources.cert" -}} +{{- $values := . -}} +{{- $certKey := ($values.commonCertOptions.certKeyName | toString) -}} +{{- if hasKey $values.Values.ixCertificates $certKey -}} +{{- $cert := get $values.Values.ixCertificates $certKey -}} +{{- if $values.commonCertOptions.publicKey -}} +{{ $cert.certificate }} +{{- else -}} +{{ $cert.privatekey }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/library/common/templates/lib/resources/_portal_config.tpl b/library/common/templates/lib/resources/_portal_config.tpl new file mode 100644 index 00000000..d92961a0 --- /dev/null +++ b/library/common/templates/lib/resources/_portal_config.tpl @@ -0,0 +1,64 @@ +{{- define "common.resources.portal" -}} + +{{- if .Values.portal }} +{{- if .Values.portal.enabled }} +{{- $host := "$node_ip" }} +{{- $port := 443 }} +{{- $protocol := "https" }} +{{- $portProtocol := "" }} + +{{- if hasKey .Values "ingress" }} + {{- if hasKey .Values.ingress "main" -}} + {{- if .Values.ingress.main.host }} + {{- $host = .Values.ingress.main.host }} + {{- else }} + {{- range .Values.ingress.main.hosts }} + {{- $host = ( .host | quote ) }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( .Values.portal.ingressPort ) ( ne $host "$node_ip" ) }} + {{- $port = .Values.portal.ingressPort }} +{{- else if and ( eq $host "$node_ip" ) ( hasKey .Values "services" ) }} + {{- if hasKey .Values.services "main" }} + {{- if and (hasKey .Values.services.main.port "nodePort" ) ( eq .Values.services.main.type "NodePort" ) }} + {{- $port = .Values.services.main.port.nodePort }} + {{- if or ( eq .Values.services.main.port.protocol "HTTP" ) ( eq .Values.services.main.port.protocol "HTTPS" ) }} + {{- $portProtocol = .Values.services.main.port.protocol }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( $portProtocol ) ( eq $host "$node_ip" ) }} + {{- $protocol = $portProtocol }} +{{- else if and ( ne $host "$node_ip" ) }} + {{- if .Values.ingress.main.certType }} + {{- if eq .Values.ingress.main.certType "" }} + {{- $protocol = "http" }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( .Values.portal.host ) ( eq $host "$node_ip" ) }} + {{- $host = .Values.portal.host }} +{{- end }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal + labels: {{ include "common.labels" . | nindent 4 }} +data: + protocol: {{ $protocol }} + host: {{ $host }} + port: {{ $port | quote }} + url: {{ printf "%v%v%v%v%v" $protocol "://" $host ":" $port }} + +{{- end }} +{{- end }} +{{- end -}} diff --git a/library/common/templates/lib/storage/_mountPermissions.tpl b/library/common/templates/lib/storage/_mountPermissions.tpl new file mode 100644 index 00000000..323d2a33 --- /dev/null +++ b/library/common/templates/lib/storage/_mountPermissions.tpl @@ -0,0 +1,77 @@ +{{/* +This template serves as the blueprint for the mountPermissions job that is run +before chart installation. +*/}} +{{- define "common.storage.permissions" -}} +{{- if .Values.fixMountPermissions }} + + +{{- $jobName := include "common.names.fullname" . -}} +{{- $values := .Values -}} + + +{{- print "---" | nindent 0 -}} + +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ $jobName }}-autopermissions + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-weight": "-10" + "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation +spec: + template: + metadata: + spec: + restartPolicy: Never + containers: + - name: set-mount-permissions + image: "alpine:3.3" + command: + - /bin/sh + - -c + - | {{ range $index, $cs := .Values.customStorage}}{{ if and $cs.enabled $cs.setPermissions}} + chown -R {{ if eq $values.podSecurityContext.runAsNonRoot false }}{{ print $values.PUID }}{{ else }}{{ print $values.podSecurityContext.runAsUser }}{{ end }}:{{ print $values.podSecurityContext.fsGroup }} {{ print $cs.mountPath }}{{ end }}{{ end }} + #args: + # + #securityContext: + # + volumeMounts: + {{ range $name, $csm := .Values.customStorage }} + {{- if $csm.enabled -}} + {{- if $csm.setPermissions -}} + {{ if $csm.name }} + {{ $name = $csm.name }} + {{ end }} + - name: customstorage-{{ $name }} + mountPath: {{ $csm.mountPath }} + {{ if $csm.subPath }} + subPath: {{ $csm.subPath }} + {{ end }} + {{- end -}} + {{- end -}} + {{ end }} + volumes: + {{- range $name, $cs := .Values.customStorage -}} + {{ if $cs.enabled }} + {{ if $cs.setPermissions }} + {{ if $cs.name }} + {{ $name = $cs.name }} + {{ end }} + - name: customstorage-{{ $name }} + {{ if $cs.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $cs.hostPath }} + {{ end }} + {{ end }} + {{ end }} + {{- end -}} + + +{{- end }} +{{- end }} diff --git a/library/common/values.yaml b/library/common/values.yaml new file mode 100644 index 00000000..9b15e127 --- /dev/null +++ b/library/common/values.yaml @@ -0,0 +1,314 @@ +# type: options are deployment, daemonset or statefulset +controllerType: deployment +# Set annotations on the deployment/statefulset/daemonset +controllerAnnotations: {} +# Set labels on the deployment/statefulset/daemonset +controllerLabels: {} + +replicas: 1 +strategy: + ## For Deployments, valid values are Recreate and RollingUpdate + ## For StatefulSets, valid values are OnDelete and RollingUpdate + ## DaemonSets ignore this + type: RollingUpdate + +# Override the default command +command: [] +# Override the default args +args: [] + +nameOverride: "" +fullnameOverride: "" + +# Set annotations on the pod +podAnnotations: {} + +serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + +env: {} + # TZ: UTC + +## Variables with values set from templates, example +## With a release name of: demo, the example env value will be: demo-admin +envTpl: {} + # TEMPLATE_VALUE: "{{ .Release.Name }}-admin" + +## Variables with values from (for example) the Downward API +## See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ +envValueFrom: {} + # NODE_NAME: + # fieldRef: + # fieldPath: spec.nodeName + +envFrom: [] +# - configMapRef: +# name: config-map-name +# - secretRef: +# name: secret-name + +# Custom priority class for different treatment by the scheduler +# priorityClassName: system-node-critical + +# Allow specifying a custom scheduler name +# schedulerName: awkward-dangerous-scheduler + +# Allow specifying explicit hostname setting +# hostname: + +# When using hostNetwork make sure you set dnsPolicy to ClusterFirstWithHostNet +hostNetwork: false + +## Default get based on hostNetwork setting +# dnsPolicy: ClusterFirst + +# Optional DNS settings, configuring the ndots option may resolve +# nslookup issues on some Kubernetes setups. +# dnsConfig: +# options: +# - name: ndots +# value: "1" + +# Enable/disable the generation of environment variables for services. +# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#accessing-the-service +# for more information. +enableServiceLinks: true + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + fsGroupChangePolicy: "OnRootMismatch" + +# Configure the Security Context for the main container +securityContext: {} + + +initContainers: [] + +additionalContainers: [] + +## Probes configuration +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: false + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 5 + + readiness: + enabled: true + ## Set this to true if you wish to specify your own readinessProbe + custom: false + ## The spec field contains the values for the default readinessProbe. + ## If you selected custom: true, this field holds the definition of the readinessProbe. + spec: + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 5 + + startup: + enabled: true + ## Set this to true if you wish to specify your own startupProbe + custom: false + ## The spec field contains the values for the default startupProbe. + ## If you selected custom: true, this field holds the definition of the startupProbe. + spec: + initialDelaySeconds: 0 + timeoutSeconds: 10 + ## This means it has a maximum of 5*30=150 seconds to start up before it fails + periodSeconds: 10 + failureThreshold: 30 + +services: + main: + enabled: true + type: ClusterIP + ## Specify the default port information + port: + port: + ## name defaults to http + name: + protocol: TCP + ## Specify a service targetPort if you wish to differ the service port from the application port. + ## If targetPort is specified, this port number is used in the container definition instead of + ## service.port.port. Therefore named ports are not supported for this field. + targetPort: + ## Specify the nodePort value for the LoadBalancer and NodePort service types. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + # nodePort: + additionalPorts: [] + + ## Provide any additional annotations which may be required. This can be used to + ## set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + labels: {} + +additionalServices: [] +# - enabled: false +# nameSuffix: api +# type: ClusterIP +# # Specify the default port information +# port: +# port: +# # name defaults to http +# name: +# protocol: TCP +# # targetPort defaults to http +# targetPort: +# # nodePort: +# additionalPorts: [] +# annotations: {} +# labels: {} + +# ingress: +# main: +# enabled: false +# # Used when including ingress using {{ include "common.ingress" . }} +# type: "HTTP" +# entrypoint: "websecure" +# certType: "" +# ## Optional: defaults to IngressName +# serviceName: "" +# ## Optional: Almost never needed +# serviceKind: "" +# ## Optional: defaults to either service port +# servicePort: 80 +# annotations: {} +# # kubernetes.io/ingress.class: nginx +# # kubernetes.io/tls-acme: "true" +# labels: {} +# hosts: +# - host: chart-example.local +# path: / +# additionalIngresses: [] +# - enabled: false +# nameSuffix: "api" +# annotations: {} +# # kubernetes.io/ingress.class: nginx +# # kubernetes.io/tls-acme: "true" +# labels: {} +# hosts: +# - host: chart-example.local +# paths: +# - path: /api +# # Ignored if not kubeVersion >= 1.14-0 +# pathType: Prefix +# tls: [] +# # - secretName: chart-example-tls +# # hosts: +# # - chart-example.local + +persistence: + config: + enabled: false + mountPath: /config + ## configuration data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + ## + ## If you want to reuse an existing claim, you can pass the name of the PVC using + ## the existingClaim variable + # existingClaim: your-claim + # subPath: some-subpath + accessMode: ReadWriteOnce + size: 1Gi + ## Set to true to retain the PVC upon helm uninstall + skipuninstall: false + + # Create an emptyDir volume to share between all containers + shared: + enabled: false + emptyDir: true + mountPath: /shared + +additionalVolumes: [] + +additionalVolumeMounts: [] + +volumeClaimTemplates: [] +# Used in statefulset to create individual disks for each instance +# - name: data +# mountPath: /data +# accessMode: "ReadWriteOnce" +# size: 1Gi +# - name: backup +# mountPath: /backup +# subPath: theSubPath +# accessMode: "ReadWriteOnce" +# size: 2Gi +# storageClass: cheap-storage-class + +nodeSelector: {} + +affinity: {} + +tolerations: [] + +hostAliases: [] +# Use hostAliases to add custom entries to /etc/hosts - mapping IP addresses to hostnames. +# ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# - ip: "192.168.1.100" +# hostnames: +# - "example.com" +# - "www.example.com" + +resources: {} +# We usually recommend not to specify default resources and to leave this as a conscious +# choice for the user. This also increases chances charts run on environments with little +# resources, such as Minikube. If you do want to specify resources, uncomment the following +# lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# limits: +# cpu: 100m +# memory: 128Mi +# requests: +# cpu: 100m +# memory: 128Mi + +## TrueCharts Specific + +PUID: 568 +PGID: 568 +UMASK: "002" +fixMountPermissions: true + +# deviceMounts: +# config: +# enabled: false +# emptyDir: false +# hostPath: "/config" +# setPermissions: true + +# customStorage: +# - name: "data" +# enabled: false +# emptyDir: false +# mountPath: "/data" +# subPath: some-subpath +# hostPath: "" +# readOnly: false +# setPermissions: true From 34c3562bfdc08f4d603801d0b2177e9527b0d988 Mon Sep 17 00:00:00 2001 From: kjeld Schouten-Lebbing Date: Sat, 8 May 2021 12:43:58 +0200 Subject: [PATCH 5/6] add docs folder --- README.md => docs/README.md | 1 + 1 file changed, 1 insertion(+) rename README.md => docs/README.md (86%) diff --git a/README.md b/docs/README.md similarity index 86% rename from README.md rename to docs/README.md index d911e3d3..cbc3147c 100644 --- a/README.md +++ b/docs/README.md @@ -10,3 +10,4 @@ It contains: - 1 library train (which is not processed by CI - 1 example library (common) - Basic CI to test PR's and catalog-health +- docs folder (ignored by testing) with readme.md file From ea1a7af498af4853eeefc11534f1435cb24f807e Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Thu, 16 Mar 2023 10:06:03 +0100 Subject: [PATCH 6/6] no message --- .../.github}/workflows/PR_testing.yaml | 0 .../.github}/workflows/Push_testing.yaml | 0 .gitignore => scale-catalog-template/.gitignore | 0 .../.helmdocsignore | 0 LICENSE => scale-catalog-template/LICENSE | 0 .../charts}/syncthing/3.1.5/CONFIG.md | 0 .../charts}/syncthing/3.1.5/Chart.lock | 0 .../charts}/syncthing/3.1.5/Chart.yaml | 0 .../charts}/syncthing/3.1.5/README.md | 0 .../charts}/syncthing/3.1.5/app-readme.md | 0 .../charts}/syncthing/3.1.5/charts/common-3.5.5.tgz | Bin .../charts}/syncthing/3.1.5/ix_values.yaml | 0 .../charts}/syncthing/3.1.5/questions.yaml | 0 .../charts}/syncthing/3.1.5/templates/common.yaml | 0 .../charts}/syncthing/3.1.5/test_values.yaml | 0 .../charts}/syncthing/3.1.5/values.yaml | 0 .../charts}/syncthing/item.yaml | 0 {docs => scale-catalog-template/docs}/README.md | 0 .../features_capability.json | 0 .../library}/common/.helmignore | 0 .../library}/common/Chart.yaml | 0 .../library}/common/README.md | 0 .../library}/common/templates/_all.tpl | 0 .../library}/common/templates/_daemonset.tpl | 0 .../library}/common/templates/_deployment.tpl | 0 .../library}/common/templates/_ingress.tpl | 0 .../library}/common/templates/_pvc.tpl | 0 .../library}/common/templates/_serviceaccount.tpl | 0 .../library}/common/templates/_services.tpl | 0 .../library}/common/templates/_statefulset.tpl | 0 .../library}/common/templates/classes/_pvc.tpl | 0 .../library}/common/templates/classes/_service.tpl | 0 .../common/templates/classes/_service_ports.tpl | 0 .../templates/classes/ingress/_externalService.tpl | 0 .../common/templates/classes/ingress/_ingress.tpl | 0 .../templates/classes/ingress/_ingressRoute.tpl | 0 .../common/templates/lib/chart/_capabilities.tpl | 0 .../library}/common/templates/lib/chart/_errors.tpl | 0 .../library}/common/templates/lib/chart/_images.tpl | 0 .../library}/common/templates/lib/chart/_labels.tpl | 0 .../library}/common/templates/lib/chart/_names.tpl | 0 .../library}/common/templates/lib/chart/_utils.tpl | 0 .../library}/common/templates/lib/chart/_values.tpl | 0 .../common/templates/lib/controller/_container.tpl | 0 .../common/templates/lib/controller/_pod.tpl | 0 .../common/templates/lib/controller/_ports.tpl | 0 .../common/templates/lib/controller/_probes.tpl | 0 .../templates/lib/controller/_volumeMounts.tpl | 0 .../common/templates/lib/controller/_volumes.tpl | 0 .../common/templates/lib/resources/_certHelpers.tpl | 0 .../common/templates/lib/resources/_certSecret.yaml | 0 .../common/templates/lib/resources/_certs.tpl | 0 .../templates/lib/resources/_portal_config.tpl | 0 .../templates/lib/storage/_mountPermissions.tpl | 0 .../library}/common/values.yaml | 0 .../stable}/jackett/3.1.5/CONFIG.md | 0 .../stable}/jackett/3.1.5/Chart.lock | 0 .../stable}/jackett/3.1.5/Chart.yaml | 0 .../stable}/jackett/3.1.5/README.md | 0 .../stable}/jackett/3.1.5/app-readme.md | 0 .../stable}/jackett/3.1.5/charts/common-3.5.5.tgz | Bin .../stable}/jackett/3.1.5/ix_values.yaml | 0 .../stable}/jackett/3.1.5/questions.yaml | 0 .../stable}/jackett/3.1.5/templates/common.yaml | 0 .../stable}/jackett/3.1.5/test_values.yaml | 0 .../stable}/jackett/3.1.5/values.yaml | 0 .../stable}/jackett/item.yaml | 0 .../test}/appdaemon/0.1.3/CONFIG.md | 0 .../test}/appdaemon/0.1.3/Chart.lock | 0 .../test}/appdaemon/0.1.3/Chart.yaml | 0 .../test}/appdaemon/0.1.3/README.md | 0 .../test}/appdaemon/0.1.3/app-readme.md | 0 .../test}/appdaemon/0.1.3/charts/common-3.5.5.tgz | Bin .../test}/appdaemon/0.1.3/ix_values.yaml | 0 .../test}/appdaemon/0.1.3/questions.yaml | 0 .../test}/appdaemon/0.1.3/templates/common.yaml | 0 .../test}/appdaemon/0.1.3/test_values.yaml | 0 .../test}/appdaemon/0.1.3/values.yaml | 0 .../test}/appdaemon/item.yaml | 0 .../test}/bazarr/3.1.5/CONFIG.md | 0 .../test}/bazarr/3.1.5/Chart.lock | 0 .../test}/bazarr/3.1.5/Chart.yaml | 0 .../test}/bazarr/3.1.5/README.md | 0 .../test}/bazarr/3.1.5/app-readme.md | 0 .../test}/bazarr/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/bazarr/3.1.5/ix_values.yaml | 0 .../test}/bazarr/3.1.5/questions.yaml | 0 .../test}/bazarr/3.1.5/templates/common.yaml | 0 .../test}/bazarr/3.1.5/test_values.yaml | 0 .../test}/bazarr/3.1.5/values.yaml | 0 .../test}/bazarr/item.yaml | 0 .../test}/calibre-web/3.1.5/CONFIG.md | 0 .../test}/calibre-web/3.1.5/Chart.lock | 0 .../test}/calibre-web/3.1.5/Chart.yaml | 0 .../test}/calibre-web/3.1.5/README.md | 0 .../test}/calibre-web/3.1.5/app-readme.md | 0 .../test}/calibre-web/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/calibre-web/3.1.5/ix_values.yaml | 0 .../test}/calibre-web/3.1.5/questions.yaml | 0 .../test}/calibre-web/3.1.5/templates/common.yaml | 0 .../test}/calibre-web/3.1.5/test_values.yaml | 0 .../test}/calibre-web/3.1.5/values.yaml | 0 .../test}/calibre-web/item.yaml | 0 .../test}/deluge/3.1.5/CONFIG.md | 0 .../test}/deluge/3.1.5/Chart.lock | 0 .../test}/deluge/3.1.5/Chart.yaml | 0 .../test}/deluge/3.1.5/README.md | 0 .../test}/deluge/3.1.5/app-readme.md | 0 .../test}/deluge/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/deluge/3.1.5/ix_values.yaml | 0 .../test}/deluge/3.1.5/questions.yaml | 0 .../test}/deluge/3.1.5/templates/common.yaml | 0 .../test}/deluge/3.1.5/test_values.yaml | 0 .../test}/deluge/3.1.5/values.yaml | 0 .../test}/deluge/item.yaml | 0 .../test}/fireflyiii/1.0.1/CONFIG.md | 0 .../test}/fireflyiii/1.0.1/Chart.lock | 0 .../test}/fireflyiii/1.0.1/Chart.yaml | 0 .../test}/fireflyiii/1.0.1/README.md | 0 .../test}/fireflyiii/1.0.1/app-readme.md | 0 .../test}/fireflyiii/1.0.1/charts/common-3.5.5.tgz | Bin .../fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz | Bin .../test}/fireflyiii/1.0.1/ix_values.yaml | 0 .../test}/fireflyiii/1.0.1/questions.yaml | 0 .../test}/fireflyiii/1.0.1/templates/common.yaml | 0 .../test}/fireflyiii/1.0.1/templates/secrets.yaml | 0 .../test}/fireflyiii/1.0.1/test_values.yaml | 0 .../test}/fireflyiii/1.0.1/values.yaml | 0 .../test}/fireflyiii/item.yaml | 0 .../test}/freshrss/3.1.5/CONFIG.md | 0 .../test}/freshrss/3.1.5/Chart.lock | 0 .../test}/freshrss/3.1.5/Chart.yaml | 0 .../test}/freshrss/3.1.5/README.md | 0 .../test}/freshrss/3.1.5/app-readme.md | 0 .../test}/freshrss/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/freshrss/3.1.5/ix_values.yaml | 0 .../test}/freshrss/3.1.5/questions.yaml | 0 .../test}/freshrss/3.1.5/templates/common.yaml | 0 .../test}/freshrss/3.1.5/test_values.yaml | 0 .../test}/freshrss/3.1.5/values.yaml | 0 .../test}/freshrss/item.yaml | 0 .../test}/gaps/3.1.5/CONFIG.md | 0 .../test}/gaps/3.1.5/Chart.lock | 0 .../test}/gaps/3.1.5/Chart.yaml | 0 .../test}/gaps/3.1.5/README.md | 0 .../test}/gaps/3.1.5/app-readme.md | 0 .../test}/gaps/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/gaps/3.1.5/ix_values.yaml | 0 .../test}/gaps/3.1.5/questions.yaml | 0 .../test}/gaps/3.1.5/templates/common.yaml | 0 .../test}/gaps/3.1.5/test_values.yaml | 0 .../test}/gaps/3.1.5/values.yaml | 0 .../test}/gaps/item.yaml | 0 .../test}/grocy/3.1.5/CONFIG.md | 0 .../test}/grocy/3.1.5/Chart.lock | 0 .../test}/grocy/3.1.5/Chart.yaml | 0 .../test}/grocy/3.1.5/README.md | 0 .../test}/grocy/3.1.5/app-readme.md | 0 .../test}/grocy/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/grocy/3.1.5/ix_values.yaml | 0 .../test}/grocy/3.1.5/questions.yaml | 0 .../test}/grocy/3.1.5/templates/common.yaml | 0 .../test}/grocy/3.1.5/test_values.yaml | 0 .../test}/grocy/3.1.5/values.yaml | 0 .../test}/grocy/item.yaml | 0 .../test}/heimdall/3.1.5/CONFIG.md | 0 .../test}/heimdall/3.1.5/Chart.lock | 0 .../test}/heimdall/3.1.5/Chart.yaml | 0 .../test}/heimdall/3.1.5/README.md | 0 .../test}/heimdall/3.1.5/app-readme.md | 0 .../test}/heimdall/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/heimdall/3.1.5/ix_values.yaml | 0 .../test}/heimdall/3.1.5/questions.yaml | 0 .../test}/heimdall/3.1.5/templates/common.yaml | 0 .../test}/heimdall/3.1.5/test_values.yaml | 0 .../test}/heimdall/3.1.5/values.yaml | 0 .../test}/heimdall/item.yaml | 0 .../test}/lazylibrarian/3.1.5/CONFIG.md | 0 .../test}/lazylibrarian/3.1.5/Chart.lock | 0 .../test}/lazylibrarian/3.1.5/Chart.yaml | 0 .../test}/lazylibrarian/3.1.5/README.md | 0 .../test}/lazylibrarian/3.1.5/app-readme.md | 0 .../lazylibrarian/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/lazylibrarian/3.1.5/ix_values.yaml | 0 .../test}/lazylibrarian/3.1.5/questions.yaml | 0 .../test}/lazylibrarian/3.1.5/templates/common.yaml | 0 .../test}/lazylibrarian/3.1.5/test_values.yaml | 0 .../test}/lazylibrarian/3.1.5/values.yaml | 0 .../test}/lazylibrarian/item.yaml | 0 .../test}/lychee/3.1.5/CONFIG.md | 0 .../test}/lychee/3.1.5/Chart.lock | 0 .../test}/lychee/3.1.5/Chart.yaml | 0 .../test}/lychee/3.1.5/README.md | 0 .../test}/lychee/3.1.5/app-readme.md | 0 .../test}/lychee/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/lychee/3.1.5/ix_values.yaml | 0 .../test}/lychee/3.1.5/questions.yaml | 0 .../test}/lychee/3.1.5/templates/common.yaml | 0 .../test}/lychee/3.1.5/test_values.yaml | 0 .../test}/lychee/3.1.5/values.yaml | 0 .../test}/lychee/item.yaml | 0 .../test}/navidrome/3.1.5/CONFIG.md | 0 .../test}/navidrome/3.1.5/Chart.lock | 0 .../test}/navidrome/3.1.5/Chart.yaml | 0 .../test}/navidrome/3.1.5/README.md | 0 .../test}/navidrome/3.1.5/app-readme.md | 0 .../test}/navidrome/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/navidrome/3.1.5/ix_values.yaml | 0 .../test}/navidrome/3.1.5/questions.yaml | 0 .../test}/navidrome/3.1.5/templates/common.yaml | 0 .../test}/navidrome/3.1.5/test_values.yaml | 0 .../test}/navidrome/3.1.5/values.yaml | 0 .../test}/navidrome/item.yaml | 0 .../test}/node-red/3.1.5/CONFIG.md | 0 .../test}/node-red/3.1.5/Chart.lock | 0 .../test}/node-red/3.1.5/Chart.yaml | 0 .../test}/node-red/3.1.5/README.md | 0 .../test}/node-red/3.1.5/app-readme.md | 0 .../test}/node-red/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/node-red/3.1.5/ix_values.yaml | 0 .../test}/node-red/3.1.5/questions.yaml | 0 .../test}/node-red/3.1.5/templates/common.yaml | 0 .../test}/node-red/3.1.5/test_values.yaml | 0 .../test}/node-red/3.1.5/values.yaml | 0 .../test}/node-red/item.yaml | 0 .../test}/nzbget/3.1.5/CONFIG.md | 0 .../test}/nzbget/3.1.5/Chart.lock | 0 .../test}/nzbget/3.1.5/Chart.yaml | 0 .../test}/nzbget/3.1.5/README.md | 0 .../test}/nzbget/3.1.5/app-readme.md | 0 .../test}/nzbget/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/nzbget/3.1.5/ix_values.yaml | 0 .../test}/nzbget/3.1.5/questions.yaml | 0 .../test}/nzbget/3.1.5/templates/common.yaml | 0 .../test}/nzbget/3.1.5/test_values.yaml | 0 .../test}/nzbget/3.1.5/values.yaml | 0 .../test}/nzbget/item.yaml | 0 .../test}/nzbhydra/3.1.5/CONFIG.md | 0 .../test}/nzbhydra/3.1.5/Chart.lock | 0 .../test}/nzbhydra/3.1.5/Chart.yaml | 0 .../test}/nzbhydra/3.1.5/README.md | 0 .../test}/nzbhydra/3.1.5/app-readme.md | 0 .../test}/nzbhydra/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/nzbhydra/3.1.5/ix_values.yaml | 0 .../test}/nzbhydra/3.1.5/questions.yaml | 0 .../test}/nzbhydra/3.1.5/templates/common.yaml | 0 .../test}/nzbhydra/3.1.5/test_values.yaml | 0 .../test}/nzbhydra/3.1.5/values.yaml | 0 .../test}/nzbhydra/item.yaml | 0 .../test}/organizr/3.1.5/CONFIG.md | 0 .../test}/organizr/3.1.5/Chart.lock | 0 .../test}/organizr/3.1.5/Chart.yaml | 0 .../test}/organizr/3.1.5/README.md | 0 .../test}/organizr/3.1.5/app-readme.md | 0 .../test}/organizr/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/organizr/3.1.5/ix_values.yaml | 0 .../test}/organizr/3.1.5/questions.yaml | 0 .../test}/organizr/3.1.5/templates/common.yaml | 0 .../test}/organizr/3.1.5/test_values.yaml | 0 .../test}/organizr/3.1.5/values.yaml | 0 .../test}/organizr/item.yaml | 0 .../test}/podgrab/1.0.3/CONFIG.md | 0 .../test}/podgrab/1.0.3/Chart.lock | 0 .../test}/podgrab/1.0.3/Chart.yaml | 0 .../test}/podgrab/1.0.3/README.md | 0 .../test}/podgrab/1.0.3/app-readme.md | 0 .../test}/podgrab/1.0.3/charts/common-3.5.5.tgz | Bin .../test}/podgrab/1.0.3/ix_values.yaml | 0 .../test}/podgrab/1.0.3/questions.yaml | 0 .../test}/podgrab/1.0.3/templates/common.yaml | 0 .../test}/podgrab/1.0.3/test_values.yaml | 0 .../test}/podgrab/1.0.3/values.yaml | 0 .../test}/podgrab/item.yaml | 0 .../test}/qbittorrent/3.1.5/CONFIG.md | 0 .../test}/qbittorrent/3.1.5/Chart.lock | 0 .../test}/qbittorrent/3.1.5/Chart.yaml | 0 .../test}/qbittorrent/3.1.5/README.md | 0 .../test}/qbittorrent/3.1.5/app-readme.md | 0 .../test}/qbittorrent/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/qbittorrent/3.1.5/ix_values.yaml | 0 .../test}/qbittorrent/3.1.5/questions.yaml | 0 .../test}/qbittorrent/3.1.5/templates/common.yaml | 0 .../qbittorrent/3.1.5/templates/configmap.yaml | 0 .../test}/qbittorrent/3.1.5/test_values.yaml | 0 .../test}/qbittorrent/3.1.5/values.yaml | 0 .../test}/qbittorrent/item.yaml | 0 .../test}/readarr/3.1.5/CONFIG.md | 0 .../test}/readarr/3.1.5/Chart.lock | 0 .../test}/readarr/3.1.5/Chart.yaml | 0 .../test}/readarr/3.1.5/README.md | 0 .../test}/readarr/3.1.5/app-readme.md | 0 .../test}/readarr/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/readarr/3.1.5/ix_values.yaml | 0 .../test}/readarr/3.1.5/questions.yaml | 0 .../test}/readarr/3.1.5/templates/common.yaml | 0 .../test}/readarr/3.1.5/test_values.yaml | 0 .../test}/readarr/3.1.5/values.yaml | 0 .../test}/readarr/item.yaml | 0 .../test}/sabnzbd/3.1.5/CONFIG.md | 0 .../test}/sabnzbd/3.1.5/Chart.lock | 0 .../test}/sabnzbd/3.1.5/Chart.yaml | 0 .../test}/sabnzbd/3.1.5/README.md | 0 .../test}/sabnzbd/3.1.5/app-readme.md | 0 .../test}/sabnzbd/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/sabnzbd/3.1.5/ix_values.yaml | 0 .../test}/sabnzbd/3.1.5/questions.yaml | 0 .../test}/sabnzbd/3.1.5/templates/common.yaml | 0 .../test}/sabnzbd/3.1.5/test_values.yaml | 0 .../test}/sabnzbd/3.1.5/values.yaml | 0 .../test}/sabnzbd/item.yaml | 0 .../test}/truecommand/3.1.5/CONFIG.md | 0 .../test}/truecommand/3.1.5/Chart.lock | 0 .../test}/truecommand/3.1.5/Chart.yaml | 0 .../test}/truecommand/3.1.5/README.md | 0 .../test}/truecommand/3.1.5/app-readme.md | 0 .../test}/truecommand/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/truecommand/3.1.5/ix_values.yaml | 0 .../test}/truecommand/3.1.5/questions.yaml | 0 .../test}/truecommand/3.1.5/templates/common.yaml | 0 .../test}/truecommand/3.1.5/test_values.yaml | 0 .../test}/truecommand/3.1.5/values.yaml | 0 .../test}/truecommand/item.yaml | 0 .../test}/tvheadend/4.1.5/CONFIG.md | 0 .../test}/tvheadend/4.1.5/Chart.lock | 0 .../test}/tvheadend/4.1.5/Chart.yaml | 0 .../test}/tvheadend/4.1.5/README.md | 0 .../test}/tvheadend/4.1.5/app-readme.md | 0 .../test}/tvheadend/4.1.5/charts/common-3.5.5.tgz | Bin .../test}/tvheadend/4.1.5/ix_values.yaml | 0 .../test}/tvheadend/4.1.5/questions.yaml | 0 .../test}/tvheadend/4.1.5/templates/common.yaml | 0 .../test}/tvheadend/4.1.5/test_values.yaml | 0 .../test}/tvheadend/4.1.5/values.yaml | 0 .../test}/tvheadend/item.yaml | 0 .../test}/unifi/3.1.5/CONFIG.md | 0 .../test}/unifi/3.1.5/Chart.lock | 0 .../test}/unifi/3.1.5/Chart.yaml | 0 .../test}/unifi/3.1.5/README.md | 0 .../test}/unifi/3.1.5/app-readme.md | 0 .../test}/unifi/3.1.5/charts/common-3.5.5.tgz | Bin .../test}/unifi/3.1.5/ix_values.yaml | 0 .../test}/unifi/3.1.5/questions.yaml | 0 .../test}/unifi/3.1.5/templates/common.yaml | 0 .../test}/unifi/3.1.5/test_values.yaml | 0 .../test}/unifi/3.1.5/values.yaml | 0 .../test}/unifi/item.yaml | 0 346 files changed, 0 insertions(+), 0 deletions(-) rename {.github => scale-catalog-template/.github}/workflows/PR_testing.yaml (100%) rename {.github => scale-catalog-template/.github}/workflows/Push_testing.yaml (100%) rename .gitignore => scale-catalog-template/.gitignore (100%) rename .helmdocsignore => scale-catalog-template/.helmdocsignore (100%) rename LICENSE => scale-catalog-template/LICENSE (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/CONFIG.md (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/Chart.lock (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/Chart.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/README.md (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/app-readme.md (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/charts/common-3.5.5.tgz (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/ix_values.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/questions.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/templates/common.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/test_values.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/3.1.5/values.yaml (100%) rename {charts => scale-catalog-template/charts}/syncthing/item.yaml (100%) rename {docs => scale-catalog-template/docs}/README.md (100%) rename features_capability.json => scale-catalog-template/features_capability.json (100%) rename {library => scale-catalog-template/library}/common/.helmignore (100%) rename {library => scale-catalog-template/library}/common/Chart.yaml (100%) rename {library => scale-catalog-template/library}/common/README.md (100%) rename {library => scale-catalog-template/library}/common/templates/_all.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_daemonset.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_deployment.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_ingress.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_pvc.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_serviceaccount.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_services.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/_statefulset.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/_pvc.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/_service.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/_service_ports.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/ingress/_externalService.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/ingress/_ingress.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/classes/ingress/_ingressRoute.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_capabilities.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_errors.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_images.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_labels.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_names.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_utils.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/chart/_values.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_container.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_pod.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_ports.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_probes.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_volumeMounts.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/controller/_volumes.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/resources/_certHelpers.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/resources/_certSecret.yaml (100%) rename {library => scale-catalog-template/library}/common/templates/lib/resources/_certs.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/resources/_portal_config.tpl (100%) rename {library => scale-catalog-template/library}/common/templates/lib/storage/_mountPermissions.tpl (100%) rename {library => scale-catalog-template/library}/common/values.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/CONFIG.md (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/Chart.lock (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/Chart.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/README.md (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/app-readme.md (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/charts/common-3.5.5.tgz (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/ix_values.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/questions.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/templates/common.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/test_values.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/3.1.5/values.yaml (100%) rename {stable => scale-catalog-template/stable}/jackett/item.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/CONFIG.md (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/Chart.lock (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/Chart.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/README.md (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/app-readme.md (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/questions.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/test_values.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/0.1.3/values.yaml (100%) rename {test => scale-catalog-template/test}/appdaemon/item.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/bazarr/item.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/calibre-web/item.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/deluge/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/deluge/item.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/CONFIG.md (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/Chart.lock (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/Chart.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/README.md (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/app-readme.md (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/questions.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/templates/secrets.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/test_values.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/1.0.1/values.yaml (100%) rename {test => scale-catalog-template/test}/fireflyiii/item.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/freshrss/item.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/gaps/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/gaps/item.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/grocy/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/grocy/item.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/heimdall/item.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/lazylibrarian/item.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/lychee/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/lychee/item.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/navidrome/item.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/node-red/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/node-red/item.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/nzbget/item.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/nzbhydra/item.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/organizr/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/organizr/item.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/CONFIG.md (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/Chart.lock (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/Chart.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/README.md (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/app-readme.md (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/questions.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/test_values.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/1.0.3/values.yaml (100%) rename {test => scale-catalog-template/test}/podgrab/item.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/templates/configmap.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/qbittorrent/item.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/readarr/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/readarr/item.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/sabnzbd/item.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/truecommand/item.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/README.md (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/4.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/tvheadend/item.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/CONFIG.md (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/Chart.lock (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/Chart.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/README.md (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/app-readme.md (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/charts/common-3.5.5.tgz (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/ix_values.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/questions.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/templates/common.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/test_values.yaml (100%) rename {test => scale-catalog-template/test}/unifi/3.1.5/values.yaml (100%) rename {test => scale-catalog-template/test}/unifi/item.yaml (100%) diff --git a/.github/workflows/PR_testing.yaml b/scale-catalog-template/.github/workflows/PR_testing.yaml similarity index 100% rename from .github/workflows/PR_testing.yaml rename to scale-catalog-template/.github/workflows/PR_testing.yaml diff --git a/.github/workflows/Push_testing.yaml b/scale-catalog-template/.github/workflows/Push_testing.yaml similarity index 100% rename from .github/workflows/Push_testing.yaml rename to scale-catalog-template/.github/workflows/Push_testing.yaml diff --git a/.gitignore b/scale-catalog-template/.gitignore similarity index 100% rename from .gitignore rename to scale-catalog-template/.gitignore diff --git a/.helmdocsignore b/scale-catalog-template/.helmdocsignore similarity index 100% rename from .helmdocsignore rename to scale-catalog-template/.helmdocsignore diff --git a/LICENSE b/scale-catalog-template/LICENSE similarity index 100% rename from LICENSE rename to scale-catalog-template/LICENSE diff --git a/charts/syncthing/3.1.5/CONFIG.md b/scale-catalog-template/charts/syncthing/3.1.5/CONFIG.md similarity index 100% rename from charts/syncthing/3.1.5/CONFIG.md rename to scale-catalog-template/charts/syncthing/3.1.5/CONFIG.md diff --git a/charts/syncthing/3.1.5/Chart.lock b/scale-catalog-template/charts/syncthing/3.1.5/Chart.lock similarity index 100% rename from charts/syncthing/3.1.5/Chart.lock rename to scale-catalog-template/charts/syncthing/3.1.5/Chart.lock diff --git a/charts/syncthing/3.1.5/Chart.yaml b/scale-catalog-template/charts/syncthing/3.1.5/Chart.yaml similarity index 100% rename from charts/syncthing/3.1.5/Chart.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/Chart.yaml diff --git a/charts/syncthing/3.1.5/README.md b/scale-catalog-template/charts/syncthing/3.1.5/README.md similarity index 100% rename from charts/syncthing/3.1.5/README.md rename to scale-catalog-template/charts/syncthing/3.1.5/README.md diff --git a/charts/syncthing/3.1.5/app-readme.md b/scale-catalog-template/charts/syncthing/3.1.5/app-readme.md similarity index 100% rename from charts/syncthing/3.1.5/app-readme.md rename to scale-catalog-template/charts/syncthing/3.1.5/app-readme.md diff --git a/charts/syncthing/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/charts/syncthing/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from charts/syncthing/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/charts/syncthing/3.1.5/charts/common-3.5.5.tgz diff --git a/charts/syncthing/3.1.5/ix_values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/ix_values.yaml similarity index 100% rename from charts/syncthing/3.1.5/ix_values.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/ix_values.yaml diff --git a/charts/syncthing/3.1.5/questions.yaml b/scale-catalog-template/charts/syncthing/3.1.5/questions.yaml similarity index 100% rename from charts/syncthing/3.1.5/questions.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/questions.yaml diff --git a/charts/syncthing/3.1.5/templates/common.yaml b/scale-catalog-template/charts/syncthing/3.1.5/templates/common.yaml similarity index 100% rename from charts/syncthing/3.1.5/templates/common.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/templates/common.yaml diff --git a/charts/syncthing/3.1.5/test_values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/test_values.yaml similarity index 100% rename from charts/syncthing/3.1.5/test_values.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/test_values.yaml diff --git a/charts/syncthing/3.1.5/values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/values.yaml similarity index 100% rename from charts/syncthing/3.1.5/values.yaml rename to scale-catalog-template/charts/syncthing/3.1.5/values.yaml diff --git a/charts/syncthing/item.yaml b/scale-catalog-template/charts/syncthing/item.yaml similarity index 100% rename from charts/syncthing/item.yaml rename to scale-catalog-template/charts/syncthing/item.yaml diff --git a/docs/README.md b/scale-catalog-template/docs/README.md similarity index 100% rename from docs/README.md rename to scale-catalog-template/docs/README.md diff --git a/features_capability.json b/scale-catalog-template/features_capability.json similarity index 100% rename from features_capability.json rename to scale-catalog-template/features_capability.json diff --git a/library/common/.helmignore b/scale-catalog-template/library/common/.helmignore similarity index 100% rename from library/common/.helmignore rename to scale-catalog-template/library/common/.helmignore diff --git a/library/common/Chart.yaml b/scale-catalog-template/library/common/Chart.yaml similarity index 100% rename from library/common/Chart.yaml rename to scale-catalog-template/library/common/Chart.yaml diff --git a/library/common/README.md b/scale-catalog-template/library/common/README.md similarity index 100% rename from library/common/README.md rename to scale-catalog-template/library/common/README.md diff --git a/library/common/templates/_all.tpl b/scale-catalog-template/library/common/templates/_all.tpl similarity index 100% rename from library/common/templates/_all.tpl rename to scale-catalog-template/library/common/templates/_all.tpl diff --git a/library/common/templates/_daemonset.tpl b/scale-catalog-template/library/common/templates/_daemonset.tpl similarity index 100% rename from library/common/templates/_daemonset.tpl rename to scale-catalog-template/library/common/templates/_daemonset.tpl diff --git a/library/common/templates/_deployment.tpl b/scale-catalog-template/library/common/templates/_deployment.tpl similarity index 100% rename from library/common/templates/_deployment.tpl rename to scale-catalog-template/library/common/templates/_deployment.tpl diff --git a/library/common/templates/_ingress.tpl b/scale-catalog-template/library/common/templates/_ingress.tpl similarity index 100% rename from library/common/templates/_ingress.tpl rename to scale-catalog-template/library/common/templates/_ingress.tpl diff --git a/library/common/templates/_pvc.tpl b/scale-catalog-template/library/common/templates/_pvc.tpl similarity index 100% rename from library/common/templates/_pvc.tpl rename to scale-catalog-template/library/common/templates/_pvc.tpl diff --git a/library/common/templates/_serviceaccount.tpl b/scale-catalog-template/library/common/templates/_serviceaccount.tpl similarity index 100% rename from library/common/templates/_serviceaccount.tpl rename to scale-catalog-template/library/common/templates/_serviceaccount.tpl diff --git a/library/common/templates/_services.tpl b/scale-catalog-template/library/common/templates/_services.tpl similarity index 100% rename from library/common/templates/_services.tpl rename to scale-catalog-template/library/common/templates/_services.tpl diff --git a/library/common/templates/_statefulset.tpl b/scale-catalog-template/library/common/templates/_statefulset.tpl similarity index 100% rename from library/common/templates/_statefulset.tpl rename to scale-catalog-template/library/common/templates/_statefulset.tpl diff --git a/library/common/templates/classes/_pvc.tpl b/scale-catalog-template/library/common/templates/classes/_pvc.tpl similarity index 100% rename from library/common/templates/classes/_pvc.tpl rename to scale-catalog-template/library/common/templates/classes/_pvc.tpl diff --git a/library/common/templates/classes/_service.tpl b/scale-catalog-template/library/common/templates/classes/_service.tpl similarity index 100% rename from library/common/templates/classes/_service.tpl rename to scale-catalog-template/library/common/templates/classes/_service.tpl diff --git a/library/common/templates/classes/_service_ports.tpl b/scale-catalog-template/library/common/templates/classes/_service_ports.tpl similarity index 100% rename from library/common/templates/classes/_service_ports.tpl rename to scale-catalog-template/library/common/templates/classes/_service_ports.tpl diff --git a/library/common/templates/classes/ingress/_externalService.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_externalService.tpl similarity index 100% rename from library/common/templates/classes/ingress/_externalService.tpl rename to scale-catalog-template/library/common/templates/classes/ingress/_externalService.tpl diff --git a/library/common/templates/classes/ingress/_ingress.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_ingress.tpl similarity index 100% rename from library/common/templates/classes/ingress/_ingress.tpl rename to scale-catalog-template/library/common/templates/classes/ingress/_ingress.tpl diff --git a/library/common/templates/classes/ingress/_ingressRoute.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_ingressRoute.tpl similarity index 100% rename from library/common/templates/classes/ingress/_ingressRoute.tpl rename to scale-catalog-template/library/common/templates/classes/ingress/_ingressRoute.tpl diff --git a/library/common/templates/lib/chart/_capabilities.tpl b/scale-catalog-template/library/common/templates/lib/chart/_capabilities.tpl similarity index 100% rename from library/common/templates/lib/chart/_capabilities.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_capabilities.tpl diff --git a/library/common/templates/lib/chart/_errors.tpl b/scale-catalog-template/library/common/templates/lib/chart/_errors.tpl similarity index 100% rename from library/common/templates/lib/chart/_errors.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_errors.tpl diff --git a/library/common/templates/lib/chart/_images.tpl b/scale-catalog-template/library/common/templates/lib/chart/_images.tpl similarity index 100% rename from library/common/templates/lib/chart/_images.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_images.tpl diff --git a/library/common/templates/lib/chart/_labels.tpl b/scale-catalog-template/library/common/templates/lib/chart/_labels.tpl similarity index 100% rename from library/common/templates/lib/chart/_labels.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_labels.tpl diff --git a/library/common/templates/lib/chart/_names.tpl b/scale-catalog-template/library/common/templates/lib/chart/_names.tpl similarity index 100% rename from library/common/templates/lib/chart/_names.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_names.tpl diff --git a/library/common/templates/lib/chart/_utils.tpl b/scale-catalog-template/library/common/templates/lib/chart/_utils.tpl similarity index 100% rename from library/common/templates/lib/chart/_utils.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_utils.tpl diff --git a/library/common/templates/lib/chart/_values.tpl b/scale-catalog-template/library/common/templates/lib/chart/_values.tpl similarity index 100% rename from library/common/templates/lib/chart/_values.tpl rename to scale-catalog-template/library/common/templates/lib/chart/_values.tpl diff --git a/library/common/templates/lib/controller/_container.tpl b/scale-catalog-template/library/common/templates/lib/controller/_container.tpl similarity index 100% rename from library/common/templates/lib/controller/_container.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_container.tpl diff --git a/library/common/templates/lib/controller/_pod.tpl b/scale-catalog-template/library/common/templates/lib/controller/_pod.tpl similarity index 100% rename from library/common/templates/lib/controller/_pod.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_pod.tpl diff --git a/library/common/templates/lib/controller/_ports.tpl b/scale-catalog-template/library/common/templates/lib/controller/_ports.tpl similarity index 100% rename from library/common/templates/lib/controller/_ports.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_ports.tpl diff --git a/library/common/templates/lib/controller/_probes.tpl b/scale-catalog-template/library/common/templates/lib/controller/_probes.tpl similarity index 100% rename from library/common/templates/lib/controller/_probes.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_probes.tpl diff --git a/library/common/templates/lib/controller/_volumeMounts.tpl b/scale-catalog-template/library/common/templates/lib/controller/_volumeMounts.tpl similarity index 100% rename from library/common/templates/lib/controller/_volumeMounts.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_volumeMounts.tpl diff --git a/library/common/templates/lib/controller/_volumes.tpl b/scale-catalog-template/library/common/templates/lib/controller/_volumes.tpl similarity index 100% rename from library/common/templates/lib/controller/_volumes.tpl rename to scale-catalog-template/library/common/templates/lib/controller/_volumes.tpl diff --git a/library/common/templates/lib/resources/_certHelpers.tpl b/scale-catalog-template/library/common/templates/lib/resources/_certHelpers.tpl similarity index 100% rename from library/common/templates/lib/resources/_certHelpers.tpl rename to scale-catalog-template/library/common/templates/lib/resources/_certHelpers.tpl diff --git a/library/common/templates/lib/resources/_certSecret.yaml b/scale-catalog-template/library/common/templates/lib/resources/_certSecret.yaml similarity index 100% rename from library/common/templates/lib/resources/_certSecret.yaml rename to scale-catalog-template/library/common/templates/lib/resources/_certSecret.yaml diff --git a/library/common/templates/lib/resources/_certs.tpl b/scale-catalog-template/library/common/templates/lib/resources/_certs.tpl similarity index 100% rename from library/common/templates/lib/resources/_certs.tpl rename to scale-catalog-template/library/common/templates/lib/resources/_certs.tpl diff --git a/library/common/templates/lib/resources/_portal_config.tpl b/scale-catalog-template/library/common/templates/lib/resources/_portal_config.tpl similarity index 100% rename from library/common/templates/lib/resources/_portal_config.tpl rename to scale-catalog-template/library/common/templates/lib/resources/_portal_config.tpl diff --git a/library/common/templates/lib/storage/_mountPermissions.tpl b/scale-catalog-template/library/common/templates/lib/storage/_mountPermissions.tpl similarity index 100% rename from library/common/templates/lib/storage/_mountPermissions.tpl rename to scale-catalog-template/library/common/templates/lib/storage/_mountPermissions.tpl diff --git a/library/common/values.yaml b/scale-catalog-template/library/common/values.yaml similarity index 100% rename from library/common/values.yaml rename to scale-catalog-template/library/common/values.yaml diff --git a/stable/jackett/3.1.5/CONFIG.md b/scale-catalog-template/stable/jackett/3.1.5/CONFIG.md similarity index 100% rename from stable/jackett/3.1.5/CONFIG.md rename to scale-catalog-template/stable/jackett/3.1.5/CONFIG.md diff --git a/stable/jackett/3.1.5/Chart.lock b/scale-catalog-template/stable/jackett/3.1.5/Chart.lock similarity index 100% rename from stable/jackett/3.1.5/Chart.lock rename to scale-catalog-template/stable/jackett/3.1.5/Chart.lock diff --git a/stable/jackett/3.1.5/Chart.yaml b/scale-catalog-template/stable/jackett/3.1.5/Chart.yaml similarity index 100% rename from stable/jackett/3.1.5/Chart.yaml rename to scale-catalog-template/stable/jackett/3.1.5/Chart.yaml diff --git a/stable/jackett/3.1.5/README.md b/scale-catalog-template/stable/jackett/3.1.5/README.md similarity index 100% rename from stable/jackett/3.1.5/README.md rename to scale-catalog-template/stable/jackett/3.1.5/README.md diff --git a/stable/jackett/3.1.5/app-readme.md b/scale-catalog-template/stable/jackett/3.1.5/app-readme.md similarity index 100% rename from stable/jackett/3.1.5/app-readme.md rename to scale-catalog-template/stable/jackett/3.1.5/app-readme.md diff --git a/stable/jackett/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/stable/jackett/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from stable/jackett/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/stable/jackett/3.1.5/charts/common-3.5.5.tgz diff --git a/stable/jackett/3.1.5/ix_values.yaml b/scale-catalog-template/stable/jackett/3.1.5/ix_values.yaml similarity index 100% rename from stable/jackett/3.1.5/ix_values.yaml rename to scale-catalog-template/stable/jackett/3.1.5/ix_values.yaml diff --git a/stable/jackett/3.1.5/questions.yaml b/scale-catalog-template/stable/jackett/3.1.5/questions.yaml similarity index 100% rename from stable/jackett/3.1.5/questions.yaml rename to scale-catalog-template/stable/jackett/3.1.5/questions.yaml diff --git a/stable/jackett/3.1.5/templates/common.yaml b/scale-catalog-template/stable/jackett/3.1.5/templates/common.yaml similarity index 100% rename from stable/jackett/3.1.5/templates/common.yaml rename to scale-catalog-template/stable/jackett/3.1.5/templates/common.yaml diff --git a/stable/jackett/3.1.5/test_values.yaml b/scale-catalog-template/stable/jackett/3.1.5/test_values.yaml similarity index 100% rename from stable/jackett/3.1.5/test_values.yaml rename to scale-catalog-template/stable/jackett/3.1.5/test_values.yaml diff --git a/stable/jackett/3.1.5/values.yaml b/scale-catalog-template/stable/jackett/3.1.5/values.yaml similarity index 100% rename from stable/jackett/3.1.5/values.yaml rename to scale-catalog-template/stable/jackett/3.1.5/values.yaml diff --git a/stable/jackett/item.yaml b/scale-catalog-template/stable/jackett/item.yaml similarity index 100% rename from stable/jackett/item.yaml rename to scale-catalog-template/stable/jackett/item.yaml diff --git a/test/appdaemon/0.1.3/CONFIG.md b/scale-catalog-template/test/appdaemon/0.1.3/CONFIG.md similarity index 100% rename from test/appdaemon/0.1.3/CONFIG.md rename to scale-catalog-template/test/appdaemon/0.1.3/CONFIG.md diff --git a/test/appdaemon/0.1.3/Chart.lock b/scale-catalog-template/test/appdaemon/0.1.3/Chart.lock similarity index 100% rename from test/appdaemon/0.1.3/Chart.lock rename to scale-catalog-template/test/appdaemon/0.1.3/Chart.lock diff --git a/test/appdaemon/0.1.3/Chart.yaml b/scale-catalog-template/test/appdaemon/0.1.3/Chart.yaml similarity index 100% rename from test/appdaemon/0.1.3/Chart.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/Chart.yaml diff --git a/test/appdaemon/0.1.3/README.md b/scale-catalog-template/test/appdaemon/0.1.3/README.md similarity index 100% rename from test/appdaemon/0.1.3/README.md rename to scale-catalog-template/test/appdaemon/0.1.3/README.md diff --git a/test/appdaemon/0.1.3/app-readme.md b/scale-catalog-template/test/appdaemon/0.1.3/app-readme.md similarity index 100% rename from test/appdaemon/0.1.3/app-readme.md rename to scale-catalog-template/test/appdaemon/0.1.3/app-readme.md diff --git a/test/appdaemon/0.1.3/charts/common-3.5.5.tgz b/scale-catalog-template/test/appdaemon/0.1.3/charts/common-3.5.5.tgz similarity index 100% rename from test/appdaemon/0.1.3/charts/common-3.5.5.tgz rename to scale-catalog-template/test/appdaemon/0.1.3/charts/common-3.5.5.tgz diff --git a/test/appdaemon/0.1.3/ix_values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/ix_values.yaml similarity index 100% rename from test/appdaemon/0.1.3/ix_values.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/ix_values.yaml diff --git a/test/appdaemon/0.1.3/questions.yaml b/scale-catalog-template/test/appdaemon/0.1.3/questions.yaml similarity index 100% rename from test/appdaemon/0.1.3/questions.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/questions.yaml diff --git a/test/appdaemon/0.1.3/templates/common.yaml b/scale-catalog-template/test/appdaemon/0.1.3/templates/common.yaml similarity index 100% rename from test/appdaemon/0.1.3/templates/common.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/templates/common.yaml diff --git a/test/appdaemon/0.1.3/test_values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/test_values.yaml similarity index 100% rename from test/appdaemon/0.1.3/test_values.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/test_values.yaml diff --git a/test/appdaemon/0.1.3/values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/values.yaml similarity index 100% rename from test/appdaemon/0.1.3/values.yaml rename to scale-catalog-template/test/appdaemon/0.1.3/values.yaml diff --git a/test/appdaemon/item.yaml b/scale-catalog-template/test/appdaemon/item.yaml similarity index 100% rename from test/appdaemon/item.yaml rename to scale-catalog-template/test/appdaemon/item.yaml diff --git a/test/bazarr/3.1.5/CONFIG.md b/scale-catalog-template/test/bazarr/3.1.5/CONFIG.md similarity index 100% rename from test/bazarr/3.1.5/CONFIG.md rename to scale-catalog-template/test/bazarr/3.1.5/CONFIG.md diff --git a/test/bazarr/3.1.5/Chart.lock b/scale-catalog-template/test/bazarr/3.1.5/Chart.lock similarity index 100% rename from test/bazarr/3.1.5/Chart.lock rename to scale-catalog-template/test/bazarr/3.1.5/Chart.lock diff --git a/test/bazarr/3.1.5/Chart.yaml b/scale-catalog-template/test/bazarr/3.1.5/Chart.yaml similarity index 100% rename from test/bazarr/3.1.5/Chart.yaml rename to scale-catalog-template/test/bazarr/3.1.5/Chart.yaml diff --git a/test/bazarr/3.1.5/README.md b/scale-catalog-template/test/bazarr/3.1.5/README.md similarity index 100% rename from test/bazarr/3.1.5/README.md rename to scale-catalog-template/test/bazarr/3.1.5/README.md diff --git a/test/bazarr/3.1.5/app-readme.md b/scale-catalog-template/test/bazarr/3.1.5/app-readme.md similarity index 100% rename from test/bazarr/3.1.5/app-readme.md rename to scale-catalog-template/test/bazarr/3.1.5/app-readme.md diff --git a/test/bazarr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/bazarr/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/bazarr/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/bazarr/3.1.5/charts/common-3.5.5.tgz diff --git a/test/bazarr/3.1.5/ix_values.yaml b/scale-catalog-template/test/bazarr/3.1.5/ix_values.yaml similarity index 100% rename from test/bazarr/3.1.5/ix_values.yaml rename to scale-catalog-template/test/bazarr/3.1.5/ix_values.yaml diff --git a/test/bazarr/3.1.5/questions.yaml b/scale-catalog-template/test/bazarr/3.1.5/questions.yaml similarity index 100% rename from test/bazarr/3.1.5/questions.yaml rename to scale-catalog-template/test/bazarr/3.1.5/questions.yaml diff --git a/test/bazarr/3.1.5/templates/common.yaml b/scale-catalog-template/test/bazarr/3.1.5/templates/common.yaml similarity index 100% rename from test/bazarr/3.1.5/templates/common.yaml rename to scale-catalog-template/test/bazarr/3.1.5/templates/common.yaml diff --git a/test/bazarr/3.1.5/test_values.yaml b/scale-catalog-template/test/bazarr/3.1.5/test_values.yaml similarity index 100% rename from test/bazarr/3.1.5/test_values.yaml rename to scale-catalog-template/test/bazarr/3.1.5/test_values.yaml diff --git a/test/bazarr/3.1.5/values.yaml b/scale-catalog-template/test/bazarr/3.1.5/values.yaml similarity index 100% rename from test/bazarr/3.1.5/values.yaml rename to scale-catalog-template/test/bazarr/3.1.5/values.yaml diff --git a/test/bazarr/item.yaml b/scale-catalog-template/test/bazarr/item.yaml similarity index 100% rename from test/bazarr/item.yaml rename to scale-catalog-template/test/bazarr/item.yaml diff --git a/test/calibre-web/3.1.5/CONFIG.md b/scale-catalog-template/test/calibre-web/3.1.5/CONFIG.md similarity index 100% rename from test/calibre-web/3.1.5/CONFIG.md rename to scale-catalog-template/test/calibre-web/3.1.5/CONFIG.md diff --git a/test/calibre-web/3.1.5/Chart.lock b/scale-catalog-template/test/calibre-web/3.1.5/Chart.lock similarity index 100% rename from test/calibre-web/3.1.5/Chart.lock rename to scale-catalog-template/test/calibre-web/3.1.5/Chart.lock diff --git a/test/calibre-web/3.1.5/Chart.yaml b/scale-catalog-template/test/calibre-web/3.1.5/Chart.yaml similarity index 100% rename from test/calibre-web/3.1.5/Chart.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/Chart.yaml diff --git a/test/calibre-web/3.1.5/README.md b/scale-catalog-template/test/calibre-web/3.1.5/README.md similarity index 100% rename from test/calibre-web/3.1.5/README.md rename to scale-catalog-template/test/calibre-web/3.1.5/README.md diff --git a/test/calibre-web/3.1.5/app-readme.md b/scale-catalog-template/test/calibre-web/3.1.5/app-readme.md similarity index 100% rename from test/calibre-web/3.1.5/app-readme.md rename to scale-catalog-template/test/calibre-web/3.1.5/app-readme.md diff --git a/test/calibre-web/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/calibre-web/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/calibre-web/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/calibre-web/3.1.5/charts/common-3.5.5.tgz diff --git a/test/calibre-web/3.1.5/ix_values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/ix_values.yaml similarity index 100% rename from test/calibre-web/3.1.5/ix_values.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/ix_values.yaml diff --git a/test/calibre-web/3.1.5/questions.yaml b/scale-catalog-template/test/calibre-web/3.1.5/questions.yaml similarity index 100% rename from test/calibre-web/3.1.5/questions.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/questions.yaml diff --git a/test/calibre-web/3.1.5/templates/common.yaml b/scale-catalog-template/test/calibre-web/3.1.5/templates/common.yaml similarity index 100% rename from test/calibre-web/3.1.5/templates/common.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/templates/common.yaml diff --git a/test/calibre-web/3.1.5/test_values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/test_values.yaml similarity index 100% rename from test/calibre-web/3.1.5/test_values.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/test_values.yaml diff --git a/test/calibre-web/3.1.5/values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/values.yaml similarity index 100% rename from test/calibre-web/3.1.5/values.yaml rename to scale-catalog-template/test/calibre-web/3.1.5/values.yaml diff --git a/test/calibre-web/item.yaml b/scale-catalog-template/test/calibre-web/item.yaml similarity index 100% rename from test/calibre-web/item.yaml rename to scale-catalog-template/test/calibre-web/item.yaml diff --git a/test/deluge/3.1.5/CONFIG.md b/scale-catalog-template/test/deluge/3.1.5/CONFIG.md similarity index 100% rename from test/deluge/3.1.5/CONFIG.md rename to scale-catalog-template/test/deluge/3.1.5/CONFIG.md diff --git a/test/deluge/3.1.5/Chart.lock b/scale-catalog-template/test/deluge/3.1.5/Chart.lock similarity index 100% rename from test/deluge/3.1.5/Chart.lock rename to scale-catalog-template/test/deluge/3.1.5/Chart.lock diff --git a/test/deluge/3.1.5/Chart.yaml b/scale-catalog-template/test/deluge/3.1.5/Chart.yaml similarity index 100% rename from test/deluge/3.1.5/Chart.yaml rename to scale-catalog-template/test/deluge/3.1.5/Chart.yaml diff --git a/test/deluge/3.1.5/README.md b/scale-catalog-template/test/deluge/3.1.5/README.md similarity index 100% rename from test/deluge/3.1.5/README.md rename to scale-catalog-template/test/deluge/3.1.5/README.md diff --git a/test/deluge/3.1.5/app-readme.md b/scale-catalog-template/test/deluge/3.1.5/app-readme.md similarity index 100% rename from test/deluge/3.1.5/app-readme.md rename to scale-catalog-template/test/deluge/3.1.5/app-readme.md diff --git a/test/deluge/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/deluge/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/deluge/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/deluge/3.1.5/charts/common-3.5.5.tgz diff --git a/test/deluge/3.1.5/ix_values.yaml b/scale-catalog-template/test/deluge/3.1.5/ix_values.yaml similarity index 100% rename from test/deluge/3.1.5/ix_values.yaml rename to scale-catalog-template/test/deluge/3.1.5/ix_values.yaml diff --git a/test/deluge/3.1.5/questions.yaml b/scale-catalog-template/test/deluge/3.1.5/questions.yaml similarity index 100% rename from test/deluge/3.1.5/questions.yaml rename to scale-catalog-template/test/deluge/3.1.5/questions.yaml diff --git a/test/deluge/3.1.5/templates/common.yaml b/scale-catalog-template/test/deluge/3.1.5/templates/common.yaml similarity index 100% rename from test/deluge/3.1.5/templates/common.yaml rename to scale-catalog-template/test/deluge/3.1.5/templates/common.yaml diff --git a/test/deluge/3.1.5/test_values.yaml b/scale-catalog-template/test/deluge/3.1.5/test_values.yaml similarity index 100% rename from test/deluge/3.1.5/test_values.yaml rename to scale-catalog-template/test/deluge/3.1.5/test_values.yaml diff --git a/test/deluge/3.1.5/values.yaml b/scale-catalog-template/test/deluge/3.1.5/values.yaml similarity index 100% rename from test/deluge/3.1.5/values.yaml rename to scale-catalog-template/test/deluge/3.1.5/values.yaml diff --git a/test/deluge/item.yaml b/scale-catalog-template/test/deluge/item.yaml similarity index 100% rename from test/deluge/item.yaml rename to scale-catalog-template/test/deluge/item.yaml diff --git a/test/fireflyiii/1.0.1/CONFIG.md b/scale-catalog-template/test/fireflyiii/1.0.1/CONFIG.md similarity index 100% rename from test/fireflyiii/1.0.1/CONFIG.md rename to scale-catalog-template/test/fireflyiii/1.0.1/CONFIG.md diff --git a/test/fireflyiii/1.0.1/Chart.lock b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.lock similarity index 100% rename from test/fireflyiii/1.0.1/Chart.lock rename to scale-catalog-template/test/fireflyiii/1.0.1/Chart.lock diff --git a/test/fireflyiii/1.0.1/Chart.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.yaml similarity index 100% rename from test/fireflyiii/1.0.1/Chart.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/Chart.yaml diff --git a/test/fireflyiii/1.0.1/README.md b/scale-catalog-template/test/fireflyiii/1.0.1/README.md similarity index 100% rename from test/fireflyiii/1.0.1/README.md rename to scale-catalog-template/test/fireflyiii/1.0.1/README.md diff --git a/test/fireflyiii/1.0.1/app-readme.md b/scale-catalog-template/test/fireflyiii/1.0.1/app-readme.md similarity index 100% rename from test/fireflyiii/1.0.1/app-readme.md rename to scale-catalog-template/test/fireflyiii/1.0.1/app-readme.md diff --git a/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz b/scale-catalog-template/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz similarity index 100% rename from test/fireflyiii/1.0.1/charts/common-3.5.5.tgz rename to scale-catalog-template/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz diff --git a/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz b/scale-catalog-template/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz similarity index 100% rename from test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz rename to scale-catalog-template/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz diff --git a/test/fireflyiii/1.0.1/ix_values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/ix_values.yaml similarity index 100% rename from test/fireflyiii/1.0.1/ix_values.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/ix_values.yaml diff --git a/test/fireflyiii/1.0.1/questions.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/questions.yaml similarity index 100% rename from test/fireflyiii/1.0.1/questions.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/questions.yaml diff --git a/test/fireflyiii/1.0.1/templates/common.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/templates/common.yaml similarity index 100% rename from test/fireflyiii/1.0.1/templates/common.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/templates/common.yaml diff --git a/test/fireflyiii/1.0.1/templates/secrets.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/templates/secrets.yaml similarity index 100% rename from test/fireflyiii/1.0.1/templates/secrets.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/templates/secrets.yaml diff --git a/test/fireflyiii/1.0.1/test_values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/test_values.yaml similarity index 100% rename from test/fireflyiii/1.0.1/test_values.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/test_values.yaml diff --git a/test/fireflyiii/1.0.1/values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/values.yaml similarity index 100% rename from test/fireflyiii/1.0.1/values.yaml rename to scale-catalog-template/test/fireflyiii/1.0.1/values.yaml diff --git a/test/fireflyiii/item.yaml b/scale-catalog-template/test/fireflyiii/item.yaml similarity index 100% rename from test/fireflyiii/item.yaml rename to scale-catalog-template/test/fireflyiii/item.yaml diff --git a/test/freshrss/3.1.5/CONFIG.md b/scale-catalog-template/test/freshrss/3.1.5/CONFIG.md similarity index 100% rename from test/freshrss/3.1.5/CONFIG.md rename to scale-catalog-template/test/freshrss/3.1.5/CONFIG.md diff --git a/test/freshrss/3.1.5/Chart.lock b/scale-catalog-template/test/freshrss/3.1.5/Chart.lock similarity index 100% rename from test/freshrss/3.1.5/Chart.lock rename to scale-catalog-template/test/freshrss/3.1.5/Chart.lock diff --git a/test/freshrss/3.1.5/Chart.yaml b/scale-catalog-template/test/freshrss/3.1.5/Chart.yaml similarity index 100% rename from test/freshrss/3.1.5/Chart.yaml rename to scale-catalog-template/test/freshrss/3.1.5/Chart.yaml diff --git a/test/freshrss/3.1.5/README.md b/scale-catalog-template/test/freshrss/3.1.5/README.md similarity index 100% rename from test/freshrss/3.1.5/README.md rename to scale-catalog-template/test/freshrss/3.1.5/README.md diff --git a/test/freshrss/3.1.5/app-readme.md b/scale-catalog-template/test/freshrss/3.1.5/app-readme.md similarity index 100% rename from test/freshrss/3.1.5/app-readme.md rename to scale-catalog-template/test/freshrss/3.1.5/app-readme.md diff --git a/test/freshrss/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/freshrss/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/freshrss/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/freshrss/3.1.5/charts/common-3.5.5.tgz diff --git a/test/freshrss/3.1.5/ix_values.yaml b/scale-catalog-template/test/freshrss/3.1.5/ix_values.yaml similarity index 100% rename from test/freshrss/3.1.5/ix_values.yaml rename to scale-catalog-template/test/freshrss/3.1.5/ix_values.yaml diff --git a/test/freshrss/3.1.5/questions.yaml b/scale-catalog-template/test/freshrss/3.1.5/questions.yaml similarity index 100% rename from test/freshrss/3.1.5/questions.yaml rename to scale-catalog-template/test/freshrss/3.1.5/questions.yaml diff --git a/test/freshrss/3.1.5/templates/common.yaml b/scale-catalog-template/test/freshrss/3.1.5/templates/common.yaml similarity index 100% rename from test/freshrss/3.1.5/templates/common.yaml rename to scale-catalog-template/test/freshrss/3.1.5/templates/common.yaml diff --git a/test/freshrss/3.1.5/test_values.yaml b/scale-catalog-template/test/freshrss/3.1.5/test_values.yaml similarity index 100% rename from test/freshrss/3.1.5/test_values.yaml rename to scale-catalog-template/test/freshrss/3.1.5/test_values.yaml diff --git a/test/freshrss/3.1.5/values.yaml b/scale-catalog-template/test/freshrss/3.1.5/values.yaml similarity index 100% rename from test/freshrss/3.1.5/values.yaml rename to scale-catalog-template/test/freshrss/3.1.5/values.yaml diff --git a/test/freshrss/item.yaml b/scale-catalog-template/test/freshrss/item.yaml similarity index 100% rename from test/freshrss/item.yaml rename to scale-catalog-template/test/freshrss/item.yaml diff --git a/test/gaps/3.1.5/CONFIG.md b/scale-catalog-template/test/gaps/3.1.5/CONFIG.md similarity index 100% rename from test/gaps/3.1.5/CONFIG.md rename to scale-catalog-template/test/gaps/3.1.5/CONFIG.md diff --git a/test/gaps/3.1.5/Chart.lock b/scale-catalog-template/test/gaps/3.1.5/Chart.lock similarity index 100% rename from test/gaps/3.1.5/Chart.lock rename to scale-catalog-template/test/gaps/3.1.5/Chart.lock diff --git a/test/gaps/3.1.5/Chart.yaml b/scale-catalog-template/test/gaps/3.1.5/Chart.yaml similarity index 100% rename from test/gaps/3.1.5/Chart.yaml rename to scale-catalog-template/test/gaps/3.1.5/Chart.yaml diff --git a/test/gaps/3.1.5/README.md b/scale-catalog-template/test/gaps/3.1.5/README.md similarity index 100% rename from test/gaps/3.1.5/README.md rename to scale-catalog-template/test/gaps/3.1.5/README.md diff --git a/test/gaps/3.1.5/app-readme.md b/scale-catalog-template/test/gaps/3.1.5/app-readme.md similarity index 100% rename from test/gaps/3.1.5/app-readme.md rename to scale-catalog-template/test/gaps/3.1.5/app-readme.md diff --git a/test/gaps/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/gaps/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/gaps/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/gaps/3.1.5/charts/common-3.5.5.tgz diff --git a/test/gaps/3.1.5/ix_values.yaml b/scale-catalog-template/test/gaps/3.1.5/ix_values.yaml similarity index 100% rename from test/gaps/3.1.5/ix_values.yaml rename to scale-catalog-template/test/gaps/3.1.5/ix_values.yaml diff --git a/test/gaps/3.1.5/questions.yaml b/scale-catalog-template/test/gaps/3.1.5/questions.yaml similarity index 100% rename from test/gaps/3.1.5/questions.yaml rename to scale-catalog-template/test/gaps/3.1.5/questions.yaml diff --git a/test/gaps/3.1.5/templates/common.yaml b/scale-catalog-template/test/gaps/3.1.5/templates/common.yaml similarity index 100% rename from test/gaps/3.1.5/templates/common.yaml rename to scale-catalog-template/test/gaps/3.1.5/templates/common.yaml diff --git a/test/gaps/3.1.5/test_values.yaml b/scale-catalog-template/test/gaps/3.1.5/test_values.yaml similarity index 100% rename from test/gaps/3.1.5/test_values.yaml rename to scale-catalog-template/test/gaps/3.1.5/test_values.yaml diff --git a/test/gaps/3.1.5/values.yaml b/scale-catalog-template/test/gaps/3.1.5/values.yaml similarity index 100% rename from test/gaps/3.1.5/values.yaml rename to scale-catalog-template/test/gaps/3.1.5/values.yaml diff --git a/test/gaps/item.yaml b/scale-catalog-template/test/gaps/item.yaml similarity index 100% rename from test/gaps/item.yaml rename to scale-catalog-template/test/gaps/item.yaml diff --git a/test/grocy/3.1.5/CONFIG.md b/scale-catalog-template/test/grocy/3.1.5/CONFIG.md similarity index 100% rename from test/grocy/3.1.5/CONFIG.md rename to scale-catalog-template/test/grocy/3.1.5/CONFIG.md diff --git a/test/grocy/3.1.5/Chart.lock b/scale-catalog-template/test/grocy/3.1.5/Chart.lock similarity index 100% rename from test/grocy/3.1.5/Chart.lock rename to scale-catalog-template/test/grocy/3.1.5/Chart.lock diff --git a/test/grocy/3.1.5/Chart.yaml b/scale-catalog-template/test/grocy/3.1.5/Chart.yaml similarity index 100% rename from test/grocy/3.1.5/Chart.yaml rename to scale-catalog-template/test/grocy/3.1.5/Chart.yaml diff --git a/test/grocy/3.1.5/README.md b/scale-catalog-template/test/grocy/3.1.5/README.md similarity index 100% rename from test/grocy/3.1.5/README.md rename to scale-catalog-template/test/grocy/3.1.5/README.md diff --git a/test/grocy/3.1.5/app-readme.md b/scale-catalog-template/test/grocy/3.1.5/app-readme.md similarity index 100% rename from test/grocy/3.1.5/app-readme.md rename to scale-catalog-template/test/grocy/3.1.5/app-readme.md diff --git a/test/grocy/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/grocy/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/grocy/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/grocy/3.1.5/charts/common-3.5.5.tgz diff --git a/test/grocy/3.1.5/ix_values.yaml b/scale-catalog-template/test/grocy/3.1.5/ix_values.yaml similarity index 100% rename from test/grocy/3.1.5/ix_values.yaml rename to scale-catalog-template/test/grocy/3.1.5/ix_values.yaml diff --git a/test/grocy/3.1.5/questions.yaml b/scale-catalog-template/test/grocy/3.1.5/questions.yaml similarity index 100% rename from test/grocy/3.1.5/questions.yaml rename to scale-catalog-template/test/grocy/3.1.5/questions.yaml diff --git a/test/grocy/3.1.5/templates/common.yaml b/scale-catalog-template/test/grocy/3.1.5/templates/common.yaml similarity index 100% rename from test/grocy/3.1.5/templates/common.yaml rename to scale-catalog-template/test/grocy/3.1.5/templates/common.yaml diff --git a/test/grocy/3.1.5/test_values.yaml b/scale-catalog-template/test/grocy/3.1.5/test_values.yaml similarity index 100% rename from test/grocy/3.1.5/test_values.yaml rename to scale-catalog-template/test/grocy/3.1.5/test_values.yaml diff --git a/test/grocy/3.1.5/values.yaml b/scale-catalog-template/test/grocy/3.1.5/values.yaml similarity index 100% rename from test/grocy/3.1.5/values.yaml rename to scale-catalog-template/test/grocy/3.1.5/values.yaml diff --git a/test/grocy/item.yaml b/scale-catalog-template/test/grocy/item.yaml similarity index 100% rename from test/grocy/item.yaml rename to scale-catalog-template/test/grocy/item.yaml diff --git a/test/heimdall/3.1.5/CONFIG.md b/scale-catalog-template/test/heimdall/3.1.5/CONFIG.md similarity index 100% rename from test/heimdall/3.1.5/CONFIG.md rename to scale-catalog-template/test/heimdall/3.1.5/CONFIG.md diff --git a/test/heimdall/3.1.5/Chart.lock b/scale-catalog-template/test/heimdall/3.1.5/Chart.lock similarity index 100% rename from test/heimdall/3.1.5/Chart.lock rename to scale-catalog-template/test/heimdall/3.1.5/Chart.lock diff --git a/test/heimdall/3.1.5/Chart.yaml b/scale-catalog-template/test/heimdall/3.1.5/Chart.yaml similarity index 100% rename from test/heimdall/3.1.5/Chart.yaml rename to scale-catalog-template/test/heimdall/3.1.5/Chart.yaml diff --git a/test/heimdall/3.1.5/README.md b/scale-catalog-template/test/heimdall/3.1.5/README.md similarity index 100% rename from test/heimdall/3.1.5/README.md rename to scale-catalog-template/test/heimdall/3.1.5/README.md diff --git a/test/heimdall/3.1.5/app-readme.md b/scale-catalog-template/test/heimdall/3.1.5/app-readme.md similarity index 100% rename from test/heimdall/3.1.5/app-readme.md rename to scale-catalog-template/test/heimdall/3.1.5/app-readme.md diff --git a/test/heimdall/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/heimdall/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/heimdall/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/heimdall/3.1.5/charts/common-3.5.5.tgz diff --git a/test/heimdall/3.1.5/ix_values.yaml b/scale-catalog-template/test/heimdall/3.1.5/ix_values.yaml similarity index 100% rename from test/heimdall/3.1.5/ix_values.yaml rename to scale-catalog-template/test/heimdall/3.1.5/ix_values.yaml diff --git a/test/heimdall/3.1.5/questions.yaml b/scale-catalog-template/test/heimdall/3.1.5/questions.yaml similarity index 100% rename from test/heimdall/3.1.5/questions.yaml rename to scale-catalog-template/test/heimdall/3.1.5/questions.yaml diff --git a/test/heimdall/3.1.5/templates/common.yaml b/scale-catalog-template/test/heimdall/3.1.5/templates/common.yaml similarity index 100% rename from test/heimdall/3.1.5/templates/common.yaml rename to scale-catalog-template/test/heimdall/3.1.5/templates/common.yaml diff --git a/test/heimdall/3.1.5/test_values.yaml b/scale-catalog-template/test/heimdall/3.1.5/test_values.yaml similarity index 100% rename from test/heimdall/3.1.5/test_values.yaml rename to scale-catalog-template/test/heimdall/3.1.5/test_values.yaml diff --git a/test/heimdall/3.1.5/values.yaml b/scale-catalog-template/test/heimdall/3.1.5/values.yaml similarity index 100% rename from test/heimdall/3.1.5/values.yaml rename to scale-catalog-template/test/heimdall/3.1.5/values.yaml diff --git a/test/heimdall/item.yaml b/scale-catalog-template/test/heimdall/item.yaml similarity index 100% rename from test/heimdall/item.yaml rename to scale-catalog-template/test/heimdall/item.yaml diff --git a/test/lazylibrarian/3.1.5/CONFIG.md b/scale-catalog-template/test/lazylibrarian/3.1.5/CONFIG.md similarity index 100% rename from test/lazylibrarian/3.1.5/CONFIG.md rename to scale-catalog-template/test/lazylibrarian/3.1.5/CONFIG.md diff --git a/test/lazylibrarian/3.1.5/Chart.lock b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.lock similarity index 100% rename from test/lazylibrarian/3.1.5/Chart.lock rename to scale-catalog-template/test/lazylibrarian/3.1.5/Chart.lock diff --git a/test/lazylibrarian/3.1.5/Chart.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/Chart.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/Chart.yaml diff --git a/test/lazylibrarian/3.1.5/README.md b/scale-catalog-template/test/lazylibrarian/3.1.5/README.md similarity index 100% rename from test/lazylibrarian/3.1.5/README.md rename to scale-catalog-template/test/lazylibrarian/3.1.5/README.md diff --git a/test/lazylibrarian/3.1.5/app-readme.md b/scale-catalog-template/test/lazylibrarian/3.1.5/app-readme.md similarity index 100% rename from test/lazylibrarian/3.1.5/app-readme.md rename to scale-catalog-template/test/lazylibrarian/3.1.5/app-readme.md diff --git a/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz diff --git a/test/lazylibrarian/3.1.5/ix_values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/ix_values.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/ix_values.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/ix_values.yaml diff --git a/test/lazylibrarian/3.1.5/questions.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/questions.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/questions.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/questions.yaml diff --git a/test/lazylibrarian/3.1.5/templates/common.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/templates/common.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/templates/common.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/templates/common.yaml diff --git a/test/lazylibrarian/3.1.5/test_values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/test_values.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/test_values.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/test_values.yaml diff --git a/test/lazylibrarian/3.1.5/values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/values.yaml similarity index 100% rename from test/lazylibrarian/3.1.5/values.yaml rename to scale-catalog-template/test/lazylibrarian/3.1.5/values.yaml diff --git a/test/lazylibrarian/item.yaml b/scale-catalog-template/test/lazylibrarian/item.yaml similarity index 100% rename from test/lazylibrarian/item.yaml rename to scale-catalog-template/test/lazylibrarian/item.yaml diff --git a/test/lychee/3.1.5/CONFIG.md b/scale-catalog-template/test/lychee/3.1.5/CONFIG.md similarity index 100% rename from test/lychee/3.1.5/CONFIG.md rename to scale-catalog-template/test/lychee/3.1.5/CONFIG.md diff --git a/test/lychee/3.1.5/Chart.lock b/scale-catalog-template/test/lychee/3.1.5/Chart.lock similarity index 100% rename from test/lychee/3.1.5/Chart.lock rename to scale-catalog-template/test/lychee/3.1.5/Chart.lock diff --git a/test/lychee/3.1.5/Chart.yaml b/scale-catalog-template/test/lychee/3.1.5/Chart.yaml similarity index 100% rename from test/lychee/3.1.5/Chart.yaml rename to scale-catalog-template/test/lychee/3.1.5/Chart.yaml diff --git a/test/lychee/3.1.5/README.md b/scale-catalog-template/test/lychee/3.1.5/README.md similarity index 100% rename from test/lychee/3.1.5/README.md rename to scale-catalog-template/test/lychee/3.1.5/README.md diff --git a/test/lychee/3.1.5/app-readme.md b/scale-catalog-template/test/lychee/3.1.5/app-readme.md similarity index 100% rename from test/lychee/3.1.5/app-readme.md rename to scale-catalog-template/test/lychee/3.1.5/app-readme.md diff --git a/test/lychee/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/lychee/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/lychee/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/lychee/3.1.5/charts/common-3.5.5.tgz diff --git a/test/lychee/3.1.5/ix_values.yaml b/scale-catalog-template/test/lychee/3.1.5/ix_values.yaml similarity index 100% rename from test/lychee/3.1.5/ix_values.yaml rename to scale-catalog-template/test/lychee/3.1.5/ix_values.yaml diff --git a/test/lychee/3.1.5/questions.yaml b/scale-catalog-template/test/lychee/3.1.5/questions.yaml similarity index 100% rename from test/lychee/3.1.5/questions.yaml rename to scale-catalog-template/test/lychee/3.1.5/questions.yaml diff --git a/test/lychee/3.1.5/templates/common.yaml b/scale-catalog-template/test/lychee/3.1.5/templates/common.yaml similarity index 100% rename from test/lychee/3.1.5/templates/common.yaml rename to scale-catalog-template/test/lychee/3.1.5/templates/common.yaml diff --git a/test/lychee/3.1.5/test_values.yaml b/scale-catalog-template/test/lychee/3.1.5/test_values.yaml similarity index 100% rename from test/lychee/3.1.5/test_values.yaml rename to scale-catalog-template/test/lychee/3.1.5/test_values.yaml diff --git a/test/lychee/3.1.5/values.yaml b/scale-catalog-template/test/lychee/3.1.5/values.yaml similarity index 100% rename from test/lychee/3.1.5/values.yaml rename to scale-catalog-template/test/lychee/3.1.5/values.yaml diff --git a/test/lychee/item.yaml b/scale-catalog-template/test/lychee/item.yaml similarity index 100% rename from test/lychee/item.yaml rename to scale-catalog-template/test/lychee/item.yaml diff --git a/test/navidrome/3.1.5/CONFIG.md b/scale-catalog-template/test/navidrome/3.1.5/CONFIG.md similarity index 100% rename from test/navidrome/3.1.5/CONFIG.md rename to scale-catalog-template/test/navidrome/3.1.5/CONFIG.md diff --git a/test/navidrome/3.1.5/Chart.lock b/scale-catalog-template/test/navidrome/3.1.5/Chart.lock similarity index 100% rename from test/navidrome/3.1.5/Chart.lock rename to scale-catalog-template/test/navidrome/3.1.5/Chart.lock diff --git a/test/navidrome/3.1.5/Chart.yaml b/scale-catalog-template/test/navidrome/3.1.5/Chart.yaml similarity index 100% rename from test/navidrome/3.1.5/Chart.yaml rename to scale-catalog-template/test/navidrome/3.1.5/Chart.yaml diff --git a/test/navidrome/3.1.5/README.md b/scale-catalog-template/test/navidrome/3.1.5/README.md similarity index 100% rename from test/navidrome/3.1.5/README.md rename to scale-catalog-template/test/navidrome/3.1.5/README.md diff --git a/test/navidrome/3.1.5/app-readme.md b/scale-catalog-template/test/navidrome/3.1.5/app-readme.md similarity index 100% rename from test/navidrome/3.1.5/app-readme.md rename to scale-catalog-template/test/navidrome/3.1.5/app-readme.md diff --git a/test/navidrome/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/navidrome/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/navidrome/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/navidrome/3.1.5/charts/common-3.5.5.tgz diff --git a/test/navidrome/3.1.5/ix_values.yaml b/scale-catalog-template/test/navidrome/3.1.5/ix_values.yaml similarity index 100% rename from test/navidrome/3.1.5/ix_values.yaml rename to scale-catalog-template/test/navidrome/3.1.5/ix_values.yaml diff --git a/test/navidrome/3.1.5/questions.yaml b/scale-catalog-template/test/navidrome/3.1.5/questions.yaml similarity index 100% rename from test/navidrome/3.1.5/questions.yaml rename to scale-catalog-template/test/navidrome/3.1.5/questions.yaml diff --git a/test/navidrome/3.1.5/templates/common.yaml b/scale-catalog-template/test/navidrome/3.1.5/templates/common.yaml similarity index 100% rename from test/navidrome/3.1.5/templates/common.yaml rename to scale-catalog-template/test/navidrome/3.1.5/templates/common.yaml diff --git a/test/navidrome/3.1.5/test_values.yaml b/scale-catalog-template/test/navidrome/3.1.5/test_values.yaml similarity index 100% rename from test/navidrome/3.1.5/test_values.yaml rename to scale-catalog-template/test/navidrome/3.1.5/test_values.yaml diff --git a/test/navidrome/3.1.5/values.yaml b/scale-catalog-template/test/navidrome/3.1.5/values.yaml similarity index 100% rename from test/navidrome/3.1.5/values.yaml rename to scale-catalog-template/test/navidrome/3.1.5/values.yaml diff --git a/test/navidrome/item.yaml b/scale-catalog-template/test/navidrome/item.yaml similarity index 100% rename from test/navidrome/item.yaml rename to scale-catalog-template/test/navidrome/item.yaml diff --git a/test/node-red/3.1.5/CONFIG.md b/scale-catalog-template/test/node-red/3.1.5/CONFIG.md similarity index 100% rename from test/node-red/3.1.5/CONFIG.md rename to scale-catalog-template/test/node-red/3.1.5/CONFIG.md diff --git a/test/node-red/3.1.5/Chart.lock b/scale-catalog-template/test/node-red/3.1.5/Chart.lock similarity index 100% rename from test/node-red/3.1.5/Chart.lock rename to scale-catalog-template/test/node-red/3.1.5/Chart.lock diff --git a/test/node-red/3.1.5/Chart.yaml b/scale-catalog-template/test/node-red/3.1.5/Chart.yaml similarity index 100% rename from test/node-red/3.1.5/Chart.yaml rename to scale-catalog-template/test/node-red/3.1.5/Chart.yaml diff --git a/test/node-red/3.1.5/README.md b/scale-catalog-template/test/node-red/3.1.5/README.md similarity index 100% rename from test/node-red/3.1.5/README.md rename to scale-catalog-template/test/node-red/3.1.5/README.md diff --git a/test/node-red/3.1.5/app-readme.md b/scale-catalog-template/test/node-red/3.1.5/app-readme.md similarity index 100% rename from test/node-red/3.1.5/app-readme.md rename to scale-catalog-template/test/node-red/3.1.5/app-readme.md diff --git a/test/node-red/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/node-red/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/node-red/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/node-red/3.1.5/charts/common-3.5.5.tgz diff --git a/test/node-red/3.1.5/ix_values.yaml b/scale-catalog-template/test/node-red/3.1.5/ix_values.yaml similarity index 100% rename from test/node-red/3.1.5/ix_values.yaml rename to scale-catalog-template/test/node-red/3.1.5/ix_values.yaml diff --git a/test/node-red/3.1.5/questions.yaml b/scale-catalog-template/test/node-red/3.1.5/questions.yaml similarity index 100% rename from test/node-red/3.1.5/questions.yaml rename to scale-catalog-template/test/node-red/3.1.5/questions.yaml diff --git a/test/node-red/3.1.5/templates/common.yaml b/scale-catalog-template/test/node-red/3.1.5/templates/common.yaml similarity index 100% rename from test/node-red/3.1.5/templates/common.yaml rename to scale-catalog-template/test/node-red/3.1.5/templates/common.yaml diff --git a/test/node-red/3.1.5/test_values.yaml b/scale-catalog-template/test/node-red/3.1.5/test_values.yaml similarity index 100% rename from test/node-red/3.1.5/test_values.yaml rename to scale-catalog-template/test/node-red/3.1.5/test_values.yaml diff --git a/test/node-red/3.1.5/values.yaml b/scale-catalog-template/test/node-red/3.1.5/values.yaml similarity index 100% rename from test/node-red/3.1.5/values.yaml rename to scale-catalog-template/test/node-red/3.1.5/values.yaml diff --git a/test/node-red/item.yaml b/scale-catalog-template/test/node-red/item.yaml similarity index 100% rename from test/node-red/item.yaml rename to scale-catalog-template/test/node-red/item.yaml diff --git a/test/nzbget/3.1.5/CONFIG.md b/scale-catalog-template/test/nzbget/3.1.5/CONFIG.md similarity index 100% rename from test/nzbget/3.1.5/CONFIG.md rename to scale-catalog-template/test/nzbget/3.1.5/CONFIG.md diff --git a/test/nzbget/3.1.5/Chart.lock b/scale-catalog-template/test/nzbget/3.1.5/Chart.lock similarity index 100% rename from test/nzbget/3.1.5/Chart.lock rename to scale-catalog-template/test/nzbget/3.1.5/Chart.lock diff --git a/test/nzbget/3.1.5/Chart.yaml b/scale-catalog-template/test/nzbget/3.1.5/Chart.yaml similarity index 100% rename from test/nzbget/3.1.5/Chart.yaml rename to scale-catalog-template/test/nzbget/3.1.5/Chart.yaml diff --git a/test/nzbget/3.1.5/README.md b/scale-catalog-template/test/nzbget/3.1.5/README.md similarity index 100% rename from test/nzbget/3.1.5/README.md rename to scale-catalog-template/test/nzbget/3.1.5/README.md diff --git a/test/nzbget/3.1.5/app-readme.md b/scale-catalog-template/test/nzbget/3.1.5/app-readme.md similarity index 100% rename from test/nzbget/3.1.5/app-readme.md rename to scale-catalog-template/test/nzbget/3.1.5/app-readme.md diff --git a/test/nzbget/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/nzbget/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/nzbget/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/nzbget/3.1.5/charts/common-3.5.5.tgz diff --git a/test/nzbget/3.1.5/ix_values.yaml b/scale-catalog-template/test/nzbget/3.1.5/ix_values.yaml similarity index 100% rename from test/nzbget/3.1.5/ix_values.yaml rename to scale-catalog-template/test/nzbget/3.1.5/ix_values.yaml diff --git a/test/nzbget/3.1.5/questions.yaml b/scale-catalog-template/test/nzbget/3.1.5/questions.yaml similarity index 100% rename from test/nzbget/3.1.5/questions.yaml rename to scale-catalog-template/test/nzbget/3.1.5/questions.yaml diff --git a/test/nzbget/3.1.5/templates/common.yaml b/scale-catalog-template/test/nzbget/3.1.5/templates/common.yaml similarity index 100% rename from test/nzbget/3.1.5/templates/common.yaml rename to scale-catalog-template/test/nzbget/3.1.5/templates/common.yaml diff --git a/test/nzbget/3.1.5/test_values.yaml b/scale-catalog-template/test/nzbget/3.1.5/test_values.yaml similarity index 100% rename from test/nzbget/3.1.5/test_values.yaml rename to scale-catalog-template/test/nzbget/3.1.5/test_values.yaml diff --git a/test/nzbget/3.1.5/values.yaml b/scale-catalog-template/test/nzbget/3.1.5/values.yaml similarity index 100% rename from test/nzbget/3.1.5/values.yaml rename to scale-catalog-template/test/nzbget/3.1.5/values.yaml diff --git a/test/nzbget/item.yaml b/scale-catalog-template/test/nzbget/item.yaml similarity index 100% rename from test/nzbget/item.yaml rename to scale-catalog-template/test/nzbget/item.yaml diff --git a/test/nzbhydra/3.1.5/CONFIG.md b/scale-catalog-template/test/nzbhydra/3.1.5/CONFIG.md similarity index 100% rename from test/nzbhydra/3.1.5/CONFIG.md rename to scale-catalog-template/test/nzbhydra/3.1.5/CONFIG.md diff --git a/test/nzbhydra/3.1.5/Chart.lock b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.lock similarity index 100% rename from test/nzbhydra/3.1.5/Chart.lock rename to scale-catalog-template/test/nzbhydra/3.1.5/Chart.lock diff --git a/test/nzbhydra/3.1.5/Chart.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.yaml similarity index 100% rename from test/nzbhydra/3.1.5/Chart.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/Chart.yaml diff --git a/test/nzbhydra/3.1.5/README.md b/scale-catalog-template/test/nzbhydra/3.1.5/README.md similarity index 100% rename from test/nzbhydra/3.1.5/README.md rename to scale-catalog-template/test/nzbhydra/3.1.5/README.md diff --git a/test/nzbhydra/3.1.5/app-readme.md b/scale-catalog-template/test/nzbhydra/3.1.5/app-readme.md similarity index 100% rename from test/nzbhydra/3.1.5/app-readme.md rename to scale-catalog-template/test/nzbhydra/3.1.5/app-readme.md diff --git a/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/nzbhydra/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz diff --git a/test/nzbhydra/3.1.5/ix_values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/ix_values.yaml similarity index 100% rename from test/nzbhydra/3.1.5/ix_values.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/ix_values.yaml diff --git a/test/nzbhydra/3.1.5/questions.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/questions.yaml similarity index 100% rename from test/nzbhydra/3.1.5/questions.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/questions.yaml diff --git a/test/nzbhydra/3.1.5/templates/common.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/templates/common.yaml similarity index 100% rename from test/nzbhydra/3.1.5/templates/common.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/templates/common.yaml diff --git a/test/nzbhydra/3.1.5/test_values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/test_values.yaml similarity index 100% rename from test/nzbhydra/3.1.5/test_values.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/test_values.yaml diff --git a/test/nzbhydra/3.1.5/values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/values.yaml similarity index 100% rename from test/nzbhydra/3.1.5/values.yaml rename to scale-catalog-template/test/nzbhydra/3.1.5/values.yaml diff --git a/test/nzbhydra/item.yaml b/scale-catalog-template/test/nzbhydra/item.yaml similarity index 100% rename from test/nzbhydra/item.yaml rename to scale-catalog-template/test/nzbhydra/item.yaml diff --git a/test/organizr/3.1.5/CONFIG.md b/scale-catalog-template/test/organizr/3.1.5/CONFIG.md similarity index 100% rename from test/organizr/3.1.5/CONFIG.md rename to scale-catalog-template/test/organizr/3.1.5/CONFIG.md diff --git a/test/organizr/3.1.5/Chart.lock b/scale-catalog-template/test/organizr/3.1.5/Chart.lock similarity index 100% rename from test/organizr/3.1.5/Chart.lock rename to scale-catalog-template/test/organizr/3.1.5/Chart.lock diff --git a/test/organizr/3.1.5/Chart.yaml b/scale-catalog-template/test/organizr/3.1.5/Chart.yaml similarity index 100% rename from test/organizr/3.1.5/Chart.yaml rename to scale-catalog-template/test/organizr/3.1.5/Chart.yaml diff --git a/test/organizr/3.1.5/README.md b/scale-catalog-template/test/organizr/3.1.5/README.md similarity index 100% rename from test/organizr/3.1.5/README.md rename to scale-catalog-template/test/organizr/3.1.5/README.md diff --git a/test/organizr/3.1.5/app-readme.md b/scale-catalog-template/test/organizr/3.1.5/app-readme.md similarity index 100% rename from test/organizr/3.1.5/app-readme.md rename to scale-catalog-template/test/organizr/3.1.5/app-readme.md diff --git a/test/organizr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/organizr/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/organizr/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/organizr/3.1.5/charts/common-3.5.5.tgz diff --git a/test/organizr/3.1.5/ix_values.yaml b/scale-catalog-template/test/organizr/3.1.5/ix_values.yaml similarity index 100% rename from test/organizr/3.1.5/ix_values.yaml rename to scale-catalog-template/test/organizr/3.1.5/ix_values.yaml diff --git a/test/organizr/3.1.5/questions.yaml b/scale-catalog-template/test/organizr/3.1.5/questions.yaml similarity index 100% rename from test/organizr/3.1.5/questions.yaml rename to scale-catalog-template/test/organizr/3.1.5/questions.yaml diff --git a/test/organizr/3.1.5/templates/common.yaml b/scale-catalog-template/test/organizr/3.1.5/templates/common.yaml similarity index 100% rename from test/organizr/3.1.5/templates/common.yaml rename to scale-catalog-template/test/organizr/3.1.5/templates/common.yaml diff --git a/test/organizr/3.1.5/test_values.yaml b/scale-catalog-template/test/organizr/3.1.5/test_values.yaml similarity index 100% rename from test/organizr/3.1.5/test_values.yaml rename to scale-catalog-template/test/organizr/3.1.5/test_values.yaml diff --git a/test/organizr/3.1.5/values.yaml b/scale-catalog-template/test/organizr/3.1.5/values.yaml similarity index 100% rename from test/organizr/3.1.5/values.yaml rename to scale-catalog-template/test/organizr/3.1.5/values.yaml diff --git a/test/organizr/item.yaml b/scale-catalog-template/test/organizr/item.yaml similarity index 100% rename from test/organizr/item.yaml rename to scale-catalog-template/test/organizr/item.yaml diff --git a/test/podgrab/1.0.3/CONFIG.md b/scale-catalog-template/test/podgrab/1.0.3/CONFIG.md similarity index 100% rename from test/podgrab/1.0.3/CONFIG.md rename to scale-catalog-template/test/podgrab/1.0.3/CONFIG.md diff --git a/test/podgrab/1.0.3/Chart.lock b/scale-catalog-template/test/podgrab/1.0.3/Chart.lock similarity index 100% rename from test/podgrab/1.0.3/Chart.lock rename to scale-catalog-template/test/podgrab/1.0.3/Chart.lock diff --git a/test/podgrab/1.0.3/Chart.yaml b/scale-catalog-template/test/podgrab/1.0.3/Chart.yaml similarity index 100% rename from test/podgrab/1.0.3/Chart.yaml rename to scale-catalog-template/test/podgrab/1.0.3/Chart.yaml diff --git a/test/podgrab/1.0.3/README.md b/scale-catalog-template/test/podgrab/1.0.3/README.md similarity index 100% rename from test/podgrab/1.0.3/README.md rename to scale-catalog-template/test/podgrab/1.0.3/README.md diff --git a/test/podgrab/1.0.3/app-readme.md b/scale-catalog-template/test/podgrab/1.0.3/app-readme.md similarity index 100% rename from test/podgrab/1.0.3/app-readme.md rename to scale-catalog-template/test/podgrab/1.0.3/app-readme.md diff --git a/test/podgrab/1.0.3/charts/common-3.5.5.tgz b/scale-catalog-template/test/podgrab/1.0.3/charts/common-3.5.5.tgz similarity index 100% rename from test/podgrab/1.0.3/charts/common-3.5.5.tgz rename to scale-catalog-template/test/podgrab/1.0.3/charts/common-3.5.5.tgz diff --git a/test/podgrab/1.0.3/ix_values.yaml b/scale-catalog-template/test/podgrab/1.0.3/ix_values.yaml similarity index 100% rename from test/podgrab/1.0.3/ix_values.yaml rename to scale-catalog-template/test/podgrab/1.0.3/ix_values.yaml diff --git a/test/podgrab/1.0.3/questions.yaml b/scale-catalog-template/test/podgrab/1.0.3/questions.yaml similarity index 100% rename from test/podgrab/1.0.3/questions.yaml rename to scale-catalog-template/test/podgrab/1.0.3/questions.yaml diff --git a/test/podgrab/1.0.3/templates/common.yaml b/scale-catalog-template/test/podgrab/1.0.3/templates/common.yaml similarity index 100% rename from test/podgrab/1.0.3/templates/common.yaml rename to scale-catalog-template/test/podgrab/1.0.3/templates/common.yaml diff --git a/test/podgrab/1.0.3/test_values.yaml b/scale-catalog-template/test/podgrab/1.0.3/test_values.yaml similarity index 100% rename from test/podgrab/1.0.3/test_values.yaml rename to scale-catalog-template/test/podgrab/1.0.3/test_values.yaml diff --git a/test/podgrab/1.0.3/values.yaml b/scale-catalog-template/test/podgrab/1.0.3/values.yaml similarity index 100% rename from test/podgrab/1.0.3/values.yaml rename to scale-catalog-template/test/podgrab/1.0.3/values.yaml diff --git a/test/podgrab/item.yaml b/scale-catalog-template/test/podgrab/item.yaml similarity index 100% rename from test/podgrab/item.yaml rename to scale-catalog-template/test/podgrab/item.yaml diff --git a/test/qbittorrent/3.1.5/CONFIG.md b/scale-catalog-template/test/qbittorrent/3.1.5/CONFIG.md similarity index 100% rename from test/qbittorrent/3.1.5/CONFIG.md rename to scale-catalog-template/test/qbittorrent/3.1.5/CONFIG.md diff --git a/test/qbittorrent/3.1.5/Chart.lock b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.lock similarity index 100% rename from test/qbittorrent/3.1.5/Chart.lock rename to scale-catalog-template/test/qbittorrent/3.1.5/Chart.lock diff --git a/test/qbittorrent/3.1.5/Chart.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.yaml similarity index 100% rename from test/qbittorrent/3.1.5/Chart.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/Chart.yaml diff --git a/test/qbittorrent/3.1.5/README.md b/scale-catalog-template/test/qbittorrent/3.1.5/README.md similarity index 100% rename from test/qbittorrent/3.1.5/README.md rename to scale-catalog-template/test/qbittorrent/3.1.5/README.md diff --git a/test/qbittorrent/3.1.5/app-readme.md b/scale-catalog-template/test/qbittorrent/3.1.5/app-readme.md similarity index 100% rename from test/qbittorrent/3.1.5/app-readme.md rename to scale-catalog-template/test/qbittorrent/3.1.5/app-readme.md diff --git a/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/qbittorrent/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz diff --git a/test/qbittorrent/3.1.5/ix_values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/ix_values.yaml similarity index 100% rename from test/qbittorrent/3.1.5/ix_values.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/ix_values.yaml diff --git a/test/qbittorrent/3.1.5/questions.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/questions.yaml similarity index 100% rename from test/qbittorrent/3.1.5/questions.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/questions.yaml diff --git a/test/qbittorrent/3.1.5/templates/common.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/templates/common.yaml similarity index 100% rename from test/qbittorrent/3.1.5/templates/common.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/templates/common.yaml diff --git a/test/qbittorrent/3.1.5/templates/configmap.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/templates/configmap.yaml similarity index 100% rename from test/qbittorrent/3.1.5/templates/configmap.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/templates/configmap.yaml diff --git a/test/qbittorrent/3.1.5/test_values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/test_values.yaml similarity index 100% rename from test/qbittorrent/3.1.5/test_values.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/test_values.yaml diff --git a/test/qbittorrent/3.1.5/values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/values.yaml similarity index 100% rename from test/qbittorrent/3.1.5/values.yaml rename to scale-catalog-template/test/qbittorrent/3.1.5/values.yaml diff --git a/test/qbittorrent/item.yaml b/scale-catalog-template/test/qbittorrent/item.yaml similarity index 100% rename from test/qbittorrent/item.yaml rename to scale-catalog-template/test/qbittorrent/item.yaml diff --git a/test/readarr/3.1.5/CONFIG.md b/scale-catalog-template/test/readarr/3.1.5/CONFIG.md similarity index 100% rename from test/readarr/3.1.5/CONFIG.md rename to scale-catalog-template/test/readarr/3.1.5/CONFIG.md diff --git a/test/readarr/3.1.5/Chart.lock b/scale-catalog-template/test/readarr/3.1.5/Chart.lock similarity index 100% rename from test/readarr/3.1.5/Chart.lock rename to scale-catalog-template/test/readarr/3.1.5/Chart.lock diff --git a/test/readarr/3.1.5/Chart.yaml b/scale-catalog-template/test/readarr/3.1.5/Chart.yaml similarity index 100% rename from test/readarr/3.1.5/Chart.yaml rename to scale-catalog-template/test/readarr/3.1.5/Chart.yaml diff --git a/test/readarr/3.1.5/README.md b/scale-catalog-template/test/readarr/3.1.5/README.md similarity index 100% rename from test/readarr/3.1.5/README.md rename to scale-catalog-template/test/readarr/3.1.5/README.md diff --git a/test/readarr/3.1.5/app-readme.md b/scale-catalog-template/test/readarr/3.1.5/app-readme.md similarity index 100% rename from test/readarr/3.1.5/app-readme.md rename to scale-catalog-template/test/readarr/3.1.5/app-readme.md diff --git a/test/readarr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/readarr/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/readarr/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/readarr/3.1.5/charts/common-3.5.5.tgz diff --git a/test/readarr/3.1.5/ix_values.yaml b/scale-catalog-template/test/readarr/3.1.5/ix_values.yaml similarity index 100% rename from test/readarr/3.1.5/ix_values.yaml rename to scale-catalog-template/test/readarr/3.1.5/ix_values.yaml diff --git a/test/readarr/3.1.5/questions.yaml b/scale-catalog-template/test/readarr/3.1.5/questions.yaml similarity index 100% rename from test/readarr/3.1.5/questions.yaml rename to scale-catalog-template/test/readarr/3.1.5/questions.yaml diff --git a/test/readarr/3.1.5/templates/common.yaml b/scale-catalog-template/test/readarr/3.1.5/templates/common.yaml similarity index 100% rename from test/readarr/3.1.5/templates/common.yaml rename to scale-catalog-template/test/readarr/3.1.5/templates/common.yaml diff --git a/test/readarr/3.1.5/test_values.yaml b/scale-catalog-template/test/readarr/3.1.5/test_values.yaml similarity index 100% rename from test/readarr/3.1.5/test_values.yaml rename to scale-catalog-template/test/readarr/3.1.5/test_values.yaml diff --git a/test/readarr/3.1.5/values.yaml b/scale-catalog-template/test/readarr/3.1.5/values.yaml similarity index 100% rename from test/readarr/3.1.5/values.yaml rename to scale-catalog-template/test/readarr/3.1.5/values.yaml diff --git a/test/readarr/item.yaml b/scale-catalog-template/test/readarr/item.yaml similarity index 100% rename from test/readarr/item.yaml rename to scale-catalog-template/test/readarr/item.yaml diff --git a/test/sabnzbd/3.1.5/CONFIG.md b/scale-catalog-template/test/sabnzbd/3.1.5/CONFIG.md similarity index 100% rename from test/sabnzbd/3.1.5/CONFIG.md rename to scale-catalog-template/test/sabnzbd/3.1.5/CONFIG.md diff --git a/test/sabnzbd/3.1.5/Chart.lock b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.lock similarity index 100% rename from test/sabnzbd/3.1.5/Chart.lock rename to scale-catalog-template/test/sabnzbd/3.1.5/Chart.lock diff --git a/test/sabnzbd/3.1.5/Chart.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.yaml similarity index 100% rename from test/sabnzbd/3.1.5/Chart.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/Chart.yaml diff --git a/test/sabnzbd/3.1.5/README.md b/scale-catalog-template/test/sabnzbd/3.1.5/README.md similarity index 100% rename from test/sabnzbd/3.1.5/README.md rename to scale-catalog-template/test/sabnzbd/3.1.5/README.md diff --git a/test/sabnzbd/3.1.5/app-readme.md b/scale-catalog-template/test/sabnzbd/3.1.5/app-readme.md similarity index 100% rename from test/sabnzbd/3.1.5/app-readme.md rename to scale-catalog-template/test/sabnzbd/3.1.5/app-readme.md diff --git a/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/sabnzbd/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz diff --git a/test/sabnzbd/3.1.5/ix_values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/ix_values.yaml similarity index 100% rename from test/sabnzbd/3.1.5/ix_values.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/ix_values.yaml diff --git a/test/sabnzbd/3.1.5/questions.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/questions.yaml similarity index 100% rename from test/sabnzbd/3.1.5/questions.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/questions.yaml diff --git a/test/sabnzbd/3.1.5/templates/common.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/templates/common.yaml similarity index 100% rename from test/sabnzbd/3.1.5/templates/common.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/templates/common.yaml diff --git a/test/sabnzbd/3.1.5/test_values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/test_values.yaml similarity index 100% rename from test/sabnzbd/3.1.5/test_values.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/test_values.yaml diff --git a/test/sabnzbd/3.1.5/values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/values.yaml similarity index 100% rename from test/sabnzbd/3.1.5/values.yaml rename to scale-catalog-template/test/sabnzbd/3.1.5/values.yaml diff --git a/test/sabnzbd/item.yaml b/scale-catalog-template/test/sabnzbd/item.yaml similarity index 100% rename from test/sabnzbd/item.yaml rename to scale-catalog-template/test/sabnzbd/item.yaml diff --git a/test/truecommand/3.1.5/CONFIG.md b/scale-catalog-template/test/truecommand/3.1.5/CONFIG.md similarity index 100% rename from test/truecommand/3.1.5/CONFIG.md rename to scale-catalog-template/test/truecommand/3.1.5/CONFIG.md diff --git a/test/truecommand/3.1.5/Chart.lock b/scale-catalog-template/test/truecommand/3.1.5/Chart.lock similarity index 100% rename from test/truecommand/3.1.5/Chart.lock rename to scale-catalog-template/test/truecommand/3.1.5/Chart.lock diff --git a/test/truecommand/3.1.5/Chart.yaml b/scale-catalog-template/test/truecommand/3.1.5/Chart.yaml similarity index 100% rename from test/truecommand/3.1.5/Chart.yaml rename to scale-catalog-template/test/truecommand/3.1.5/Chart.yaml diff --git a/test/truecommand/3.1.5/README.md b/scale-catalog-template/test/truecommand/3.1.5/README.md similarity index 100% rename from test/truecommand/3.1.5/README.md rename to scale-catalog-template/test/truecommand/3.1.5/README.md diff --git a/test/truecommand/3.1.5/app-readme.md b/scale-catalog-template/test/truecommand/3.1.5/app-readme.md similarity index 100% rename from test/truecommand/3.1.5/app-readme.md rename to scale-catalog-template/test/truecommand/3.1.5/app-readme.md diff --git a/test/truecommand/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/truecommand/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/truecommand/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/truecommand/3.1.5/charts/common-3.5.5.tgz diff --git a/test/truecommand/3.1.5/ix_values.yaml b/scale-catalog-template/test/truecommand/3.1.5/ix_values.yaml similarity index 100% rename from test/truecommand/3.1.5/ix_values.yaml rename to scale-catalog-template/test/truecommand/3.1.5/ix_values.yaml diff --git a/test/truecommand/3.1.5/questions.yaml b/scale-catalog-template/test/truecommand/3.1.5/questions.yaml similarity index 100% rename from test/truecommand/3.1.5/questions.yaml rename to scale-catalog-template/test/truecommand/3.1.5/questions.yaml diff --git a/test/truecommand/3.1.5/templates/common.yaml b/scale-catalog-template/test/truecommand/3.1.5/templates/common.yaml similarity index 100% rename from test/truecommand/3.1.5/templates/common.yaml rename to scale-catalog-template/test/truecommand/3.1.5/templates/common.yaml diff --git a/test/truecommand/3.1.5/test_values.yaml b/scale-catalog-template/test/truecommand/3.1.5/test_values.yaml similarity index 100% rename from test/truecommand/3.1.5/test_values.yaml rename to scale-catalog-template/test/truecommand/3.1.5/test_values.yaml diff --git a/test/truecommand/3.1.5/values.yaml b/scale-catalog-template/test/truecommand/3.1.5/values.yaml similarity index 100% rename from test/truecommand/3.1.5/values.yaml rename to scale-catalog-template/test/truecommand/3.1.5/values.yaml diff --git a/test/truecommand/item.yaml b/scale-catalog-template/test/truecommand/item.yaml similarity index 100% rename from test/truecommand/item.yaml rename to scale-catalog-template/test/truecommand/item.yaml diff --git a/test/tvheadend/4.1.5/CONFIG.md b/scale-catalog-template/test/tvheadend/4.1.5/CONFIG.md similarity index 100% rename from test/tvheadend/4.1.5/CONFIG.md rename to scale-catalog-template/test/tvheadend/4.1.5/CONFIG.md diff --git a/test/tvheadend/4.1.5/Chart.lock b/scale-catalog-template/test/tvheadend/4.1.5/Chart.lock similarity index 100% rename from test/tvheadend/4.1.5/Chart.lock rename to scale-catalog-template/test/tvheadend/4.1.5/Chart.lock diff --git a/test/tvheadend/4.1.5/Chart.yaml b/scale-catalog-template/test/tvheadend/4.1.5/Chart.yaml similarity index 100% rename from test/tvheadend/4.1.5/Chart.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/Chart.yaml diff --git a/test/tvheadend/4.1.5/README.md b/scale-catalog-template/test/tvheadend/4.1.5/README.md similarity index 100% rename from test/tvheadend/4.1.5/README.md rename to scale-catalog-template/test/tvheadend/4.1.5/README.md diff --git a/test/tvheadend/4.1.5/app-readme.md b/scale-catalog-template/test/tvheadend/4.1.5/app-readme.md similarity index 100% rename from test/tvheadend/4.1.5/app-readme.md rename to scale-catalog-template/test/tvheadend/4.1.5/app-readme.md diff --git a/test/tvheadend/4.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/tvheadend/4.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/tvheadend/4.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/tvheadend/4.1.5/charts/common-3.5.5.tgz diff --git a/test/tvheadend/4.1.5/ix_values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/ix_values.yaml similarity index 100% rename from test/tvheadend/4.1.5/ix_values.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/ix_values.yaml diff --git a/test/tvheadend/4.1.5/questions.yaml b/scale-catalog-template/test/tvheadend/4.1.5/questions.yaml similarity index 100% rename from test/tvheadend/4.1.5/questions.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/questions.yaml diff --git a/test/tvheadend/4.1.5/templates/common.yaml b/scale-catalog-template/test/tvheadend/4.1.5/templates/common.yaml similarity index 100% rename from test/tvheadend/4.1.5/templates/common.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/templates/common.yaml diff --git a/test/tvheadend/4.1.5/test_values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/test_values.yaml similarity index 100% rename from test/tvheadend/4.1.5/test_values.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/test_values.yaml diff --git a/test/tvheadend/4.1.5/values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/values.yaml similarity index 100% rename from test/tvheadend/4.1.5/values.yaml rename to scale-catalog-template/test/tvheadend/4.1.5/values.yaml diff --git a/test/tvheadend/item.yaml b/scale-catalog-template/test/tvheadend/item.yaml similarity index 100% rename from test/tvheadend/item.yaml rename to scale-catalog-template/test/tvheadend/item.yaml diff --git a/test/unifi/3.1.5/CONFIG.md b/scale-catalog-template/test/unifi/3.1.5/CONFIG.md similarity index 100% rename from test/unifi/3.1.5/CONFIG.md rename to scale-catalog-template/test/unifi/3.1.5/CONFIG.md diff --git a/test/unifi/3.1.5/Chart.lock b/scale-catalog-template/test/unifi/3.1.5/Chart.lock similarity index 100% rename from test/unifi/3.1.5/Chart.lock rename to scale-catalog-template/test/unifi/3.1.5/Chart.lock diff --git a/test/unifi/3.1.5/Chart.yaml b/scale-catalog-template/test/unifi/3.1.5/Chart.yaml similarity index 100% rename from test/unifi/3.1.5/Chart.yaml rename to scale-catalog-template/test/unifi/3.1.5/Chart.yaml diff --git a/test/unifi/3.1.5/README.md b/scale-catalog-template/test/unifi/3.1.5/README.md similarity index 100% rename from test/unifi/3.1.5/README.md rename to scale-catalog-template/test/unifi/3.1.5/README.md diff --git a/test/unifi/3.1.5/app-readme.md b/scale-catalog-template/test/unifi/3.1.5/app-readme.md similarity index 100% rename from test/unifi/3.1.5/app-readme.md rename to scale-catalog-template/test/unifi/3.1.5/app-readme.md diff --git a/test/unifi/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/unifi/3.1.5/charts/common-3.5.5.tgz similarity index 100% rename from test/unifi/3.1.5/charts/common-3.5.5.tgz rename to scale-catalog-template/test/unifi/3.1.5/charts/common-3.5.5.tgz diff --git a/test/unifi/3.1.5/ix_values.yaml b/scale-catalog-template/test/unifi/3.1.5/ix_values.yaml similarity index 100% rename from test/unifi/3.1.5/ix_values.yaml rename to scale-catalog-template/test/unifi/3.1.5/ix_values.yaml diff --git a/test/unifi/3.1.5/questions.yaml b/scale-catalog-template/test/unifi/3.1.5/questions.yaml similarity index 100% rename from test/unifi/3.1.5/questions.yaml rename to scale-catalog-template/test/unifi/3.1.5/questions.yaml diff --git a/test/unifi/3.1.5/templates/common.yaml b/scale-catalog-template/test/unifi/3.1.5/templates/common.yaml similarity index 100% rename from test/unifi/3.1.5/templates/common.yaml rename to scale-catalog-template/test/unifi/3.1.5/templates/common.yaml diff --git a/test/unifi/3.1.5/test_values.yaml b/scale-catalog-template/test/unifi/3.1.5/test_values.yaml similarity index 100% rename from test/unifi/3.1.5/test_values.yaml rename to scale-catalog-template/test/unifi/3.1.5/test_values.yaml diff --git a/test/unifi/3.1.5/values.yaml b/scale-catalog-template/test/unifi/3.1.5/values.yaml similarity index 100% rename from test/unifi/3.1.5/values.yaml rename to scale-catalog-template/test/unifi/3.1.5/values.yaml diff --git a/test/unifi/item.yaml b/scale-catalog-template/test/unifi/item.yaml similarity index 100% rename from test/unifi/item.yaml rename to scale-catalog-template/test/unifi/item.yaml