dashboard-shell-shell 3.0.5-test.12 → 3.0.5-test.14
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/icons/iconfont.css +4 -1
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +5 -1
- package/assets/translations/zh-hans.yaml +5 -4
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -19
- package/components/ExplorerMembers.vue +10 -1
- package/components/GlobalRoleBindings.vue +1 -58
- package/components/Resource/Detail/TitleBar/index.vue +26 -23
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +4 -4
- package/components/SortableTable/index.vue +2 -2
- package/components/Tabbed/index.vue +5 -1
- package/components/auth/Principal.vue +8 -3
- package/components/auth/RoleDetailEdit.vue +1 -1
- package/components/form/ArrayList.vue +163 -147
- package/components/form/Command.vue +4 -5
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +83 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +16 -2
- package/components/form/Labels.vue +1 -1
- package/components/form/MatchExpressions.vue +3 -4
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/Networking.vue +0 -1
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +19 -21
- package/components/form/Probe.vue +15 -11
- package/components/form/ResourceQuota/NamespaceRow.vue +1 -1
- package/components/form/ResourceQuota/Project.vue +1 -1
- package/components/form/ResourceQuota/ProjectRow.vue +1 -1
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/ServiceNameSelect.vue +1 -3
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Tolerations.vue +12 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/nav/NamespaceFilter.vue +14 -19
- package/components/nav/TopLevelMenu.vue +98 -125
- package/config/router/navigation-guards/index.js +52 -3
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/secret/index.vue +2 -2
- package/edit/service.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +10 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +27 -29
- package/edit/workload/Upgrading.vue +3 -3
- package/edit/workload/index.vue +2 -2
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +18 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/package.json +1 -1
- package/pages/account/index.vue +90 -56
- package/pages/home.vue +3 -4
- package/rancher-components/Banner/Banner.vue +4 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/store/i18n.js +1 -0
- package/utils/errorTranslate.json +82 -2
|
@@ -30,7 +30,7 @@ export default {
|
|
|
30
30
|
|
|
31
31
|
selectLabel: {
|
|
32
32
|
type: String,
|
|
33
|
-
default: '',
|
|
33
|
+
default: ' ',
|
|
34
34
|
},
|
|
35
35
|
|
|
36
36
|
selectValue: {
|
|
@@ -164,11 +164,12 @@ export default {
|
|
|
164
164
|
:v-bind="$attrs"
|
|
165
165
|
@update:value="change"
|
|
166
166
|
/>
|
|
167
|
+
<div style="width: 100%;height: 24px;"></div>
|
|
167
168
|
<LabeledInput
|
|
168
169
|
v-if="textLabel || textRules.length > 0"
|
|
169
170
|
ref="text"
|
|
170
171
|
v-model:value="string"
|
|
171
|
-
class="input-string
|
|
172
|
+
class="input-string span-8"
|
|
172
173
|
:label="textLabel"
|
|
173
174
|
:placeholder="placeholder"
|
|
174
175
|
:disabled="disabled || textDisabled"
|
|
@@ -204,7 +205,7 @@ export default {
|
|
|
204
205
|
|
|
205
206
|
&.select-after {
|
|
206
207
|
height: 100%;
|
|
207
|
-
flex-direction: row-reverse;
|
|
208
|
+
// flex-direction: row-reverse;
|
|
208
209
|
|
|
209
210
|
& .input-string {
|
|
210
211
|
border-radius: var(--border-radius) 0 0 var(--border-radius);
|
|
@@ -270,19 +271,19 @@ export default {
|
|
|
270
271
|
margin-right: 0;
|
|
271
272
|
|
|
272
273
|
&:hover:not(.focused):not(.disabled):not(.view) {
|
|
273
|
-
border:
|
|
274
|
+
border: 1px solid var(--input-hover-border) !important;
|
|
274
275
|
}
|
|
275
276
|
|
|
276
277
|
&.focused {
|
|
277
|
-
border:
|
|
278
|
+
border: 1px solid var(--outline) !important;
|
|
278
279
|
}
|
|
279
280
|
|
|
280
281
|
&:hover:not(.focused):not(.disabled) {
|
|
281
|
-
border:
|
|
282
|
+
border: 1px solid var(--input-hover-border) !important;
|
|
282
283
|
}
|
|
283
284
|
|
|
284
285
|
&.focused {
|
|
285
|
-
border:
|
|
286
|
+
border: 1px solid var(--outline) !important;
|
|
286
287
|
}
|
|
287
288
|
|
|
288
289
|
&.labeled-select.focused :deep(),
|
|
@@ -390,6 +390,17 @@ export default {
|
|
|
390
390
|
});
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
+
rows = rows.map((item) => {
|
|
394
|
+
if (item.key.includes('harvester')) {
|
|
395
|
+
item.key = item.key.replace('harvester', 'cloud');
|
|
396
|
+
}
|
|
397
|
+
if (item.value.includes('harvester')) {
|
|
398
|
+
item.value = item.value.replace('harvester', 'cloud');
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
return item;
|
|
402
|
+
});
|
|
403
|
+
|
|
393
404
|
return rows;
|
|
394
405
|
},
|
|
395
406
|
|
|
@@ -400,6 +411,8 @@ export default {
|
|
|
400
411
|
[this.valueName]: value,
|
|
401
412
|
};
|
|
402
413
|
|
|
414
|
+
obj.key = obj.key.replace('harvester', 'cloud');
|
|
415
|
+
obj.value = obj.value.replace('harvester', 'cloud');
|
|
403
416
|
obj.binary = false;
|
|
404
417
|
obj.canEncode = this.handleBase64;
|
|
405
418
|
obj.supported = true;
|
|
@@ -481,8 +494,8 @@ export default {
|
|
|
481
494
|
// let value = (row[valueName] || '');
|
|
482
495
|
// const key = (row[keyName] || '').trim();
|
|
483
496
|
|
|
484
|
-
const key = (row[keyName] || '').trim();
|
|
485
|
-
let value = (row[valueName] || '').trim();
|
|
497
|
+
const key = (row[keyName].replace('cloud', 'harvester') || '').trim();
|
|
498
|
+
let value = (row[valueName].replace('cloud', 'harvester') || '').trim();
|
|
486
499
|
|
|
487
500
|
if (value && typeOf(value) === 'object') {
|
|
488
501
|
out[key] = JSON.parse(JSON.stringify(value));
|
|
@@ -1001,6 +1014,7 @@ export default {
|
|
|
1001
1014
|
.remove {
|
|
1002
1015
|
text-align: center;
|
|
1003
1016
|
BUTTON {
|
|
1017
|
+
min-width: auto;
|
|
1004
1018
|
padding: 0px;
|
|
1005
1019
|
}
|
|
1006
1020
|
}
|
|
@@ -161,7 +161,7 @@ export default {
|
|
|
161
161
|
<div :class="containerClass">
|
|
162
162
|
<div :class="defaultSectionClass">
|
|
163
163
|
<div class="labels">
|
|
164
|
-
<div class="labels__header">
|
|
164
|
+
<div class="labels__header mb-20">
|
|
165
165
|
<div v-if="showLabelTitle">
|
|
166
166
|
<t k="labels.labels.title" />
|
|
167
167
|
</div>
|
|
@@ -330,7 +330,7 @@ export default {
|
|
|
330
330
|
:data-testid="`input-match-type-field-${index}`"
|
|
331
331
|
>
|
|
332
332
|
<div v-if="isView">
|
|
333
|
-
{{ row.matching }}
|
|
333
|
+
{{ row.matching.replace('harvester', 'cloud') }}
|
|
334
334
|
</div>
|
|
335
335
|
<LabeledSelect
|
|
336
336
|
v-else
|
|
@@ -345,7 +345,7 @@ export default {
|
|
|
345
345
|
:data-testid="`input-match-expression-key-${index}`"
|
|
346
346
|
>
|
|
347
347
|
<div v-if="isView" class="view-item-value">
|
|
348
|
-
{{ row.key }}
|
|
348
|
+
{{ row.key.replace('harvester', 'cloud') }}
|
|
349
349
|
</div>
|
|
350
350
|
<input
|
|
351
351
|
v-else-if="!hasKeySelectOptions"
|
|
@@ -413,7 +413,7 @@ export default {
|
|
|
413
413
|
v-if="!isView"
|
|
414
414
|
type="button"
|
|
415
415
|
class="btn role-link"
|
|
416
|
-
:style="{padding:'0px'}"
|
|
416
|
+
:style="{padding:'0px', minWidth: 'auto'}"
|
|
417
417
|
|
|
418
418
|
:disabled="mode==='view'"
|
|
419
419
|
:data-testid="`input-match-expression-remove-control-${index}`"
|
|
@@ -425,7 +425,6 @@ export default {
|
|
|
425
425
|
</div>
|
|
426
426
|
<div
|
|
427
427
|
v-if="!isView && showAddButton"
|
|
428
|
-
class="mmt-4"
|
|
429
428
|
>
|
|
430
429
|
<button
|
|
431
430
|
type="button"
|
|
@@ -256,7 +256,7 @@ export default {
|
|
|
256
256
|
const options = namespaces
|
|
257
257
|
.map((namespace) => ({ nameDisplay: namespace, id: namespace }))
|
|
258
258
|
.map(props.namespaceMapper || ((obj) => ({
|
|
259
|
-
label: obj.nameDisplay,
|
|
259
|
+
label: obj.nameDisplay.replace('harvester', 'cloud'),
|
|
260
260
|
value: obj.id,
|
|
261
261
|
})));
|
|
262
262
|
|
|
@@ -210,33 +210,31 @@ export default {
|
|
|
210
210
|
@remove="remove"
|
|
211
211
|
>
|
|
212
212
|
<template #default="props">
|
|
213
|
-
<div class="
|
|
214
|
-
<
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
/>
|
|
239
|
-
</div>
|
|
213
|
+
<div class="col">
|
|
214
|
+
<LabeledSelect
|
|
215
|
+
:options="affinityOptions"
|
|
216
|
+
:value="priorityDisplay(props.row.value)"
|
|
217
|
+
:label="t('workload.scheduling.affinity.priority')"
|
|
218
|
+
:mode="mode"
|
|
219
|
+
:data-testid="`node-affinity-priority-index${props.i}`"
|
|
220
|
+
@update:value="(changePriority(props.row.value))"
|
|
221
|
+
/>
|
|
222
|
+
</div>
|
|
223
|
+
<div
|
|
224
|
+
v-if="'weight' in props.row.value"
|
|
225
|
+
class="col"
|
|
226
|
+
>
|
|
227
|
+
<LabeledInput
|
|
228
|
+
v-model:value.number="props.row.value.weight"
|
|
229
|
+
:mode="mode"
|
|
230
|
+
type="number"
|
|
231
|
+
min="1"
|
|
232
|
+
max="100"
|
|
233
|
+
:label="t('workload.scheduling.affinity.weight.label')"
|
|
234
|
+
:placeholder="t('workload.scheduling.affinity.weight.placeholder')"
|
|
235
|
+
:data-testid="`node-affinity-weight-index${props.i}`"
|
|
236
|
+
@update:value="update"
|
|
237
|
+
/>
|
|
240
238
|
</div>
|
|
241
239
|
<MatchExpressions
|
|
242
240
|
:value="matchingSelectorDisplay ? props.row.value : props.row.value.matchExpressions"
|
|
@@ -254,5 +252,8 @@ export default {
|
|
|
254
252
|
</div>
|
|
255
253
|
</template>
|
|
256
254
|
|
|
257
|
-
<style>
|
|
255
|
+
<style lang="scss" scoped>
|
|
256
|
+
.weight_input{
|
|
257
|
+
margin-left: 10px;
|
|
258
|
+
}
|
|
258
259
|
</style>
|
|
@@ -370,27 +370,25 @@ export default {
|
|
|
370
370
|
@remove="remove"
|
|
371
371
|
>
|
|
372
372
|
<template #default="props">
|
|
373
|
-
<div class="
|
|
374
|
-
<
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
<
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
/>
|
|
393
|
-
</div>
|
|
373
|
+
<div class="col">
|
|
374
|
+
<LabeledSelect
|
|
375
|
+
:mode="mode"
|
|
376
|
+
:options="[t('workload.scheduling.affinity.affinityOption'),t('workload.scheduling.affinity.antiAffinityOption')]"
|
|
377
|
+
:value="props.row.value._anti ?t('workload.scheduling.affinity.antiAffinityOption') :t('workload.scheduling.affinity.affinityOption') "
|
|
378
|
+
:label="t('workload.scheduling.affinity.type')"
|
|
379
|
+
:data-testid="`pod-affinity-type-index${props.i}`"
|
|
380
|
+
@update:value="props.row.value._anti = !props.row.value._anti"
|
|
381
|
+
/>
|
|
382
|
+
</div>
|
|
383
|
+
<div class="col">
|
|
384
|
+
<LabeledSelect
|
|
385
|
+
:mode="mode"
|
|
386
|
+
:options="[t('workload.scheduling.affinity.preferred'),t('workload.scheduling.affinity.required')]"
|
|
387
|
+
:value="priorityDisplay(props.row.value)"
|
|
388
|
+
:label="t('workload.scheduling.affinity.priority')"
|
|
389
|
+
:data-testid="`pod-affinity-priority-index${props.i}`"
|
|
390
|
+
@update:value="changePriority(props.row.value, props.i)"
|
|
391
|
+
/>
|
|
394
392
|
</div>
|
|
395
393
|
<div class="row mb-20">
|
|
396
394
|
<RadioGroup
|
|
@@ -160,7 +160,7 @@ export default {
|
|
|
160
160
|
<div class="row">
|
|
161
161
|
<div
|
|
162
162
|
data-testid="input-probe-kind"
|
|
163
|
-
class="
|
|
163
|
+
class="span-9-of-23"
|
|
164
164
|
>
|
|
165
165
|
<LabeledSelect
|
|
166
166
|
v-model:value="kind"
|
|
@@ -240,7 +240,7 @@ export default {
|
|
|
240
240
|
</div>
|
|
241
241
|
</div>
|
|
242
242
|
|
|
243
|
-
<div class="
|
|
243
|
+
<div class="span-1-of-13">
|
|
244
244
|
<hr
|
|
245
245
|
v-if="kind && kind!=='none'"
|
|
246
246
|
:style="{'position':'relative', 'margin':'0px'}"
|
|
@@ -252,12 +252,12 @@ export default {
|
|
|
252
252
|
<!-- none -->
|
|
253
253
|
<div
|
|
254
254
|
v-if="!isNone"
|
|
255
|
-
class="
|
|
255
|
+
class="span-11-of-23 ml-30"
|
|
256
256
|
>
|
|
257
257
|
<div class="row">
|
|
258
258
|
<div
|
|
259
259
|
data-testid="input-probe-periodSeconds"
|
|
260
|
-
class="col
|
|
260
|
+
class="col"
|
|
261
261
|
>
|
|
262
262
|
<UnitInput
|
|
263
263
|
v-model:value="probe.periodSeconds"
|
|
@@ -269,9 +269,12 @@ export default {
|
|
|
269
269
|
@update:value="update"
|
|
270
270
|
/>
|
|
271
271
|
</div>
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<div class="row">
|
|
272
275
|
<div
|
|
273
276
|
data-testid="input-probe-initialDelaySeconds"
|
|
274
|
-
class="col
|
|
277
|
+
class="col"
|
|
275
278
|
>
|
|
276
279
|
<UnitInput
|
|
277
280
|
v-model:value="probe.initialDelaySeconds"
|
|
@@ -283,9 +286,11 @@ export default {
|
|
|
283
286
|
@update:value="update"
|
|
284
287
|
/>
|
|
285
288
|
</div>
|
|
289
|
+
</div>
|
|
290
|
+
<div class="row">
|
|
286
291
|
<div
|
|
287
292
|
data-testid="input-probe-timeoutSeconds"
|
|
288
|
-
class="col
|
|
293
|
+
class="col"
|
|
289
294
|
>
|
|
290
295
|
<UnitInput
|
|
291
296
|
v-model:value="probe.timeoutSeconds"
|
|
@@ -299,12 +304,10 @@ export default {
|
|
|
299
304
|
</div>
|
|
300
305
|
</div>
|
|
301
306
|
|
|
302
|
-
<div class="spacer-small" />
|
|
303
|
-
|
|
304
307
|
<div class="row">
|
|
305
308
|
<div
|
|
306
309
|
data-testid="input-probe-successThreshold"
|
|
307
|
-
class="col
|
|
310
|
+
class="col"
|
|
308
311
|
>
|
|
309
312
|
<LabeledInput
|
|
310
313
|
v-model:value.number="probe.successThreshold"
|
|
@@ -316,9 +319,11 @@ export default {
|
|
|
316
319
|
@update:value="update"
|
|
317
320
|
/>
|
|
318
321
|
</div>
|
|
322
|
+
</div>
|
|
323
|
+
<div class="row">
|
|
319
324
|
<div
|
|
320
325
|
data-testid="input-probe-failureThreshold"
|
|
321
|
-
class="col
|
|
326
|
+
class="col"
|
|
322
327
|
>
|
|
323
328
|
<LabeledInput
|
|
324
329
|
v-model:value.number="probe.failureThreshold"
|
|
@@ -333,7 +338,6 @@ export default {
|
|
|
333
338
|
</div>
|
|
334
339
|
|
|
335
340
|
<template v-if="kind === 'HTTP' || kind === 'HTTPS'">
|
|
336
|
-
<div class="spacer-small" />
|
|
337
341
|
|
|
338
342
|
<div class="row">
|
|
339
343
|
<div class="col span-12">
|
|
@@ -57,7 +57,7 @@ export default {
|
|
|
57
57
|
</script>
|
|
58
58
|
<template>
|
|
59
59
|
<div>
|
|
60
|
-
<div style="justify-content:
|
|
60
|
+
<div style="justify-content: space-between;" class="headers mb-10">
|
|
61
61
|
<div style="width: 400px;">
|
|
62
62
|
<label>{{ t('resourceQuota.headers.resourceType') }}</label>
|
|
63
63
|
</div>
|
|
@@ -125,7 +125,7 @@ export default {
|
|
|
125
125
|
</div>
|
|
126
126
|
</div>
|
|
127
127
|
<div class="row">
|
|
128
|
-
<div class="
|
|
128
|
+
<div class="span-12">
|
|
129
129
|
<Banner :color="(matchingResources.none ? 'warning' : 'success')">
|
|
130
130
|
<span v-clean-html="t('generic.selectors.matchingResources.matchesSome', matchingResources)" />
|
|
131
131
|
</Banner>
|
|
@@ -122,9 +122,7 @@ export default {
|
|
|
122
122
|
<div>
|
|
123
123
|
<div class="spacer" />
|
|
124
124
|
<div class="row mb-10">
|
|
125
|
-
<h3
|
|
126
|
-
{{ t('workload.serviceAccountName.label') }}
|
|
127
|
-
</h3>
|
|
125
|
+
<h3>{{ t('workload.serviceAccountName.label') }}</h3>
|
|
128
126
|
</div>
|
|
129
127
|
<div class="row span-6">
|
|
130
128
|
<LabeledSelect
|