@rancher/shell 1.2.5-rc.1 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/translations/en-us.yaml +41 -18
- package/components/nav/Header.vue +9 -5
- package/detail/catalog.cattle.io.app.vue +17 -4
- package/edit/provisioning.cattle.io.cluster/rke2.vue +73 -77
- package/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest.vue +45 -0
- package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +97 -0
- package/mixins/chart.js +6 -2
- package/models/catalog.cattle.io.app.js +112 -21
- package/models/management.cattle.io.cluster.js +18 -6
- package/package.json +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +2 -1
- package/scripts/extension/bundle +1 -1
- package/scripts/publish-shell.sh +3 -4
- package/scripts/typegen.sh +26 -23
- package/store/features.js +1 -0
- package/types/shell/index.d.ts +4312 -0
- package/utils/cluster.js +9 -0
- package/utils/v-sphere.ts +277 -0
- package/shell/types/shell/index.d.ts +0 -2
|
@@ -355,9 +355,8 @@ addClusterMemberDialog:
|
|
|
355
355
|
title: Add Cluster Member
|
|
356
356
|
|
|
357
357
|
addonConfigConfirmation:
|
|
358
|
-
title: Add-On
|
|
359
|
-
body: Changing the Kubernetes Version can reset
|
|
360
|
-
|
|
358
|
+
title: Add-On Reset
|
|
359
|
+
body: Changing the Kubernetes Version can reset Add-On values. You should check that the values are as expected before continuing.
|
|
361
360
|
addProjectMemberDialog:
|
|
362
361
|
title: Add Project Member
|
|
363
362
|
|
|
@@ -1107,17 +1106,39 @@ cis:
|
|
|
1107
1106
|
|
|
1108
1107
|
cluster:
|
|
1109
1108
|
addonChart:
|
|
1110
|
-
rancher-vsphere-cpi:
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
rke2-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
rke2-
|
|
1120
|
-
|
|
1109
|
+
rancher-vsphere-cpi:
|
|
1110
|
+
label: "Add-on: vSphere CPI"
|
|
1111
|
+
configuration: vSphere CPI
|
|
1112
|
+
rancher-vsphere-csi:
|
|
1113
|
+
label: "Add-on: vSphere CSI"
|
|
1114
|
+
configuration: vSphere CSI
|
|
1115
|
+
rke2-calico:
|
|
1116
|
+
label: "Add-on: Calico"
|
|
1117
|
+
configuration: Calico
|
|
1118
|
+
rke2-calico-crd:
|
|
1119
|
+
label: "Add-on: Calico"
|
|
1120
|
+
configuration: Calico
|
|
1121
|
+
rke2-canal:
|
|
1122
|
+
label: "Add-on: Canal"
|
|
1123
|
+
configuration: Canal
|
|
1124
|
+
rke2-cilium:
|
|
1125
|
+
label: "Add-on: Cilium"
|
|
1126
|
+
configuration: Cilium
|
|
1127
|
+
rke2-coredns:
|
|
1128
|
+
label: "Add-on: CoreDNS"
|
|
1129
|
+
configuration: CoreDNS
|
|
1130
|
+
rke2-ingress-nginx:
|
|
1131
|
+
label: "Add-on: NGINX"
|
|
1132
|
+
configuration: NGINX Ingress
|
|
1133
|
+
rke2-kube-proxy:
|
|
1134
|
+
label: "Add-on: Kube Proxy"
|
|
1135
|
+
configuration: Kube Proxy
|
|
1136
|
+
rke2-metrics-server:
|
|
1137
|
+
label: "Add-on: Metrics Server"
|
|
1138
|
+
configuration: Metrics Server
|
|
1139
|
+
rke2-multus:
|
|
1140
|
+
label: "Add-on: Multus"
|
|
1141
|
+
configuration: Multus
|
|
1121
1142
|
agentEnvVars:
|
|
1122
1143
|
label: Agent Environment
|
|
1123
1144
|
detail: Add additional environment variables to the agent container. This is most commonly useful for configuring a HTTP proxy.
|
|
@@ -1133,7 +1154,7 @@ cluster:
|
|
|
1133
1154
|
label: Google
|
|
1134
1155
|
rancher-vsphere:
|
|
1135
1156
|
label: vSphere
|
|
1136
|
-
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-
|
|
1157
|
+
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-on tabs.'
|
|
1137
1158
|
harvester:
|
|
1138
1159
|
label: Harvester
|
|
1139
1160
|
copyConfig: Copy KubeConfig to Clipboard
|
|
@@ -1279,8 +1300,10 @@ cluster:
|
|
|
1279
1300
|
macAddress: Mac Address
|
|
1280
1301
|
macFormat: 'Invalid MAC address format.'
|
|
1281
1302
|
vGpus:
|
|
1303
|
+
warnings:
|
|
1304
|
+
minimumAllocatable: It's highly recommended to select a vGPU with a number of allocatable devices greater than the number of nodes (Machine Count) to avoid "un-schedulable" errors after cluster updates.
|
|
1282
1305
|
errors:
|
|
1283
|
-
notAllocatable: '
|
|
1306
|
+
notAllocatable: '[{vGpu}] vGPU device is not allocatable; required: {allocated}, allocatable: {allocatable}'
|
|
1284
1307
|
volume:
|
|
1285
1308
|
title: Volumes
|
|
1286
1309
|
volume: Volume
|
|
@@ -1633,7 +1656,7 @@ cluster:
|
|
|
1633
1656
|
serverOs:
|
|
1634
1657
|
label: OS
|
|
1635
1658
|
addOns:
|
|
1636
|
-
dependencyBanner: Add-On
|
|
1659
|
+
dependencyBanner: Add-On Configuration can vary between Kubernetes versions. Changing the Kubernetes version may reset the values below.
|
|
1637
1660
|
additionalManifest:
|
|
1638
1661
|
title: Additional Manifest
|
|
1639
1662
|
tooltip: 'Additional Kubernetes Manifest YAML to be applied to the cluster on startup.'
|
|
@@ -1981,7 +2004,7 @@ cluster:
|
|
|
1981
2004
|
s3: s3
|
|
1982
2005
|
tabs:
|
|
1983
2006
|
ace: Authorized Endpoint
|
|
1984
|
-
|
|
2007
|
+
addOnAdditionalManifest: Additional Manifest
|
|
1985
2008
|
advanced: Advanced
|
|
1986
2009
|
agentEnv: Agent Environment Vars
|
|
1987
2010
|
basic: Basics
|
|
@@ -178,12 +178,16 @@ export default {
|
|
|
178
178
|
}
|
|
179
179
|
},
|
|
180
180
|
// since the Header is a "persistent component" we need to update it at every route change...
|
|
181
|
-
$route
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
$route: {
|
|
182
|
+
handler(nue) {
|
|
183
|
+
if (nue) {
|
|
184
|
+
this.extensionHeaderActions = getApplicableExtensionEnhancements(this, ExtensionPoint.ACTION, ActionLocation.HEADER, nue);
|
|
184
185
|
|
|
185
|
-
|
|
186
|
-
|
|
186
|
+
this.navHeaderRight = this.$plugin?.getDynamic('component', 'NavHeaderRight');
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
immediate: true,
|
|
190
|
+
deep: true,
|
|
187
191
|
}
|
|
188
192
|
},
|
|
189
193
|
|
|
@@ -9,7 +9,8 @@ import RelatedResources from '@shell/components/RelatedResources';
|
|
|
9
9
|
import jsyaml from 'js-yaml';
|
|
10
10
|
import merge from 'lodash/merge';
|
|
11
11
|
import { CATALOG } from '@shell/config/types';
|
|
12
|
-
import { sortBy } from '
|
|
12
|
+
import { sortBy } from '@shell/utils/sort';
|
|
13
|
+
import { allHash } from '@shell/utils/promise';
|
|
13
14
|
|
|
14
15
|
export default {
|
|
15
16
|
name: 'DetailRelease',
|
|
@@ -30,9 +31,15 @@ export default {
|
|
|
30
31
|
},
|
|
31
32
|
|
|
32
33
|
async fetch() {
|
|
33
|
-
|
|
34
|
+
const promises = {
|
|
35
|
+
catalog: this.$store.dispatch('catalog/load', { force: true, reset: true }),
|
|
36
|
+
allOperations: this.$store.dispatch('cluster/findAll', { type: CATALOG.OPERATION }),
|
|
37
|
+
secrets: this.value.fetchValues(true),
|
|
38
|
+
};
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
const res = await allHash(promises);
|
|
41
|
+
|
|
42
|
+
this.allOperations = res.allOperations;
|
|
36
43
|
},
|
|
37
44
|
|
|
38
45
|
computed: {
|
|
@@ -45,7 +52,7 @@ export default {
|
|
|
45
52
|
},
|
|
46
53
|
|
|
47
54
|
valuesYaml() {
|
|
48
|
-
const combined = merge(merge({}, this.value?.
|
|
55
|
+
const combined = merge(merge({}, this.value?.chartValues || {}), this.value?.values || {});
|
|
49
56
|
|
|
50
57
|
return jsyaml.dump(combined);
|
|
51
58
|
},
|
|
@@ -95,6 +102,12 @@ export default {
|
|
|
95
102
|
}
|
|
96
103
|
},
|
|
97
104
|
},
|
|
105
|
+
|
|
106
|
+
watch: {
|
|
107
|
+
'value.secretId'(neu, old) {
|
|
108
|
+
this.value.fetchValues(true);
|
|
109
|
+
}
|
|
110
|
+
},
|
|
98
111
|
};
|
|
99
112
|
</script>
|
|
100
113
|
|
|
@@ -28,9 +28,8 @@ import {
|
|
|
28
28
|
import { allHash } from '@shell/utils/promise';
|
|
29
29
|
import { sortBy } from '@shell/utils/sort';
|
|
30
30
|
|
|
31
|
-
import { camelToTitle } from '@shell/utils/string';
|
|
32
31
|
import { compare, sortable } from '@shell/utils/version';
|
|
33
|
-
import { isHarvesterSatisfiesVersion } from '@shell/utils/cluster';
|
|
32
|
+
import { isHarvesterSatisfiesVersion, labelForAddon } from '@shell/utils/cluster';
|
|
34
33
|
import * as VERSION from '@shell/utils/version';
|
|
35
34
|
|
|
36
35
|
import ArrayList from '@shell/components/form/ArrayList';
|
|
@@ -74,6 +73,9 @@ import { getApplicableExtensionEnhancements } from '@shell/core/plugin-helpers';
|
|
|
74
73
|
import { ExtensionPoint, TabLocation } from '@shell/core/types';
|
|
75
74
|
import MemberRoles from '@shell/edit/provisioning.cattle.io.cluster/MemberRoles';
|
|
76
75
|
import Basics from '@shell/edit/provisioning.cattle.io.cluster/Basics';
|
|
76
|
+
import AddOnConfig from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig';
|
|
77
|
+
import AddOnAdditionalManifest from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest';
|
|
78
|
+
import VsphereUtils from '@shell/utils/v-sphere';
|
|
77
79
|
|
|
78
80
|
const HARVESTER = 'harvester';
|
|
79
81
|
const HARVESTER_CLOUD_PROVIDER = 'harvester-cloud-provider';
|
|
@@ -132,7 +134,9 @@ export default {
|
|
|
132
134
|
UnitInput,
|
|
133
135
|
YamlEditor,
|
|
134
136
|
MemberRoles,
|
|
135
|
-
Basics
|
|
137
|
+
Basics,
|
|
138
|
+
AddOnConfig,
|
|
139
|
+
AddOnAdditionalManifest
|
|
136
140
|
},
|
|
137
141
|
|
|
138
142
|
mixins: [CreateEditView, FormValidation],
|
|
@@ -250,6 +254,7 @@ export default {
|
|
|
250
254
|
machinePoolErrors: {},
|
|
251
255
|
allNamespaces: [],
|
|
252
256
|
extensionTabs: getApplicableExtensionEnhancements(this, ExtensionPoint.TAB, TabLocation.CLUSTER_CREATE_RKE2, this.$route, this),
|
|
257
|
+
labelForAddon,
|
|
253
258
|
};
|
|
254
259
|
},
|
|
255
260
|
|
|
@@ -835,6 +840,8 @@ export default {
|
|
|
835
840
|
created() {
|
|
836
841
|
this.registerBeforeHook(this.saveMachinePools, 'save-machine-pools', 1);
|
|
837
842
|
this.registerBeforeHook(this.setRegistryConfig, 'set-registry-config');
|
|
843
|
+
this.registerBeforeHook(this.handleVsphereCpiSecret, 'sync-vsphere-cpi');
|
|
844
|
+
this.registerBeforeHook(this.handleVsphereCsiSecret, 'sync-vsphere-csi');
|
|
838
845
|
this.registerAfterHook(this.cleanupMachinePools, 'cleanup-machine-pools');
|
|
839
846
|
this.registerAfterHook(this.saveRoleBindings, 'save-role-bindings');
|
|
840
847
|
|
|
@@ -847,6 +854,13 @@ export default {
|
|
|
847
854
|
methods: {
|
|
848
855
|
set,
|
|
849
856
|
|
|
857
|
+
async handleVsphereCpiSecret() {
|
|
858
|
+
return VsphereUtils.handleVsphereCpiSecret(this);
|
|
859
|
+
},
|
|
860
|
+
async handleVsphereCsiSecret() {
|
|
861
|
+
return VsphereUtils.handleVsphereCsiSecret(this);
|
|
862
|
+
},
|
|
863
|
+
|
|
850
864
|
/**
|
|
851
865
|
* Initialize all the cluster specs
|
|
852
866
|
*/
|
|
@@ -1549,30 +1563,34 @@ export default {
|
|
|
1549
1563
|
}
|
|
1550
1564
|
},
|
|
1551
1565
|
|
|
1552
|
-
|
|
1553
|
-
const fallback = `${ camelToTitle(name.replace(/^(rke|rke2|rancher)-/, '')) } Configuration`;
|
|
1554
|
-
|
|
1555
|
-
return this.$store.getters['i18n/withFallback'](`cluster.addonChart."${ name }"`, null, fallback);
|
|
1556
|
-
},
|
|
1557
|
-
|
|
1558
|
-
showAddons() {
|
|
1566
|
+
showAddons(key) {
|
|
1559
1567
|
this.addonsRev++;
|
|
1560
1568
|
this.addonNames.forEach((name) => {
|
|
1561
1569
|
const chartValues = this.versionInfo[name]?.questions ? this.initYamlEditor(name) : {};
|
|
1562
1570
|
|
|
1563
1571
|
set(this.userChartValuesTemp, name, chartValues);
|
|
1564
1572
|
});
|
|
1565
|
-
this.
|
|
1573
|
+
this.refreshComponentWithYamls(key);
|
|
1574
|
+
},
|
|
1575
|
+
|
|
1576
|
+
refreshComponentWithYamls(key) {
|
|
1577
|
+
const component = this.$refs[key];
|
|
1578
|
+
|
|
1579
|
+
if (Array.isArray(component) && component.length > 0) {
|
|
1580
|
+
this.refreshYamls(component[0].$refs);
|
|
1581
|
+
} else if (component) {
|
|
1582
|
+
this.refreshYamls(component.$refs);
|
|
1583
|
+
}
|
|
1566
1584
|
},
|
|
1567
1585
|
|
|
1568
|
-
refreshYamls() {
|
|
1569
|
-
const keys = Object.keys(
|
|
1586
|
+
refreshYamls(refs) {
|
|
1587
|
+
const keys = Object.keys(refs).filter((x) => x.startsWith('yaml'));
|
|
1570
1588
|
|
|
1571
|
-
for (
|
|
1572
|
-
const entry =
|
|
1589
|
+
for (const k of keys) {
|
|
1590
|
+
const entry = refs[k];
|
|
1573
1591
|
const list = isArray(entry) ? entry : [entry];
|
|
1574
1592
|
|
|
1575
|
-
for (
|
|
1593
|
+
for (const component of list) {
|
|
1576
1594
|
component?.refresh(); // `yaml` ref can be undefined on switching from Basic to Addon tab (Azure --> Amazon --> addon)
|
|
1577
1595
|
}
|
|
1578
1596
|
}
|
|
@@ -2005,6 +2023,10 @@ export default {
|
|
|
2005
2023
|
}
|
|
2006
2024
|
},
|
|
2007
2025
|
|
|
2026
|
+
updateAdditionalManifest(neu) {
|
|
2027
|
+
this.value.spec.rkeConfig.additionalManifest = neu;
|
|
2028
|
+
},
|
|
2029
|
+
|
|
2008
2030
|
/**
|
|
2009
2031
|
* Keep last PSP value
|
|
2010
2032
|
*/
|
|
@@ -2279,7 +2301,7 @@ export default {
|
|
|
2279
2301
|
name="basic"
|
|
2280
2302
|
label-key="cluster.tabs.basic"
|
|
2281
2303
|
:weight="11"
|
|
2282
|
-
@active="
|
|
2304
|
+
@active="refreshComponentWithYamls('tab-Basics')"
|
|
2283
2305
|
>
|
|
2284
2306
|
<!-- Basic -->
|
|
2285
2307
|
<Basics
|
|
@@ -2665,68 +2687,43 @@ export default {
|
|
|
2665
2687
|
</template>
|
|
2666
2688
|
</Tab>
|
|
2667
2689
|
|
|
2668
|
-
<!-- Add-on
|
|
2690
|
+
<!-- Add-on Configs -->
|
|
2669
2691
|
<Tab
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2692
|
+
v-for="v in addonVersions"
|
|
2693
|
+
:key="v.name"
|
|
2694
|
+
:name="v.name"
|
|
2695
|
+
:label="labelForAddon(v.name, false)"
|
|
2696
|
+
:weight="9"
|
|
2697
|
+
:showHeader="false"
|
|
2698
|
+
@active="showAddons(v.name)"
|
|
2673
2699
|
>
|
|
2674
|
-
<
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
:
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
>
|
|
2688
|
-
<h3>{{ labelForAddon(v.name) }}</h3>
|
|
2689
|
-
<Questions
|
|
2690
|
-
v-if="versionInfo[v.name] && versionInfo[v.name].questions && v.name && userChartValuesTemp[v.name]"
|
|
2691
|
-
v-model="userChartValuesTemp[v.name]"
|
|
2692
|
-
:emit="true"
|
|
2693
|
-
in-store="management"
|
|
2694
|
-
:mode="mode"
|
|
2695
|
-
:tabbed="false"
|
|
2696
|
-
:source="versionInfo[v.name]"
|
|
2697
|
-
:target-namespace="value.metadata.namespace"
|
|
2698
|
-
@updated="updateQuestions(v.name)"
|
|
2699
|
-
/>
|
|
2700
|
-
<YamlEditor
|
|
2701
|
-
v-else
|
|
2702
|
-
ref="yaml-values"
|
|
2703
|
-
:value="initYamlEditor(v.name)"
|
|
2704
|
-
:scrolling="true"
|
|
2705
|
-
:as-object="true"
|
|
2706
|
-
:editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
|
|
2707
|
-
:hide-preview-buttons="true"
|
|
2708
|
-
@input="data => updateValues(v.name, data)"
|
|
2709
|
-
/>
|
|
2710
|
-
<div class="spacer" />
|
|
2711
|
-
</div>
|
|
2712
|
-
</div>
|
|
2700
|
+
<AddOnConfig
|
|
2701
|
+
:ref="v.name"
|
|
2702
|
+
v-model="value"
|
|
2703
|
+
:mode="mode"
|
|
2704
|
+
:version-info="versionInfo"
|
|
2705
|
+
:addon-version="v"
|
|
2706
|
+
:addons-rev="addonsRev"
|
|
2707
|
+
:user-chart-values-temp="userChartValuesTemp"
|
|
2708
|
+
:init-yaml-editor="initYamlEditor"
|
|
2709
|
+
@update-questions="syncChartValues"
|
|
2710
|
+
@update-values="updateValues"
|
|
2711
|
+
/>
|
|
2712
|
+
</Tab>
|
|
2713
2713
|
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
class="yaml-editor"
|
|
2728
|
-
/>
|
|
2729
|
-
</div>
|
|
2714
|
+
<!-- Add-on Additional Manifest -->
|
|
2715
|
+
<Tab
|
|
2716
|
+
name="additionalmanifest"
|
|
2717
|
+
label-key="cluster.tabs.addOnAdditionalManifest"
|
|
2718
|
+
:showHeader="false"
|
|
2719
|
+
@active="refreshComponentWithYamls('additionalmanifest')"
|
|
2720
|
+
>
|
|
2721
|
+
<AddOnAdditionalManifest
|
|
2722
|
+
ref="additionalmanifest"
|
|
2723
|
+
:value="value"
|
|
2724
|
+
:mode="mode"
|
|
2725
|
+
@additional-manifest-changed="updateAdditionalManifest"
|
|
2726
|
+
/>
|
|
2730
2727
|
</Tab>
|
|
2731
2728
|
|
|
2732
2729
|
<!-- Cluster Agent Configuration -->
|
|
@@ -2763,7 +2760,6 @@ export default {
|
|
|
2763
2760
|
name="advanced"
|
|
2764
2761
|
label-key="cluster.tabs.advanced"
|
|
2765
2762
|
:weight="-1"
|
|
2766
|
-
@active="refreshYamls"
|
|
2767
2763
|
>
|
|
2768
2764
|
<template v-if="haveArgInfo">
|
|
2769
2765
|
<h3>{{ t('cluster.advanced.argInfo.title') }}</h3>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import YamlEditor from '@shell/components/YamlEditor';
|
|
3
|
+
export default {
|
|
4
|
+
components: { YamlEditor },
|
|
5
|
+
props: {
|
|
6
|
+
mode: {
|
|
7
|
+
type: String,
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
value: {
|
|
11
|
+
type: Object,
|
|
12
|
+
required: true,
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
computed: {
|
|
16
|
+
additionalManifest: {
|
|
17
|
+
get() {
|
|
18
|
+
return this.value.spec.rkeConfig.additionalManifest;
|
|
19
|
+
},
|
|
20
|
+
set(neu) {
|
|
21
|
+
this.$emit('additional-manifest-changed', neu);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<div>
|
|
30
|
+
<h3>
|
|
31
|
+
{{ t('cluster.addOns.additionalManifest.title') }}
|
|
32
|
+
<i
|
|
33
|
+
v-clean-tooltip="t('cluster.addOns.additionalManifest.tooltip')"
|
|
34
|
+
class="icon icon-info"
|
|
35
|
+
/>
|
|
36
|
+
</h3>
|
|
37
|
+
<YamlEditor
|
|
38
|
+
ref="yaml-additional"
|
|
39
|
+
v-model="additionalManifest"
|
|
40
|
+
:editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
|
|
41
|
+
initial-yaml-values="# Additional Manifest YAML"
|
|
42
|
+
class="yaml-editor"
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { Banner } from '@components/Banner';
|
|
3
|
+
|
|
4
|
+
import Questions from '@shell/components/Questions';
|
|
5
|
+
import YamlEditor from '@shell/components/YamlEditor';
|
|
6
|
+
import { labelForAddon } from '@shell/utils/cluster';
|
|
7
|
+
import { _EDIT } from '@shell/config/query-params';
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
components: {
|
|
11
|
+
Banner,
|
|
12
|
+
Questions,
|
|
13
|
+
YamlEditor
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
props: {
|
|
17
|
+
mode: {
|
|
18
|
+
type: String,
|
|
19
|
+
required: true,
|
|
20
|
+
},
|
|
21
|
+
value: {
|
|
22
|
+
type: Object,
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
versionInfo: {
|
|
26
|
+
type: Object,
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
addonVersion: {
|
|
30
|
+
type: Object,
|
|
31
|
+
required: false,
|
|
32
|
+
default: null
|
|
33
|
+
},
|
|
34
|
+
addonsRev: {
|
|
35
|
+
type: Number,
|
|
36
|
+
required: true,
|
|
37
|
+
},
|
|
38
|
+
userChartValuesTemp: {
|
|
39
|
+
type: Object,
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
initYamlEditor: {
|
|
43
|
+
type: Function,
|
|
44
|
+
required: true,
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
data() {
|
|
49
|
+
return { labelForAddon };
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
computed: {
|
|
53
|
+
isEdit() {
|
|
54
|
+
return this.mode === _EDIT;
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<template>
|
|
61
|
+
<div>
|
|
62
|
+
<Banner
|
|
63
|
+
v-if="isEdit"
|
|
64
|
+
color="warning"
|
|
65
|
+
>
|
|
66
|
+
{{ t('cluster.addOns.dependencyBanner') }}
|
|
67
|
+
</Banner>
|
|
68
|
+
<div
|
|
69
|
+
v-if="versionInfo && addonVersion"
|
|
70
|
+
:key="addonsRev"
|
|
71
|
+
>
|
|
72
|
+
<h3>{{ labelForAddon(addonVersion.name) }}</h3>
|
|
73
|
+
<Questions
|
|
74
|
+
v-if="versionInfo[addonVersion.name] && versionInfo[addonVersion.name].questions && addonVersion.name && userChartValuesTemp[addonVersion.name]"
|
|
75
|
+
v-model="userChartValuesTemp[addonVersion.name]"
|
|
76
|
+
:emit="true"
|
|
77
|
+
in-store="management"
|
|
78
|
+
:mode="mode"
|
|
79
|
+
:tabbed="false"
|
|
80
|
+
:source="versionInfo[addonVersion.name]"
|
|
81
|
+
:target-namespace="value.metadata.namespace"
|
|
82
|
+
@updated="$emit('update-questions', addonVersion.name)"
|
|
83
|
+
/>
|
|
84
|
+
<YamlEditor
|
|
85
|
+
v-else
|
|
86
|
+
ref="yaml-values"
|
|
87
|
+
:value="initYamlEditor(addonVersion.name)"
|
|
88
|
+
:scrolling="true"
|
|
89
|
+
:as-object="true"
|
|
90
|
+
:editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
|
|
91
|
+
:hide-preview-buttons="true"
|
|
92
|
+
@input="data => $emit('update-values', addonVersion.name, data)"
|
|
93
|
+
/>
|
|
94
|
+
<div class="spacer" />
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</template>
|
package/mixins/chart.js
CHANGED
|
@@ -263,6 +263,8 @@ export default {
|
|
|
263
263
|
id: `${ this.query.appNamespace }/${ this.query.appName }`,
|
|
264
264
|
});
|
|
265
265
|
|
|
266
|
+
await this.existing?.fetchValues(true);
|
|
267
|
+
|
|
266
268
|
this.mode = _EDIT;
|
|
267
269
|
} catch (e) {
|
|
268
270
|
this.mode = _CREATE;
|
|
@@ -420,10 +422,12 @@ export default {
|
|
|
420
422
|
}
|
|
421
423
|
}
|
|
422
424
|
if (existingCRDApp) {
|
|
425
|
+
await existingCRDApp.fetchValues(true);
|
|
426
|
+
|
|
423
427
|
// spec.values are any non-default values the user configured
|
|
424
428
|
// the installation form should show these, as well as any default values from the chart
|
|
425
|
-
const existingValues = clone(existingCRDApp.
|
|
426
|
-
const defaultValues = clone(existingCRDApp.
|
|
429
|
+
const existingValues = clone(existingCRDApp.values || {});
|
|
430
|
+
const defaultValues = clone(existingCRDApp.chartValues || {});
|
|
427
431
|
|
|
428
432
|
crdVersionInfo.existingValues = existingValues;
|
|
429
433
|
crdVersionInfo.allValues = merge(defaultValues, existingValues);
|