dashboard-shell-shell 3.0.5-test.5 → 3.0.5-test.50
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/brand/csp/favicon.png +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/base/_variables.scss +5 -5
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +2 -2
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +5 -1
- package/assets/styles/themes/_light.scss +3 -3
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +64 -0
- package/assets/translations/zh-hans.yaml +206 -21
- package/components/ButtonDropdown.vue +3 -1
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ConsumptionGauge.vue +1 -1
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CruResource.vue +3 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +10 -7
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
- package/components/Drawer/ResourceDetailDrawer/index.vue +3 -2
- package/components/ExplorerMembers.vue +10 -1
- package/components/GlobalRoleBindings.vue +69 -114
- package/components/PodSecurityAdmission.vue +1 -1
- package/components/PromptRemove.vue +23 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/Metadata/index.vue +1 -0
- package/components/Resource/Detail/TitleBar/Top.vue +2 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +42 -23
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +8 -7
- package/components/ResourceDetail/legacy.vue +15 -15
- package/components/ResourceList/Masthead.vue +13 -17
- package/components/ResourceTable.vue +16 -0
- package/components/SideNav.vue +21 -21
- package/components/SingleClusterInfo.vue +2 -1
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +55 -19
- package/components/Tabbed/index.vue +7 -2
- package/components/auth/Principal.vue +16 -8
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +15 -236
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- package/components/form/ClusterAppearance.vue +4 -3
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +20 -2
- package/components/form/LabeledSelect.vue +3 -1
- package/components/form/Labels.vue +2 -2
- package/components/form/MatchExpressions.vue +4 -4
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +60 -41
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +4 -2
- package/components/form/Networking.vue +6 -9
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +66 -48
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +7 -1
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +6 -0
- package/components/nav/Header.vue +17 -137
- package/components/nav/NamespaceFilter.vue +15 -21
- package/components/nav/TopLevelMenu.vue +99 -125
- package/components/nav/Type.vue +11 -3
- package/config/menuRouteMap.js +10 -0
- package/config/product/explorer.js +32 -10
- package/config/product/manager.js +28 -17
- package/config/router/navigation-guards/index.js +61 -3
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- package/dialog/RollbackWorkloadDialog.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- 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/configmap.vue +4 -0
- package/edit/networking.k8s.io.ingress/Certificate.vue +14 -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/persistentvolume/index.vue +3 -1
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.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 +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +19 -15
- 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 +20 -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/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
- package/mixins/create-edit-view/impl.js +10 -0
- package/models/provisioning.cattle.io.cluster.js +19 -18
- package/models/workload.js +2 -2
- package/package.json +1 -1
- package/pages/account/index.vue +96 -115
- package/pages/auth/login.vue +1 -1
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/auth/roles/index.vue +65 -8
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +2 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +55 -13
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/actions.js +1 -1
- package/plugins/dashboard-store/resource-class.js +28 -27
- package/rancher-components/Banner/Banner.vue +14 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/scripts/build-pkg.sh +18 -23
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +1 -0
- package/store/type-map.js +1 -3
- package/types/shell/index.d.ts +12 -30
- package/utils/error.js +26 -4
- package/utils/errorTranslate.json +390 -6
- package/utils/errorTranslateNew.json +39 -0
- package/utils/roleFiltering.js +33 -0
- package/vue.config.js +1 -1
|
@@ -170,7 +170,7 @@ export default {
|
|
|
170
170
|
>
|
|
171
171
|
<template #column-headers>
|
|
172
172
|
<div class="box mb-0">
|
|
173
|
-
<div class="column-headers row" style="width:
|
|
173
|
+
<div class="column-headers row" :style="{ width: isView ? '100%' : 'calc(100% - 100px)'}">
|
|
174
174
|
<div class="col span-6">
|
|
175
175
|
<label class="text-label">{{ t('membershipEditor.user') }}</label>
|
|
176
176
|
</div>
|
|
@@ -181,7 +181,7 @@ export default {
|
|
|
181
181
|
</div>
|
|
182
182
|
</template>
|
|
183
183
|
<template #columns="{row, i}">
|
|
184
|
-
<div class="columns row">
|
|
184
|
+
<div style="width: 100%;" class="columns row">
|
|
185
185
|
<div class="col span-6">
|
|
186
186
|
<Principal
|
|
187
187
|
:value="row.value.principalId"
|
|
@@ -191,7 +191,7 @@ export default {
|
|
|
191
191
|
:data-testid="`role-item-${i}`"
|
|
192
192
|
class="col span-6 role"
|
|
193
193
|
>
|
|
194
|
-
{{ row.value.roleDisplay }}
|
|
194
|
+
{{ $store.getters['i18n/withFallback'](`customConversion.${row.value.roleDisplay}`, row.value.roleDisplay) }}
|
|
195
195
|
</div>
|
|
196
196
|
</div>
|
|
197
197
|
</template>
|
|
@@ -206,7 +206,7 @@ export default {
|
|
|
206
206
|
</button>
|
|
207
207
|
</template>
|
|
208
208
|
<template #remove-button="{remove, i}">
|
|
209
|
-
<
|
|
209
|
+
<div style="width: 100px;" v-if="(isCreate && i === 0) || isView" />
|
|
210
210
|
<button
|
|
211
211
|
v-else
|
|
212
212
|
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
|
|
|
@@ -514,7 +514,9 @@ export default {
|
|
|
514
514
|
</div>
|
|
515
515
|
|
|
516
516
|
<!-- 自定义插槽,可插入额外内容 -->
|
|
517
|
-
|
|
517
|
+
<div :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'">
|
|
518
|
+
<slot name="customize" />
|
|
519
|
+
</div>
|
|
518
520
|
<!-- <div
|
|
519
521
|
v-show="!descriptionHidden"
|
|
520
522
|
:data-testid="componentTestid + '-description'"
|
|
@@ -160,7 +160,7 @@ export default {
|
|
|
160
160
|
<div>
|
|
161
161
|
<div>
|
|
162
162
|
<h3>{{ t('workload.container.titles.networkSettings') }}</h3>
|
|
163
|
-
<div class="row
|
|
163
|
+
<div class="row">
|
|
164
164
|
<div class="col span-6">
|
|
165
165
|
<LabeledSelect
|
|
166
166
|
v-model:value="networkMode"
|
|
@@ -205,12 +205,11 @@ export default {
|
|
|
205
205
|
</div>
|
|
206
206
|
</div>
|
|
207
207
|
</div>
|
|
208
|
-
<div class="spacer" />
|
|
209
208
|
|
|
210
|
-
<div>
|
|
209
|
+
<div class="mt-20">
|
|
211
210
|
<h3>{{ t('workload.networking.dns') }}</h3>
|
|
212
211
|
<div class="row">
|
|
213
|
-
<div class="
|
|
212
|
+
<div class="span-6">
|
|
214
213
|
<ArrayList
|
|
215
214
|
key="dnsNameservers"
|
|
216
215
|
v-model:value="nameservers"
|
|
@@ -222,7 +221,7 @@ export default {
|
|
|
222
221
|
@update:value="update"
|
|
223
222
|
/>
|
|
224
223
|
</div>
|
|
225
|
-
<div class="
|
|
224
|
+
<div class="span-6">
|
|
226
225
|
<ArrayList
|
|
227
226
|
key="dnsSearches"
|
|
228
227
|
v-model:value="searches"
|
|
@@ -236,9 +235,8 @@ export default {
|
|
|
236
235
|
</div>
|
|
237
236
|
</div>
|
|
238
237
|
</div>
|
|
239
|
-
<div class="spacer" />
|
|
240
238
|
|
|
241
|
-
<div
|
|
239
|
+
<div>
|
|
242
240
|
<div class="row">
|
|
243
241
|
<KeyValue
|
|
244
242
|
v-model:value="options"
|
|
@@ -254,9 +252,8 @@ export default {
|
|
|
254
252
|
/>
|
|
255
253
|
</div>
|
|
256
254
|
</div>
|
|
257
|
-
<div class="spacer" />
|
|
258
255
|
|
|
259
|
-
<div class="row mt-
|
|
256
|
+
<div class="row mt-40">
|
|
260
257
|
<div class="col span-12">
|
|
261
258
|
<KeyValue
|
|
262
259
|
key="hostAliases"
|
|
@@ -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
|
|
@@ -438,7 +436,7 @@ export default {
|
|
|
438
436
|
@update:value="e=>updateLabelSelector(e, props)"
|
|
439
437
|
/>
|
|
440
438
|
<div class="row mt-20">
|
|
441
|
-
<div class="col
|
|
439
|
+
<div class="col">
|
|
442
440
|
<LabeledSelect
|
|
443
441
|
v-if="hasNodes"
|
|
444
442
|
v-model:value="props.row.value.topologyKey"
|
|
@@ -466,9 +464,11 @@ export default {
|
|
|
466
464
|
@update:value="update"
|
|
467
465
|
/>
|
|
468
466
|
</div>
|
|
467
|
+
</div>
|
|
468
|
+
<div class="row">
|
|
469
469
|
<div
|
|
470
470
|
v-if="'weight' in props.row.value"
|
|
471
|
-
class="col
|
|
471
|
+
class="col"
|
|
472
472
|
>
|
|
473
473
|
<LabeledInput
|
|
474
474
|
v-model:value.number="props.row.value.weight"
|
|
@@ -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">
|
|
@@ -166,29 +166,44 @@ export default {
|
|
|
166
166
|
value: this.purifyOption(role.id),
|
|
167
167
|
}));
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
169
|
+
let optionList = [{
|
|
170
|
+
label: this.t('members.clusterPermissions.project-tenant.label'),
|
|
171
|
+
description: this.t('members.clusterPermissions.project-tenant.description'),
|
|
172
|
+
value: 'project-tenant'
|
|
173
|
+
}];
|
|
174
|
+
|
|
175
|
+
if (sessionStorage.getItem('TOPLEVELPERMISSIONS') === 'superadmin') {
|
|
176
|
+
optionList = [
|
|
177
|
+
{
|
|
178
|
+
label: this.t('members.clusterPermissions.project-tenant.label'),
|
|
179
|
+
description: this.t('members.clusterPermissions.project-tenant.description'),
|
|
180
|
+
value: 'project-tenant'
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
label: this.t('projectMembers.projectPermissions.owner.label'),
|
|
184
|
+
description: this.t('projectMembers.projectPermissions.owner.description'),
|
|
185
|
+
value: 'owner'
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
label: this.t('projectMembers.projectPermissions.member.label'),
|
|
189
|
+
description: this.t('projectMembers.projectPermissions.member.description'),
|
|
190
|
+
value: 'member'
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
label: this.t('projectMembers.projectPermissions.readOnly.label'),
|
|
194
|
+
description: this.t('projectMembers.projectPermissions.readOnly.description'),
|
|
195
|
+
value: 'read-only'
|
|
196
|
+
},
|
|
197
|
+
...customRoles,
|
|
198
|
+
{
|
|
199
|
+
label: this.t('projectMembers.projectPermissions.custom.label'),
|
|
200
|
+
description: this.t('projectMembers.projectPermissions.custom.description'),
|
|
201
|
+
value: 'custom'
|
|
202
|
+
}
|
|
203
|
+
];
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return optionList
|
|
192
207
|
},
|
|
193
208
|
customPermissionsUpdate() {
|
|
194
209
|
return this.customPermissions.reduce((acc, customPermissionsItem) => {
|
|
@@ -284,33 +299,36 @@ export default {
|
|
|
284
299
|
</div>
|
|
285
300
|
</template>
|
|
286
301
|
<template v-slot:body>
|
|
287
|
-
<
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
class="custom-permissions ml-20 mt-10"
|
|
296
|
-
:class="{'two-column': useTwoColumnsForCustom}"
|
|
297
|
-
>
|
|
302
|
+
<div style="max-height: 250px; overflow: auto;">
|
|
303
|
+
<RadioGroup
|
|
304
|
+
v-model:value="value.permissionGroup"
|
|
305
|
+
data-testid="permission-options"
|
|
306
|
+
:options="options"
|
|
307
|
+
:flexDirection="'column'"
|
|
308
|
+
name="permission-group"
|
|
309
|
+
/>
|
|
298
310
|
<div
|
|
299
|
-
v-
|
|
300
|
-
|
|
311
|
+
v-if="value.permissionGroup === 'custom'"
|
|
312
|
+
class="custom-permissions ml-20 mt-10"
|
|
313
|
+
:class="{'two-column': useTwoColumnsForCustom}"
|
|
301
314
|
>
|
|
302
|
-
<
|
|
303
|
-
v-
|
|
304
|
-
:
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
315
|
+
<div
|
|
316
|
+
v-for="(permission, i) in customPermissionsUpdate"
|
|
317
|
+
:key="i"
|
|
318
|
+
>
|
|
319
|
+
<Checkbox
|
|
320
|
+
v-model:value="permission.value"
|
|
321
|
+
:data-testid="`custom-permission-${i}`"
|
|
322
|
+
:disabled="permission.locked"
|
|
323
|
+
class="mb-5"
|
|
324
|
+
:label="permission.label"
|
|
325
|
+
/>
|
|
326
|
+
<i
|
|
327
|
+
v-if="permission.locked"
|
|
328
|
+
v-clean-tooltip="permission.tooltip"
|
|
329
|
+
class="icon icon-lock icon-fw"
|
|
330
|
+
/>
|
|
331
|
+
</div>
|
|
314
332
|
</div>
|
|
315
333
|
</div>
|
|
316
334
|
</template>
|
|
@@ -72,13 +72,13 @@ export default {
|
|
|
72
72
|
<template>
|
|
73
73
|
<div>
|
|
74
74
|
<div class="headers mb-10">
|
|
75
|
-
<div style="width:
|
|
75
|
+
<div style="width: 450px;">
|
|
76
76
|
<label>{{ t('resourceQuota.headers.resourceType') }}</label>
|
|
77
77
|
</div>
|
|
78
|
-
<div style="width:
|
|
78
|
+
<div style="width: 450px;">
|
|
79
79
|
<label>{{ t('resourceQuota.headers.projectResourceAvailability') }}</label>
|
|
80
80
|
</div>
|
|
81
|
-
<div style="width:
|
|
81
|
+
<div style="width: 450px;">
|
|
82
82
|
<label>{{ t('resourceQuota.headers.limit') }}</label>
|
|
83
83
|
</div>
|
|
84
84
|
</div>
|
|
@@ -101,7 +101,7 @@ export default {
|
|
|
101
101
|
.headers {
|
|
102
102
|
display: flex;
|
|
103
103
|
flex-direction: row;
|
|
104
|
-
justify-content:
|
|
104
|
+
justify-content: left;
|
|
105
105
|
align-items: center;
|
|
106
106
|
border-bottom: 1px solid var(--border);
|
|
107
107
|
height: 30px;
|
|
@@ -175,13 +175,15 @@ export default {
|
|
|
175
175
|
v-if="typeOption"
|
|
176
176
|
class="rowNew"
|
|
177
177
|
>
|
|
178
|
-
<
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
178
|
+
<div style="width: 450px;">
|
|
179
|
+
<Select
|
|
180
|
+
:mode="mode"
|
|
181
|
+
:value="type"
|
|
182
|
+
:disabled="true"
|
|
183
|
+
:options="types"
|
|
184
|
+
/>
|
|
185
|
+
</div>
|
|
186
|
+
<div style="width: 450px;" class="resource-availability">
|
|
185
187
|
<PercentageBar
|
|
186
188
|
v-clean-tooltip="tooltip"
|
|
187
189
|
class="percentage-bar"
|
|
@@ -190,7 +192,7 @@ export default {
|
|
|
190
192
|
:color-stops="{'100': '--primary'}"
|
|
191
193
|
/>
|
|
192
194
|
</div>
|
|
193
|
-
<div style="width:
|
|
195
|
+
<div style="width: 450px;">
|
|
194
196
|
<UnitInput
|
|
195
197
|
:value="value.limit[type]"
|
|
196
198
|
:mode="mode"
|
|
@@ -212,7 +214,7 @@ export default {
|
|
|
212
214
|
.rowNew {
|
|
213
215
|
margin-bottom: 10px;
|
|
214
216
|
display: flex;
|
|
215
|
-
justify-content:
|
|
217
|
+
justify-content: left;
|
|
216
218
|
|
|
217
219
|
& > * {
|
|
218
220
|
width: 400px;
|
|
@@ -57,14 +57,14 @@ export default {
|
|
|
57
57
|
</script>
|
|
58
58
|
<template>
|
|
59
59
|
<div>
|
|
60
|
-
<div style="justify-content:
|
|
61
|
-
<div style="width:
|
|
60
|
+
<div style="justify-content: left;" class="headers mb-10">
|
|
61
|
+
<div style="width: 450px;">
|
|
62
62
|
<label>{{ t('resourceQuota.headers.resourceType') }}</label>
|
|
63
63
|
</div>
|
|
64
|
-
<div style="width:
|
|
64
|
+
<div style="width: 450px;">
|
|
65
65
|
<label>{{ t('resourceQuota.headers.projectLimit') }}</label>
|
|
66
66
|
</div>
|
|
67
|
-
<div style="width:
|
|
67
|
+
<div style="width: 450px;">
|
|
68
68
|
<label>{{ t('resourceQuota.headers.namespaceDefaultLimit') }}</label>
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
@@ -72,41 +72,47 @@ export default {
|
|
|
72
72
|
v-if="typeOption"
|
|
73
73
|
class="rowNew"
|
|
74
74
|
>
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
75
|
+
<div style="width: 450px;">
|
|
76
|
+
<Select
|
|
77
|
+
:value="type"
|
|
78
|
+
:mode="mode"
|
|
79
|
+
:options="types"
|
|
80
|
+
data-testid="projectrow-type-input"
|
|
81
|
+
@update:value="updateType($event)"
|
|
82
|
+
/>
|
|
83
|
+
</div>
|
|
84
|
+
<div style="width: 450px;">
|
|
85
|
+
<UnitInput
|
|
86
|
+
:value="resourceQuotaLimit[type]"
|
|
87
|
+
:mode="mode"
|
|
88
|
+
:placeholder="typeOption.placeholder"
|
|
89
|
+
:increment="typeOption.increment"
|
|
90
|
+
:input-exponent="typeOption.inputExponent"
|
|
91
|
+
:base-unit="typeOption.baseUnit"
|
|
92
|
+
:output-modifier="true"
|
|
93
|
+
data-testid="projectrow-project-quota-input"
|
|
94
|
+
@update:value="updateQuotaLimit('resourceQuota', type, $event)"
|
|
95
|
+
/>
|
|
96
|
+
</div>
|
|
97
|
+
<div style="width: 450px;">
|
|
98
|
+
<UnitInput
|
|
99
|
+
:value="namespaceDefaultResourceQuotaLimit[type]"
|
|
100
|
+
:mode="mode"
|
|
101
|
+
:placeholder="typeOption.placeholder"
|
|
102
|
+
:increment="typeOption.increment"
|
|
103
|
+
:input-exponent="typeOption.inputExponent"
|
|
104
|
+
:base-unit="typeOption.baseUnit"
|
|
105
|
+
:output-modifier="true"
|
|
106
|
+
data-testid="projectrow-namespace-quota-input"
|
|
107
|
+
@update:value="updateQuotaLimit('namespaceDefaultResourceQuota', type, $event)"
|
|
108
|
+
/>
|
|
109
|
+
</div>
|
|
104
110
|
</div>
|
|
105
111
|
</template>
|
|
106
112
|
|
|
107
113
|
<style lang='scss' scoped>
|
|
108
114
|
.rowNew {
|
|
109
115
|
display: flex;
|
|
110
|
-
justify-content:
|
|
116
|
+
justify-content: left;
|
|
111
117
|
}
|
|
112
118
|
</style>
|