app_versions.json 79 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039
  1. {
  2. "1.2.12": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/node-red/1.2.12",
  7. "last_update": "2024-07-10 11:01:53",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "normalize/acl"
  11. ],
  12. "human_version": "3.1.10_1.2.12",
  13. "version": "1.2.12",
  14. "chart_metadata": {
  15. "name": "node-red",
  16. "description": "Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.",
  17. "annotations": {
  18. "title": "Node-RED"
  19. },
  20. "type": "application",
  21. "version": "1.2.12",
  22. "apiVersion": "v2",
  23. "appVersion": "3.1.10",
  24. "kubeVersion": ">=1.16.0-0",
  25. "maintainers": [
  26. {
  27. "name": "truenas",
  28. "url": "https://www.truenas.com/",
  29. "email": "dev@ixsystems.com"
  30. }
  31. ],
  32. "dependencies": [
  33. {
  34. "name": "common",
  35. "repository": "file://../../../common",
  36. "version": "1.2.9"
  37. }
  38. ],
  39. "home": "https://nodered.org",
  40. "icon": "https://media.sys.truenas.net/apps/node-red/icons/icon.png",
  41. "sources": [
  42. "https://github.com/node-red/node-red-docker",
  43. "https://github.com/truenas/charts/tree/master/community/node-red",
  44. "https://nodered.org"
  45. ],
  46. "keywords": [
  47. "automation"
  48. ]
  49. },
  50. "app_metadata": {
  51. "runAsContext": [
  52. {
  53. "userName": "node-red",
  54. "groupName": "node-red",
  55. "gid": 1000,
  56. "uid": 1000,
  57. "description": "Node-RED runs as a non-root user."
  58. }
  59. ],
  60. "capabilities": [],
  61. "hostMounts": []
  62. },
  63. "schema": {
  64. "groups": [
  65. {
  66. "name": "Node-RED Configuration",
  67. "description": "Configure Node-RED"
  68. },
  69. {
  70. "name": "User and Group Configuration",
  71. "description": "Configure User and Group for Node-RED"
  72. },
  73. {
  74. "name": "Network Configuration",
  75. "description": "Configure Network for Node-RED"
  76. },
  77. {
  78. "name": "Storage Configuration",
  79. "description": "Configure Storage for Node-RED"
  80. },
  81. {
  82. "name": "Resources Configuration",
  83. "description": "Configure Resources for Node-RED"
  84. }
  85. ],
  86. "portals": {
  87. "web_portal": {
  88. "protocols": [
  89. "$kubernetes-resource_configmap_portal_protocol"
  90. ],
  91. "host": [
  92. "$kubernetes-resource_configmap_portal_host"
  93. ],
  94. "ports": [
  95. "$kubernetes-resource_configmap_portal_port"
  96. ],
  97. "path": "$kubernetes-resource_configmap_portal_path"
  98. }
  99. },
  100. "questions": [
  101. {
  102. "variable": "noderedConfig",
  103. "label": "",
  104. "group": "Node-RED Configuration",
  105. "schema": {
  106. "type": "dict",
  107. "attrs": [
  108. {
  109. "variable": "imageSelector",
  110. "label": "Node-RED Image",
  111. "description": "The Node-RED image to use.",
  112. "schema": {
  113. "type": "string",
  114. "default": "node16Image",
  115. "required": true,
  116. "enum": [
  117. {
  118. "value": "node14Image",
  119. "description": "Node-RED on Node.js 14"
  120. },
  121. {
  122. "value": "node14MinimalImage",
  123. "description": "Node-RED Minimal on Node.js 14"
  124. },
  125. {
  126. "value": "node16Image",
  127. "description": "Node-RED on Node.js 16"
  128. },
  129. {
  130. "value": "node16MinimalImage",
  131. "description": "Node-RED Minimal on Node.js 16"
  132. },
  133. {
  134. "value": "node18Image",
  135. "description": "Node-RED on Node.js 18"
  136. },
  137. {
  138. "value": "node18MinimalImage",
  139. "description": "Node-RED Minimal on Node.js 18"
  140. }
  141. ]
  142. }
  143. },
  144. {
  145. "variable": "safeMode",
  146. "label": "Safe Mode",
  147. "description": "Starts Node-RED without starting the flows.</br>\nThis allows you to open the flows in the editor and\n make changes without the flows running.</br>\n When you deploy your changes, the flows are then started.\n",
  148. "schema": {
  149. "type": "boolean",
  150. "default": false
  151. }
  152. },
  153. {
  154. "variable": "enableProjects",
  155. "label": "Enable Projects",
  156. "description": "Enable projects in Node-RED.</br>\nThis allows you to use the projects feature in Node-RED.\n",
  157. "schema": {
  158. "type": "boolean",
  159. "default": false
  160. }
  161. },
  162. {
  163. "variable": "additionalEnvs",
  164. "label": "Additional Environment Variables",
  165. "description": "Configure additional environment variables for Node-RED.",
  166. "schema": {
  167. "type": "list",
  168. "default": [],
  169. "items": [
  170. {
  171. "variable": "env",
  172. "label": "Environment Variable",
  173. "schema": {
  174. "type": "dict",
  175. "attrs": [
  176. {
  177. "variable": "name",
  178. "label": "Name",
  179. "schema": {
  180. "type": "string",
  181. "required": true
  182. }
  183. },
  184. {
  185. "variable": "value",
  186. "label": "Value",
  187. "schema": {
  188. "type": "string",
  189. "required": true
  190. }
  191. }
  192. ]
  193. }
  194. }
  195. ]
  196. }
  197. }
  198. ]
  199. }
  200. },
  201. {
  202. "variable": "noderedNetwork",
  203. "label": "",
  204. "group": "Network Configuration",
  205. "schema": {
  206. "type": "dict",
  207. "attrs": [
  208. {
  209. "variable": "webPort",
  210. "label": "Web Port",
  211. "description": "The port for the Node-RED Web UI.",
  212. "schema": {
  213. "type": "int",
  214. "default": 30049,
  215. "min": 9000,
  216. "max": 65535,
  217. "required": true
  218. }
  219. },
  220. {
  221. "variable": "hostNetwork",
  222. "label": "Host Network",
  223. "description": "Bind to the host network. It's recommended to keep this disabled.</br>\n",
  224. "schema": {
  225. "type": "boolean",
  226. "default": false
  227. }
  228. }
  229. ]
  230. }
  231. },
  232. {
  233. "variable": "noderedStorage",
  234. "label": "",
  235. "group": "Storage Configuration",
  236. "schema": {
  237. "type": "dict",
  238. "attrs": [
  239. {
  240. "variable": "data",
  241. "label": "Node-RED Data Storage",
  242. "description": "The path to store Node-RED Data.",
  243. "schema": {
  244. "type": "dict",
  245. "attrs": [
  246. {
  247. "variable": "type",
  248. "label": "Type",
  249. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  250. "schema": {
  251. "type": "string",
  252. "required": true,
  253. "immutable": true,
  254. "default": "ixVolume",
  255. "enum": [
  256. {
  257. "value": "hostPath",
  258. "description": "Host Path (Path that already exists on the system)"
  259. },
  260. {
  261. "value": "ixVolume",
  262. "description": "ixVolume (Dataset created automatically by the system)"
  263. }
  264. ]
  265. }
  266. },
  267. {
  268. "variable": "ixVolumeConfig",
  269. "label": "ixVolume Configuration",
  270. "description": "The configuration for the ixVolume dataset.",
  271. "schema": {
  272. "type": "dict",
  273. "show_if": [
  274. [
  275. "type",
  276. "=",
  277. "ixVolume"
  278. ]
  279. ],
  280. "$ref": [
  281. "normalize/ixVolume"
  282. ],
  283. "attrs": [
  284. {
  285. "variable": "aclEnable",
  286. "label": "Enable ACL",
  287. "description": "Enable ACL for the dataset.",
  288. "schema": {
  289. "type": "boolean",
  290. "default": false
  291. }
  292. },
  293. {
  294. "variable": "datasetName",
  295. "label": "Dataset Name",
  296. "description": "The name of the dataset to use for storage.",
  297. "schema": {
  298. "type": "string",
  299. "required": true,
  300. "immutable": true,
  301. "hidden": true,
  302. "default": "data"
  303. }
  304. },
  305. {
  306. "variable": "aclEntries",
  307. "label": "ACL Configuration",
  308. "schema": {
  309. "type": "dict",
  310. "show_if": [
  311. [
  312. "aclEnable",
  313. "=",
  314. true
  315. ]
  316. ],
  317. "attrs": [
  318. {
  319. "variable": "path",
  320. "label": "Path",
  321. "description": "Path to perform ACL",
  322. "schema": {
  323. "type": "string",
  324. "hidden": true
  325. }
  326. },
  327. {
  328. "variable": "entries",
  329. "label": "ACL Entries",
  330. "description": "ACL Entries",
  331. "schema": {
  332. "type": "list",
  333. "items": [
  334. {
  335. "variable": "aclEntry",
  336. "label": "ACL Entry",
  337. "schema": {
  338. "type": "dict",
  339. "attrs": [
  340. {
  341. "variable": "id_type",
  342. "label": "ID Type",
  343. "schema": {
  344. "type": "string",
  345. "enum": [
  346. {
  347. "value": "USER",
  348. "description": "Entry is for a USER"
  349. },
  350. {
  351. "value": "GROUP",
  352. "description": "Entry is for a GROUP"
  353. }
  354. ],
  355. "default": "USER"
  356. }
  357. },
  358. {
  359. "variable": "id",
  360. "label": "ID",
  361. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  362. "schema": {
  363. "type": "int",
  364. "required": true,
  365. "min": 0
  366. }
  367. },
  368. {
  369. "variable": "access",
  370. "label": "Access",
  371. "schema": {
  372. "type": "string",
  373. "enum": [
  374. {
  375. "value": "READ",
  376. "description": "Read Access"
  377. },
  378. {
  379. "value": "MODIFY",
  380. "description": "Modify Access"
  381. },
  382. {
  383. "value": "FULL_CONTROL",
  384. "description": "FULL_CONTROL Access"
  385. }
  386. ]
  387. }
  388. }
  389. ]
  390. }
  391. }
  392. ]
  393. }
  394. }
  395. ]
  396. }
  397. }
  398. ]
  399. }
  400. },
  401. {
  402. "variable": "hostPathConfig",
  403. "label": "Host Path Configuration",
  404. "schema": {
  405. "type": "dict",
  406. "show_if": [
  407. [
  408. "type",
  409. "=",
  410. "hostPath"
  411. ]
  412. ],
  413. "attrs": [
  414. {
  415. "variable": "aclEnable",
  416. "label": "Enable ACL",
  417. "description": "Enable ACL for the dataset.",
  418. "schema": {
  419. "type": "boolean",
  420. "default": false
  421. }
  422. },
  423. {
  424. "variable": "acl",
  425. "label": "ACL Configuration",
  426. "schema": {
  427. "type": "dict",
  428. "show_if": [
  429. [
  430. "aclEnable",
  431. "=",
  432. true
  433. ]
  434. ],
  435. "attrs": [
  436. {
  437. "variable": "path",
  438. "label": "Host Path",
  439. "description": "Host Path to perform ACL",
  440. "schema": {
  441. "type": "hostpath",
  442. "required": true,
  443. "empty": false
  444. }
  445. },
  446. {
  447. "variable": "entries",
  448. "label": "ACL Entries",
  449. "description": "ACL Entries",
  450. "schema": {
  451. "type": "list",
  452. "items": [
  453. {
  454. "variable": "aclEntry",
  455. "label": "ACL Entry",
  456. "schema": {
  457. "type": "dict",
  458. "attrs": [
  459. {
  460. "variable": "id_type",
  461. "label": "ID Type",
  462. "schema": {
  463. "type": "string",
  464. "enum": [
  465. {
  466. "value": "USER",
  467. "description": "Entry is for a USER"
  468. },
  469. {
  470. "value": "GROUP",
  471. "description": "Entry is for a GROUP"
  472. }
  473. ],
  474. "default": "USER"
  475. }
  476. },
  477. {
  478. "variable": "id",
  479. "label": "ID",
  480. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  481. "schema": {
  482. "type": "int",
  483. "required": true,
  484. "min": 0
  485. }
  486. },
  487. {
  488. "variable": "access",
  489. "label": "Access",
  490. "schema": {
  491. "type": "string",
  492. "enum": [
  493. {
  494. "value": "READ",
  495. "description": "Read Access"
  496. },
  497. {
  498. "value": "MODIFY",
  499. "description": "Modify Access"
  500. },
  501. {
  502. "value": "FULL_CONTROL",
  503. "description": "FULL_CONTROL Access"
  504. }
  505. ]
  506. }
  507. }
  508. ]
  509. }
  510. }
  511. ]
  512. }
  513. },
  514. {
  515. "variable": "options",
  516. "label": "ACL Options",
  517. "schema": {
  518. "type": "dict",
  519. "attrs": [
  520. {
  521. "variable": "force",
  522. "label": "Force Flag",
  523. "description": "Enabling `Force` applies ACL even if the path has existing data",
  524. "schema": {
  525. "type": "boolean",
  526. "default": false
  527. }
  528. }
  529. ]
  530. }
  531. }
  532. ],
  533. "$ref": [
  534. "normalize/acl"
  535. ]
  536. }
  537. },
  538. {
  539. "variable": "hostPath",
  540. "label": "Host Path",
  541. "description": "The host path to use for storage.",
  542. "schema": {
  543. "type": "hostpath",
  544. "show_if": [
  545. [
  546. "aclEnable",
  547. "=",
  548. false
  549. ]
  550. ],
  551. "required": true
  552. }
  553. }
  554. ]
  555. }
  556. }
  557. ]
  558. }
  559. },
  560. {
  561. "variable": "additionalStorages",
  562. "label": "Additional Storage",
  563. "description": "Additional storage for Node-RED.",
  564. "schema": {
  565. "type": "list",
  566. "default": [],
  567. "items": [
  568. {
  569. "variable": "storageEntry",
  570. "label": "Storage Entry",
  571. "schema": {
  572. "type": "dict",
  573. "attrs": [
  574. {
  575. "variable": "type",
  576. "label": "Type",
  577. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to a persistent volume claim.\n",
  578. "schema": {
  579. "type": "string",
  580. "required": true,
  581. "default": "ixVolume",
  582. "immutable": true,
  583. "enum": [
  584. {
  585. "value": "hostPath",
  586. "description": "Host Path (Path that already exists on the system)"
  587. },
  588. {
  589. "value": "ixVolume",
  590. "description": "ixVolume (Dataset created automatically by the system)"
  591. },
  592. {
  593. "value": "smb-pv-pvc",
  594. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  595. }
  596. ]
  597. }
  598. },
  599. {
  600. "variable": "readOnly",
  601. "label": "Read Only",
  602. "description": "Mount the volume as read only.",
  603. "schema": {
  604. "type": "boolean",
  605. "default": false
  606. }
  607. },
  608. {
  609. "variable": "mountPath",
  610. "label": "Mount Path",
  611. "description": "The path inside the container to mount the storage.",
  612. "schema": {
  613. "type": "path",
  614. "required": true
  615. }
  616. },
  617. {
  618. "variable": "hostPathConfig",
  619. "label": "Host Path Configuration",
  620. "schema": {
  621. "type": "dict",
  622. "show_if": [
  623. [
  624. "type",
  625. "=",
  626. "hostPath"
  627. ]
  628. ],
  629. "attrs": [
  630. {
  631. "variable": "aclEnable",
  632. "label": "Enable ACL",
  633. "description": "Enable ACL for the dataset.",
  634. "schema": {
  635. "type": "boolean",
  636. "default": false
  637. }
  638. },
  639. {
  640. "variable": "acl",
  641. "label": "ACL Configuration",
  642. "schema": {
  643. "type": "dict",
  644. "show_if": [
  645. [
  646. "aclEnable",
  647. "=",
  648. true
  649. ]
  650. ],
  651. "attrs": [
  652. {
  653. "variable": "path",
  654. "label": "Host Path",
  655. "description": "Host Path to perform ACL",
  656. "schema": {
  657. "type": "hostpath",
  658. "required": true,
  659. "empty": false
  660. }
  661. },
  662. {
  663. "variable": "entries",
  664. "label": "ACL Entries",
  665. "description": "ACL Entries",
  666. "schema": {
  667. "type": "list",
  668. "items": [
  669. {
  670. "variable": "aclEntry",
  671. "label": "ACL Entry",
  672. "schema": {
  673. "type": "dict",
  674. "attrs": [
  675. {
  676. "variable": "id_type",
  677. "label": "ID Type",
  678. "schema": {
  679. "type": "string",
  680. "enum": [
  681. {
  682. "value": "USER",
  683. "description": "Entry is for a USER"
  684. },
  685. {
  686. "value": "GROUP",
  687. "description": "Entry is for a GROUP"
  688. }
  689. ],
  690. "default": "USER"
  691. }
  692. },
  693. {
  694. "variable": "id",
  695. "label": "ID",
  696. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  697. "schema": {
  698. "type": "int",
  699. "required": true,
  700. "min": 0
  701. }
  702. },
  703. {
  704. "variable": "access",
  705. "label": "Access",
  706. "schema": {
  707. "type": "string",
  708. "enum": [
  709. {
  710. "value": "READ",
  711. "description": "Read Access"
  712. },
  713. {
  714. "value": "MODIFY",
  715. "description": "Modify Access"
  716. },
  717. {
  718. "value": "FULL_CONTROL",
  719. "description": "FULL_CONTROL Access"
  720. }
  721. ]
  722. }
  723. }
  724. ]
  725. }
  726. }
  727. ]
  728. }
  729. },
  730. {
  731. "variable": "options",
  732. "label": "ACL Options",
  733. "schema": {
  734. "type": "dict",
  735. "attrs": [
  736. {
  737. "variable": "force",
  738. "label": "Force Flag",
  739. "description": "Enabling `Force` applies ACL even if the path has existing data",
  740. "schema": {
  741. "type": "boolean",
  742. "default": false
  743. }
  744. }
  745. ]
  746. }
  747. }
  748. ],
  749. "$ref": [
  750. "normalize/acl"
  751. ]
  752. }
  753. },
  754. {
  755. "variable": "hostPath",
  756. "label": "Host Path",
  757. "description": "The host path to use for storage.",
  758. "schema": {
  759. "type": "hostpath",
  760. "show_if": [
  761. [
  762. "aclEnable",
  763. "=",
  764. false
  765. ]
  766. ],
  767. "required": true
  768. }
  769. }
  770. ]
  771. }
  772. },
  773. {
  774. "variable": "ixVolumeConfig",
  775. "label": "ixVolume Configuration",
  776. "description": "The configuration for the ixVolume dataset.",
  777. "schema": {
  778. "type": "dict",
  779. "show_if": [
  780. [
  781. "type",
  782. "=",
  783. "ixVolume"
  784. ]
  785. ],
  786. "$ref": [
  787. "normalize/ixVolume"
  788. ],
  789. "attrs": [
  790. {
  791. "variable": "aclEnable",
  792. "label": "Enable ACL",
  793. "description": "Enable ACL for the dataset.",
  794. "schema": {
  795. "type": "boolean",
  796. "default": false
  797. }
  798. },
  799. {
  800. "variable": "datasetName",
  801. "label": "Dataset Name",
  802. "description": "The name of the dataset to use for storage.",
  803. "schema": {
  804. "type": "string",
  805. "required": true,
  806. "immutable": true,
  807. "default": "storage_entry"
  808. }
  809. },
  810. {
  811. "variable": "aclEntries",
  812. "label": "ACL Configuration",
  813. "schema": {
  814. "type": "dict",
  815. "show_if": [
  816. [
  817. "aclEnable",
  818. "=",
  819. true
  820. ]
  821. ],
  822. "attrs": [
  823. {
  824. "variable": "path",
  825. "label": "Path",
  826. "description": "Path to perform ACL",
  827. "schema": {
  828. "type": "string",
  829. "hidden": true
  830. }
  831. },
  832. {
  833. "variable": "entries",
  834. "label": "ACL Entries",
  835. "description": "ACL Entries",
  836. "schema": {
  837. "type": "list",
  838. "items": [
  839. {
  840. "variable": "aclEntry",
  841. "label": "ACL Entry",
  842. "schema": {
  843. "type": "dict",
  844. "attrs": [
  845. {
  846. "variable": "id_type",
  847. "label": "ID Type",
  848. "schema": {
  849. "type": "string",
  850. "enum": [
  851. {
  852. "value": "USER",
  853. "description": "Entry is for a USER"
  854. },
  855. {
  856. "value": "GROUP",
  857. "description": "Entry is for a GROUP"
  858. }
  859. ],
  860. "default": "USER"
  861. }
  862. },
  863. {
  864. "variable": "id",
  865. "label": "ID",
  866. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  867. "schema": {
  868. "type": "int",
  869. "required": true,
  870. "min": 0
  871. }
  872. },
  873. {
  874. "variable": "access",
  875. "label": "Access",
  876. "schema": {
  877. "type": "string",
  878. "enum": [
  879. {
  880. "value": "READ",
  881. "description": "Read Access"
  882. },
  883. {
  884. "value": "MODIFY",
  885. "description": "Modify Access"
  886. },
  887. {
  888. "value": "FULL_CONTROL",
  889. "description": "FULL_CONTROL Access"
  890. }
  891. ]
  892. }
  893. }
  894. ]
  895. }
  896. }
  897. ]
  898. }
  899. }
  900. ]
  901. }
  902. }
  903. ]
  904. }
  905. },
  906. {
  907. "variable": "smbConfig",
  908. "label": "SMB Share Configuration",
  909. "description": "The configuration for the SMB Share.",
  910. "schema": {
  911. "type": "dict",
  912. "show_if": [
  913. [
  914. "type",
  915. "=",
  916. "smb-pv-pvc"
  917. ]
  918. ],
  919. "attrs": [
  920. {
  921. "variable": "server",
  922. "label": "Server",
  923. "description": "The server for the SMB share.",
  924. "schema": {
  925. "type": "string",
  926. "required": true
  927. }
  928. },
  929. {
  930. "variable": "share",
  931. "label": "Share",
  932. "description": "The share name for the SMB share.",
  933. "schema": {
  934. "type": "string",
  935. "required": true
  936. }
  937. },
  938. {
  939. "variable": "domain",
  940. "label": "Domain (Optional)",
  941. "description": "The domain for the SMB share.",
  942. "schema": {
  943. "type": "string"
  944. }
  945. },
  946. {
  947. "variable": "username",
  948. "label": "Username",
  949. "description": "The username for the SMB share.",
  950. "schema": {
  951. "type": "string",
  952. "required": true
  953. }
  954. },
  955. {
  956. "variable": "password",
  957. "label": "Password",
  958. "description": "The password for the SMB share.",
  959. "schema": {
  960. "type": "string",
  961. "required": true,
  962. "private": true
  963. }
  964. },
  965. {
  966. "variable": "size",
  967. "label": "Size (in Gi)",
  968. "description": "The size of the volume quota.",
  969. "schema": {
  970. "type": "int",
  971. "required": true,
  972. "min": 1,
  973. "default": 1
  974. }
  975. }
  976. ]
  977. }
  978. }
  979. ]
  980. }
  981. }
  982. ]
  983. }
  984. }
  985. ]
  986. }
  987. },
  988. {
  989. "variable": "resources",
  990. "group": "Resources Configuration",
  991. "label": "",
  992. "schema": {
  993. "type": "dict",
  994. "attrs": [
  995. {
  996. "variable": "limits",
  997. "label": "Limits",
  998. "schema": {
  999. "type": "dict",
  1000. "attrs": [
  1001. {
  1002. "variable": "cpu",
  1003. "label": "CPU",
  1004. "description": "CPU limit for Node-RED.",
  1005. "schema": {
  1006. "type": "string",
  1007. "max_length": 6,
  1008. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1009. "valid_chars_error": "Valid CPU limit formats are</br>\n- Plain Integer - eg. 1</br>\n- Float - eg. 0.5</br>\n- Milicpu - eg. 500m\n",
  1010. "default": "4000m",
  1011. "required": true
  1012. }
  1013. },
  1014. {
  1015. "variable": "memory",
  1016. "label": "Memory",
  1017. "description": "Memory limit for Node-RED.",
  1018. "schema": {
  1019. "type": "string",
  1020. "max_length": 12,
  1021. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1022. "valid_chars_error": "Valid Memory limit formats are</br>\n- Suffixed with E/P/T/G/M/K - eg. 1G</br>\n- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>\n- Plain Integer in bytes - eg. 1024</br>\n- Exponent - eg. 134e6\n",
  1023. "default": "8Gi",
  1024. "required": true
  1025. }
  1026. }
  1027. ]
  1028. }
  1029. }
  1030. ]
  1031. }
  1032. }
  1033. ]
  1034. },
  1035. "app_readme": "<h1>Node-RED</h1>\n<p><a href=\"https://nodered.org\">Node-RED</a> is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>Node-RED</code> directories.\nAfterward, the <code>Node-RED</code> container will run as a <strong>non</strong>-root user (<code>1000</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the configured user.</p>\n</blockquote>",
  1036. "detailed_readme": "<h1>Node-RED</h1>\n<p><a href=\"https://nodered.org\">Node-RED</a> is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>Node-RED</code> directories.\nAfterward, the <code>Node-RED</code> container will run as a <strong>non</strong>-root user (<code>1000</code>).\nAll mounted storage(s) will be <code>chown</code>ed only if the parent directory does not match the configured user.</p>\n</blockquote>",
  1037. "changelog": null
  1038. }
  1039. }