@rancher/shell 3.0.9-rc.1 → 3.0.9-rc.3
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/styles/base/_color.scss +1 -0
- package/assets/styles/base/_typography.scss +14 -5
- package/assets/styles/themes/_light.scss +1 -1
- package/assets/styles/themes/_modern.scss +1 -1
- package/assets/translations/en-us.yaml +104 -33
- package/assets/translations/zh-hans.yaml +13 -2
- package/components/ActionMenu.vue +7 -8
- package/components/ActionMenuShell.vue +23 -24
- package/components/CodeMirror.vue +4 -3
- package/components/DetailText.vue +54 -7
- package/components/Drawer/Chrome.vue +11 -4
- package/components/Drawer/DrawerCard.vue +19 -0
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +3 -11
- package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +2 -2
- package/components/Drawer/ResourceDetailDrawer/index.vue +3 -20
- package/components/Drawer/types.ts +1 -0
- package/components/DynamicContent/DynamicContentCloseButton.vue +2 -2
- package/components/LocaleSelector.vue +1 -1
- package/components/Markdown.vue +1 -1
- package/components/PopoverCard.vue +3 -3
- package/components/Resource/Detail/Card/ExtrasCard.vue +39 -0
- package/components/Resource/Detail/Card/Scaler.vue +10 -2
- package/components/Resource/Detail/Card/StateCard/__tests__/composables.test.ts +142 -0
- package/components/Resource/Detail/Card/StateCard/composables.ts +41 -11
- package/components/Resource/Detail/Card/StateCard/index.vue +3 -9
- package/components/Resource/Detail/Card/StateCard/types.ts +6 -0
- package/components/Resource/Detail/Card/{PodsCard → StatusCard}/index.vue +14 -10
- package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +24 -25
- package/components/Resource/Detail/Cards.vue +27 -0
- package/components/Resource/Detail/Masthead/__tests__/index.test.ts +70 -0
- package/components/Resource/Detail/Masthead/index.vue +5 -0
- package/components/Resource/Detail/Metadata/KeyValueRow.vue +4 -2
- package/components/Resource/Detail/ResourcePopover/ResourcePopoverCard.vue +2 -2
- package/components/Resource/Detail/ResourceRow.types.ts +14 -0
- package/components/Resource/Detail/ResourceRow.vue +23 -35
- package/components/Resource/Detail/StatusRow.vue +5 -2
- package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +38 -7
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +106 -2
- package/components/Resource/Detail/TitleBar/composables.ts +2 -1
- package/components/Resource/Detail/TitleBar/index.vue +41 -6
- package/components/ResourceDetail/Masthead/__tests__/index.test.ts +49 -1
- package/components/ResourceDetail/Masthead/__tests__/latest.test.ts +85 -0
- package/components/ResourceDetail/Masthead/index.vue +1 -0
- package/components/ResourceDetail/Masthead/latest.vue +8 -1
- package/components/ResourceDetail/Masthead/legacy.vue +1 -1
- package/components/ResourceTable.vue +1 -1
- package/components/Setting.vue +1 -1
- package/components/SortableTable/index.vue +25 -0
- package/components/SortableTable/selection.js +25 -12
- package/components/SortableTable/sorting.js +1 -1
- package/components/Tabbed/Tab.vue +5 -0
- package/components/Tabbed/index.vue +40 -9
- package/components/Window/ContainerShell.vue +10 -13
- package/components/__tests__/ProjectRow.test.ts +102 -15
- package/components/fleet/FleetClusterTargets/TargetsList.vue +47 -29
- package/components/fleet/FleetClusterTargets/index.vue +82 -29
- package/components/fleet/FleetClusters.vue +26 -12
- package/components/fleet/FleetGitRepoPaths.vue +2 -2
- package/components/fleet/FleetResources.vue +14 -0
- package/components/fleet/FleetValuesFrom.vue +2 -2
- package/components/fleet/__tests__/FleetClusterTargets.test.ts +531 -0
- package/components/fleet/__tests__/FleetClusters.test.ts +576 -0
- package/components/fleet/dashboard/ResourceDetails.vue +96 -123
- package/components/form/Conditions.vue +1 -15
- package/components/form/HookOption.vue +5 -0
- package/components/form/LabeledSelect.vue +1 -1
- package/components/form/LifecycleHooks.vue +2 -6
- package/components/form/ResourceLabeledSelect.vue +12 -1
- package/components/form/ResourceQuota/Project.vue +59 -8
- package/components/form/ResourceQuota/ProjectRow.vue +116 -21
- package/components/form/ResourceQuota/shared.js +42 -18
- package/components/form/SeccompProfile.vue +113 -0
- package/components/form/Security.vue +244 -133
- package/components/form/__tests__/LabeledSelect.test.ts +1 -1
- package/components/form/__tests__/SeccompProfile.test.js +124 -0
- package/components/form/__tests__/Security.test.ts +125 -37
- package/components/formatter/Autoscaler.vue +2 -2
- package/components/formatter/FleetSummaryGraph.vue +4 -1
- package/components/formatter/LinkName.vue +3 -2
- package/components/nav/Group.vue +5 -0
- package/components/nav/Header.vue +3 -3
- package/components/nav/HeaderPageActionMenu.vue +1 -1
- package/components/nav/NamespaceFilter.vue +6 -6
- package/components/nav/NotificationCenter/index.vue +1 -1
- package/components/nav/TopLevelMenu.helper.ts +41 -16
- package/components/nav/TopLevelMenu.vue +45 -25
- package/components/nav/WorkspaceSwitcher.vue +1 -1
- package/components/nav/__tests__/TopLevelMenu.helper.test.ts +277 -0
- package/components/nav/__tests__/TopLevelMenu.test.ts +160 -4
- package/components/templates/default.vue +0 -3
- package/components/templates/home.vue +0 -3
- package/components/templates/plain.vue +0 -3
- package/composables/useClickOutside.ts +1 -1
- package/config/product/explorer.js +2 -3
- package/config/table-headers.js +9 -7
- package/config/types.js +45 -9
- package/detail/__tests__/workload.test.ts +8 -16
- package/detail/catalog.cattle.io.app.vue +5 -0
- package/detail/fleet.cattle.io.cluster.vue +6 -0
- package/detail/management.cattle.io.oidcclient.vue +15 -4
- package/detail/workload/index.vue +7 -109
- package/edit/__tests__/management.cattle.io.project.test.js +137 -0
- package/edit/__tests__/projectsecret.test.ts +42 -0
- package/edit/auth/__tests__/oidc.test.ts +50 -0
- package/edit/auth/oidc.vue +68 -44
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +140 -59
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +41 -5
- package/edit/management.cattle.io.project.vue +36 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +16 -3
- package/edit/projectsecret.vue +29 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +89 -200
- package/edit/provisioning.cattle.io.cluster/__tests__/Networking.test.ts +58 -17
- package/edit/provisioning.cattle.io.cluster/rke2.vue +11 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +3 -63
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +82 -14
- package/edit/workload/__tests__/index.test.ts +3 -4
- package/edit/workload/index.vue +47 -28
- package/edit/workload/mixins/workload.js +66 -31
- package/initialize/install-plugins.js +0 -2
- package/list/catalog.cattle.io.clusterrepo.vue +1 -1
- package/list/projectsecret.vue +2 -2
- package/machine-config/__tests__/vmwarevsphere.test.ts +64 -0
- package/machine-config/amazonec2.vue +2 -2
- package/machine-config/vmwarevsphere.vue +58 -4
- package/mixins/__tests__/chart.test.ts +63 -0
- package/mixins/chart.js +56 -51
- package/models/__tests__/catalog.cattle.io.app.test.ts +33 -0
- package/models/__tests__/workload.test.ts +333 -0
- package/models/catalog.cattle.io.app.js +8 -0
- package/models/management.cattle.io.cluster.js +22 -30
- package/models/pod.js +14 -0
- package/models/provisioning.cattle.io.cluster.js +2 -2
- package/models/secret.js +1 -1
- package/models/workload.js +93 -27
- package/package.json +4 -4
- package/pages/__tests__/diagnostic.test.ts +71 -0
- package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +91 -0
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/explorer/EventsTable.vue +2 -2
- package/pages/c/_cluster/explorer/tools/index.vue +23 -5
- package/pages/c/_cluster/fleet/index.vue +14 -8
- package/pages/c/_cluster/manager/hostedprovider/index.vue +1 -19
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +18 -5
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
- package/pages/c/_cluster/uiplugins/index.vue +41 -9
- package/pages/diagnostic.vue +17 -3
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +234 -0
- package/plugins/dashboard-store/actions.js +9 -8
- package/plugins/dashboard-store/resource-class.js +97 -1
- package/plugins/steve/__tests__/revision.test.ts +84 -0
- package/plugins/steve/__tests__/steve-pagination-utils.test.ts +30 -0
- package/plugins/steve/__tests__/subscribe.spec.ts +134 -0
- package/plugins/steve/revision.ts +26 -0
- package/plugins/steve/steve-pagination-utils.ts +6 -5
- package/plugins/steve/subscribe.js +188 -49
- package/plugins/subscribe-events.ts +2 -2
- package/rancher-components/Form/Checkbox/Checkbox.vue +13 -0
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -1
- package/rancher-components/Pill/RcCounterBadge/RcCounterBadge.vue +2 -1
- package/rancher-components/Pill/RcStatusBadge/RcStatusBadge.vue +3 -1
- package/rancher-components/Pill/RcStatusIndicator/RcStatusIndicator.vue +3 -1
- package/rancher-components/Pill/RcTag/RcTag.vue +1 -1
- package/rancher-components/Pill/index.ts +4 -0
- package/rancher-components/RcButton/RcButton.test.ts +53 -9
- package/rancher-components/RcButton/RcButton.vue +217 -25
- package/rancher-components/RcButton/types.ts +27 -1
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +4 -4
- package/rancher-components/RcDropdown/types.ts +3 -3
- package/rancher-components/RcIcon/RcIcon.test.ts +42 -0
- package/rancher-components/RcIcon/RcIcon.vue +9 -6
- package/rancher-components/RcIcon/types.ts +13 -9
- package/rancher-components/RcItemCard/RcItemCard.test.ts +16 -6
- package/rancher-components/RcItemCard/RcItemCard.vue +13 -23
- package/rancher-components/utils/status.test.ts +10 -15
- package/rancher-components/utils/status.ts +5 -6
- package/store/__tests__/auth.test.ts +21 -5
- package/store/auth.js +6 -3
- package/store/aws.js +18 -12
- package/store/index.js +4 -8
- package/store/type-map.utils.ts +1 -1
- package/types/kube/kube-api.ts +29 -3
- package/types/rancher/steve.api.ts +40 -0
- package/types/shell/index.d.ts +262 -156
- package/types/store/pagination.types.ts +1 -0
- package/types/store/subscribe-events.types.ts +1 -0
- package/utils/__tests__/azure.test.ts +56 -0
- package/utils/__tests__/back-off.test.ts +364 -245
- package/utils/__tests__/error.test.ts +44 -0
- package/utils/__tests__/fleet.test.ts +8 -1
- package/utils/__tests__/pagination-wrapper.test.ts +167 -0
- package/utils/__tests__/version.test.ts +55 -1
- package/utils/azure.js +12 -0
- package/utils/back-off.ts +302 -69
- package/utils/dynamic-content/__tests__/index.test.ts +1 -1
- package/utils/dynamic-content/__tests__/new-release.test.ts +48 -7
- package/utils/dynamic-content/__tests__/support-notice.test.ts +1 -4
- package/utils/dynamic-content/index.ts +1 -6
- package/utils/dynamic-content/new-release.ts +5 -3
- package/utils/dynamic-content/types.d.ts +0 -1
- package/utils/error.js +9 -0
- package/utils/fleet.ts +2 -2
- package/utils/inactivity.ts +2 -3
- package/utils/pagination-wrapper.ts +99 -15
- package/utils/validators/formRules/index.ts +3 -0
- package/utils/version.js +38 -0
- package/components/auth/AzureWarning.vue +0 -77
- /package/components/Resource/Detail/{Card/PodsCard/Bubble.vue → Bubble.vue} +0 -0
- /package/components/Resource/Detail/Card/{PodsCard → StatusCard}/composable.ts +0 -0
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
@mixin h-css() {
|
|
2
|
+
color: var(--body-text);
|
|
3
|
+
font-style: normal;
|
|
4
|
+
font-weight: 400;
|
|
5
|
+
margin: 0 0 10px 0;
|
|
6
|
+
font-family: var(--title-font-family, unset);
|
|
7
|
+
}
|
|
8
|
+
|
|
1
9
|
HTML, BODY {
|
|
2
10
|
font-family: $body-font;
|
|
3
11
|
font-size: 14px;
|
|
4
12
|
}
|
|
5
13
|
|
|
6
14
|
H1, H2, H3, H4, H5, H6 {
|
|
7
|
-
|
|
8
|
-
font-style: normal;
|
|
9
|
-
font-weight: 400;
|
|
10
|
-
margin: 0 0 10px 0;
|
|
11
|
-
font-family: var(--title-font-family, unset); // Use the var if set, otherwise unset and use the font defined by the parent
|
|
15
|
+
@include h-css;
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
H1 {
|
|
@@ -42,6 +46,11 @@ P {
|
|
|
42
46
|
margin: 0;
|
|
43
47
|
}
|
|
44
48
|
|
|
49
|
+
legend.h3-legend {
|
|
50
|
+
@include h-css;
|
|
51
|
+
font-size: 18px // Same as H3
|
|
52
|
+
}
|
|
53
|
+
|
|
45
54
|
//code
|
|
46
55
|
code, samp, kbd, .monospace {
|
|
47
56
|
font-family: $mono-font;
|
|
@@ -121,6 +121,7 @@ generic:
|
|
|
121
121
|
1d: 1d
|
|
122
122
|
7d: 7d
|
|
123
123
|
30d: 30d
|
|
124
|
+
tooltip: Tooltip
|
|
124
125
|
completed: Completed
|
|
125
126
|
enable: Enable
|
|
126
127
|
disable: Disable
|
|
@@ -786,6 +787,11 @@ authConfig:
|
|
|
786
787
|
label: Scopes
|
|
787
788
|
placeholder: openid
|
|
788
789
|
protip: The <code>openid</code>, <code>profile</code>, and <code>email</code> scopes are required and cannot be removed.
|
|
790
|
+
pkce:
|
|
791
|
+
label: Enable PKCE (S256)
|
|
792
|
+
tooltip: Enable Proof Key for Code Exchange (PKCE) using the S256 code challenge method. When enabled, this client must use PKCE with S256 for authorization requests.
|
|
793
|
+
pkceMethod:
|
|
794
|
+
label: PKCE Method
|
|
789
795
|
cert:
|
|
790
796
|
label: Certificate
|
|
791
797
|
placeholder: Paste in the certificate, starting with -----BEGIN CERTIFICATE-----
|
|
@@ -1210,7 +1216,7 @@ catalog:
|
|
|
1210
1216
|
tag: tag
|
|
1211
1217
|
install:
|
|
1212
1218
|
action:
|
|
1213
|
-
goToUpgrade: Edit/
|
|
1219
|
+
goToUpgrade: Edit / Change Version
|
|
1214
1220
|
appReadmeMissing: This chart doesn't have any additional chart information.
|
|
1215
1221
|
appReadmeTitle: Chart Information (Helm README)
|
|
1216
1222
|
button:
|
|
@@ -2004,7 +2010,8 @@ cluster:
|
|
|
2004
2010
|
description: Choose what hypervisor the virtual machine will be scheduled to
|
|
2005
2011
|
dataCenter: Data Center
|
|
2006
2012
|
resourcePool: Resource Pool
|
|
2007
|
-
dataStore:
|
|
2013
|
+
dataStore: Datastore
|
|
2014
|
+
dataStoreCluster: Datastore Cluster
|
|
2008
2015
|
folder: Folder
|
|
2009
2016
|
host:
|
|
2010
2017
|
label: Host
|
|
@@ -2530,9 +2537,6 @@ cluster:
|
|
|
2530
2537
|
caCerts:
|
|
2531
2538
|
label: CA Certificates
|
|
2532
2539
|
toolTip: Certificates required for the client to successfully verify the validity of the certificate returned by the endpoint.
|
|
2533
|
-
ipv6:
|
|
2534
|
-
warning: It looks like you are using an IPv6 CIDR. Your node driver may require additional configuration to support this.
|
|
2535
|
-
enable: Enable IPv6 support
|
|
2536
2540
|
etcd:
|
|
2537
2541
|
disableSnapshots:
|
|
2538
2542
|
label: Automatic Backups
|
|
@@ -2569,6 +2573,10 @@ cluster:
|
|
|
2569
2573
|
dual: Dual-Stack
|
|
2570
2574
|
errorNeedsIpv6: Stack preference must be set to dual-stack or ipv6 if using ipv6 networking in nodepools.
|
|
2571
2575
|
k3s:
|
|
2576
|
+
flannelMasq:
|
|
2577
|
+
title: IPv6 NAT
|
|
2578
|
+
label: Enable Flannel IPv6 Masquerade
|
|
2579
|
+
banner: It looks like you're using IPv6. If your IPv6 addresses are not publically routed, for example in the ULA range, you might want to check this option to enable IPv6 NAT; by default, pods use their IPv6 address for outgoing communication.
|
|
2572
2580
|
systemService:
|
|
2573
2581
|
coredns: 'CoreDNS'
|
|
2574
2582
|
local-storage: 'Local Storage'
|
|
@@ -2727,7 +2735,6 @@ cruResource:
|
|
|
2727
2735
|
providers:
|
|
2728
2736
|
hosted:
|
|
2729
2737
|
title: Hosted Providers
|
|
2730
|
-
prime: Prime only
|
|
2731
2738
|
warning: Disabling providers will make any clusters that use them uneditable
|
|
2732
2739
|
drivers:
|
|
2733
2740
|
kontainer:
|
|
@@ -2957,6 +2964,10 @@ fleet:
|
|
|
2957
2964
|
expandAll: Expand All
|
|
2958
2965
|
collapseAll: Collapse All
|
|
2959
2966
|
state: State
|
|
2967
|
+
resourceDetails:
|
|
2968
|
+
clusters: Clusters
|
|
2969
|
+
resources: Resources
|
|
2970
|
+
source: Source
|
|
2960
2971
|
viewMode:
|
|
2961
2972
|
table: Show table
|
|
2962
2973
|
cards: Show cards
|
|
@@ -3014,24 +3025,36 @@ fleet:
|
|
|
3014
3025
|
notReady: Not Ready
|
|
3015
3026
|
waitApplied: Wait Applied
|
|
3016
3027
|
clusterTargets:
|
|
3017
|
-
title: Select by name
|
|
3018
|
-
label: Clusters
|
|
3019
3028
|
advancedConfigs: Advanced target configurations are defined, check the YAML file for further details.
|
|
3020
|
-
|
|
3021
|
-
|
|
3029
|
+
clusters:
|
|
3030
|
+
title: Clusters
|
|
3031
|
+
byName:
|
|
3032
|
+
placeholder: Select Multiple Clusters
|
|
3033
|
+
label: Select by cluster name
|
|
3034
|
+
byLabel:
|
|
3035
|
+
title: Select by labels
|
|
3036
|
+
addSelector: Add cluster selector
|
|
3037
|
+
labelKey: Label
|
|
3038
|
+
clusterGroups:
|
|
3039
|
+
title: Cluster Groups
|
|
3040
|
+
byName:
|
|
3041
|
+
label: Select by cluster group name
|
|
3042
|
+
placeholder: Select Multiple Cluster Groups
|
|
3022
3043
|
rules:
|
|
3023
|
-
title: Select by labels
|
|
3024
|
-
addSelector: Add cluster selector
|
|
3025
|
-
labelKey: Label
|
|
3026
3044
|
matching:
|
|
3027
|
-
title:
|
|
3028
|
-
|
|
3045
|
+
title: |-
|
|
3046
|
+
{n, plural,
|
|
3047
|
+
=0 {No clusters selected}
|
|
3048
|
+
=1 {1 cluster selected}
|
|
3049
|
+
other {{n, number} clusters selected}
|
|
3050
|
+
}
|
|
3051
|
+
placeholder: Select clusters by name, labels or groups
|
|
3029
3052
|
empty: No clusters in the workspace
|
|
3030
3053
|
plusMore: |-
|
|
3031
3054
|
{n, plural,
|
|
3032
3055
|
=1 {+ 1 more cluster}
|
|
3033
3056
|
other {+ {n, number} more clusters}
|
|
3034
|
-
|
|
3057
|
+
}
|
|
3035
3058
|
application:
|
|
3036
3059
|
pageTitle: App Bundles
|
|
3037
3060
|
menuLabel: App Bundles
|
|
@@ -3591,6 +3614,7 @@ hpa:
|
|
|
3591
3614
|
last: Last Scale Time
|
|
3592
3615
|
max: Maximum Replicas
|
|
3593
3616
|
min: Minimum Replicas
|
|
3617
|
+
targetReferenceType: Target Type
|
|
3594
3618
|
targetReference: Target Reference
|
|
3595
3619
|
|
|
3596
3620
|
import:
|
|
@@ -3855,6 +3879,8 @@ istio:
|
|
|
3855
3879
|
itemCard:
|
|
3856
3880
|
ariaLabel:
|
|
3857
3881
|
clickable: Click on card for {cardTitle}
|
|
3882
|
+
actionMenu:
|
|
3883
|
+
label: '{cardTitle} actions'
|
|
3858
3884
|
jwt:
|
|
3859
3885
|
title: JWT Authentication
|
|
3860
3886
|
actions:
|
|
@@ -7332,39 +7358,64 @@ workload:
|
|
|
7332
7358
|
removeContainer: Remove Container
|
|
7333
7359
|
addContainer: Add Container
|
|
7334
7360
|
security:
|
|
7335
|
-
addCapabilities: Add Capabilities
|
|
7336
7361
|
addGroupIDs: Add Group IDs
|
|
7337
7362
|
allowPrivilegeEscalation:
|
|
7338
|
-
|
|
7339
|
-
'
|
|
7340
|
-
|
|
7341
|
-
|
|
7363
|
+
title: Privilege Escalation
|
|
7364
|
+
'true': "Container can gain more privileges than its parent process"
|
|
7365
|
+
capabilities:
|
|
7366
|
+
title: Capabilities
|
|
7367
|
+
add: Add Capabilities
|
|
7368
|
+
drop: Drop Capabilities
|
|
7342
7369
|
fsGroup: Filesystem Group
|
|
7343
7370
|
hostIPC: Use Host IPC Namespace
|
|
7344
7371
|
hostPID: Use Host PID Namespace
|
|
7345
7372
|
podFsGroup: Pod Filesystem Group
|
|
7346
7373
|
privileged:
|
|
7347
|
-
|
|
7348
|
-
'
|
|
7349
|
-
|
|
7374
|
+
title: Privileged
|
|
7375
|
+
'true': "Container has full access to the host"
|
|
7376
|
+
help: Enabling privilege will hide Privilege Escalation and seccompProfile.
|
|
7377
|
+
afterTick:
|
|
7378
|
+
'true': Privilege Escalation and seccompProfile have been hidden.
|
|
7379
|
+
'false': Privilege Escalation and seccompProfile appeared.
|
|
7350
7380
|
readOnlyRootFilesystem:
|
|
7351
|
-
|
|
7352
|
-
'
|
|
7353
|
-
'true': "Yes: container has a read-only root filesystem"
|
|
7381
|
+
title: Read-Only Root Filesystem
|
|
7382
|
+
'true': "Container has a read-only root filesystem"
|
|
7354
7383
|
runAsGroup: Run as Group ID
|
|
7355
7384
|
runAsNonRoot:
|
|
7356
|
-
|
|
7357
|
-
'
|
|
7358
|
-
'true': "Yes: container must run as a non-root user"
|
|
7385
|
+
title: Run as Non-Root
|
|
7386
|
+
'true': "Container must run as a non-root user"
|
|
7359
7387
|
runAsNonRootOptions:
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7388
|
+
'true': "Containers must run as non-root-user"
|
|
7389
|
+
runAsUser:
|
|
7390
|
+
title: Run as User ID
|
|
7391
|
+
label: User ID
|
|
7392
|
+
seccompProfile:
|
|
7393
|
+
pod: Pod Seccomp Profile
|
|
7394
|
+
container: Seccomp Profile
|
|
7395
|
+
type: Type
|
|
7396
|
+
localhostProfile:
|
|
7397
|
+
label: Localhost Profile Path
|
|
7398
|
+
tooltip: Points to a specific seccomp file that must already exist on the machine running the container.
|
|
7399
|
+
placeholder: e.g. path/to/json
|
|
7400
|
+
afterLocalhostProfile:
|
|
7401
|
+
selected: Localhost Profile input appeared.
|
|
7402
|
+
unselected: Localhost Profile input has been hidden.
|
|
7403
|
+
types:
|
|
7404
|
+
none:
|
|
7405
|
+
label: None
|
|
7406
|
+
runtimeDefault:
|
|
7407
|
+
label: RuntimeDefault - inherit the default seccomp profile
|
|
7408
|
+
localhost:
|
|
7409
|
+
label: Localhost - define a custom seccomp profile
|
|
7410
|
+
unconfined:
|
|
7411
|
+
label: Unconfined - no seccomp profile
|
|
7363
7412
|
shareProcessNamespace: Share single process namespace
|
|
7364
7413
|
supplementalGroups: Additional Group IDs
|
|
7365
7414
|
sysctls: Sysctls
|
|
7366
7415
|
sysctlsKey: Name
|
|
7367
7416
|
standard: Standard Container
|
|
7417
|
+
initContainer:
|
|
7418
|
+
label: Init Containers
|
|
7368
7419
|
terminationState: "Last state: Terminated with {lsExitCode}: {lsDescription}, started: {lsStartedAt}, finished: {lsFinishedAt}"
|
|
7369
7420
|
titles:
|
|
7370
7421
|
pods: Pods
|
|
@@ -7492,6 +7543,7 @@ workload:
|
|
|
7492
7543
|
validation:
|
|
7493
7544
|
containers: Containers
|
|
7494
7545
|
containerImage: Container {name} - "Container Image" is required.
|
|
7546
|
+
localhostProfile: Container {name} - "Container Localhost Profile" is required when SeccompProfile Type is Localhost.
|
|
7495
7547
|
replicas: Replicas
|
|
7496
7548
|
showTabs: 'Show Advanced Options'
|
|
7497
7549
|
scheduling:
|
|
@@ -8364,6 +8416,11 @@ typeLabel:
|
|
|
8364
8416
|
one { Role }
|
|
8365
8417
|
other { Roles }
|
|
8366
8418
|
}
|
|
8419
|
+
replicationcontroller: |-
|
|
8420
|
+
{count, plural,
|
|
8421
|
+
one { Replication Controller }
|
|
8422
|
+
other { Replication Controllers }
|
|
8423
|
+
}
|
|
8367
8424
|
scheduling.k8s.io.priorityclass: |-
|
|
8368
8425
|
{count, plural,
|
|
8369
8426
|
one { PriorityClass }
|
|
@@ -8800,6 +8857,7 @@ notifications:
|
|
|
8800
8857
|
showCheckboxLabel: Show custom login error
|
|
8801
8858
|
messageLabel: Text to display
|
|
8802
8859
|
resourceQuota:
|
|
8860
|
+
banner: Limit resource consumption in a project for both standard (e.g. CPU Limit) and custom resource types. For custom resource types you have to provide the resource identifier yourself. Want to learn more about resource quotas? Read our <a href="https://ranchermanager.docs.rancher.com/how-to-guides/advanced-user-guides/manage-projects/manage-project-resource-quotas" target="_blank" rel="noopener noreferrer nofollow">documentation <i class="icon icon-external-link"></i></a><span class="sr-only">Opens in a new tab</span>
|
|
8803
8861
|
label: Resource Quotas
|
|
8804
8862
|
headers:
|
|
8805
8863
|
limit: Limit
|
|
@@ -8807,9 +8865,14 @@ resourceQuota:
|
|
|
8807
8865
|
projectLimit: Project Limit
|
|
8808
8866
|
projectResourceAvailability: Project Resource Availability
|
|
8809
8867
|
resourceType: Resource Type
|
|
8868
|
+
resourceIdentifier: Resource Identifier
|
|
8810
8869
|
helpText: Configure how much of the resources the namespace as a whole can consume.
|
|
8811
8870
|
helpTextDetail: The amount of resources the namespace as a whole can consume.
|
|
8812
8871
|
helpTextHarvester: VMs need to reserve additional memory overhead.
|
|
8872
|
+
custom: Custom
|
|
8873
|
+
resourceIdentifier:
|
|
8874
|
+
placeholder: e.g. configmaps
|
|
8875
|
+
tooltip: Select 'Custom' from the 'Resource Type' list and enter the resource identifier (e.g. requests.nvidia.com/gpu) to add custom resources quotas.
|
|
8813
8876
|
configMaps: Config Maps
|
|
8814
8877
|
limitsCpu: CPU Limit
|
|
8815
8878
|
limitsMemory: Memory Limit
|
|
@@ -8839,6 +8902,8 @@ resourceQuota:
|
|
|
8839
8902
|
unitlessPlaceholder: e.g. 10
|
|
8840
8903
|
add:
|
|
8841
8904
|
label: Add Resource
|
|
8905
|
+
errors:
|
|
8906
|
+
customTypeRequired: Resource identifier is required
|
|
8842
8907
|
tooltip:
|
|
8843
8908
|
reserved: 'Other Namespaces:'
|
|
8844
8909
|
namespace: 'This Namespace:'
|
|
@@ -9099,11 +9164,17 @@ component:
|
|
|
9099
9164
|
podsCard:
|
|
9100
9165
|
title: Pods
|
|
9101
9166
|
ariaResourceName: pods
|
|
9167
|
+
jobsCard:
|
|
9168
|
+
title: Jobs
|
|
9169
|
+
ariaResourceName: jobs
|
|
9102
9170
|
insightsCard:
|
|
9103
9171
|
title: Insights
|
|
9104
9172
|
rows:
|
|
9105
9173
|
conditions: Conditions
|
|
9106
9174
|
events: Events
|
|
9175
|
+
extrasCard:
|
|
9176
|
+
title: Extras
|
|
9177
|
+
message: 'Consider installing additional <a class="secondary text-deemphasized" href="{extensionsUrl}">extensions</a> and / or <a class="secondary-text-link" href="{clusterToolsUrl}">cluster tools</a> to enrich your Rancher experience.'
|
|
9107
9178
|
scaler:
|
|
9108
9179
|
ariaLabel:
|
|
9109
9180
|
increase: Increase {resourceName}
|
|
@@ -651,6 +651,10 @@ asyncButton:
|
|
|
651
651
|
action: 保存
|
|
652
652
|
success: 已保存
|
|
653
653
|
waiting: 正在保存…
|
|
654
|
+
editVersion:
|
|
655
|
+
action: 保存更改
|
|
656
|
+
success: 已保存
|
|
657
|
+
waiting: 正在保存更改…
|
|
654
658
|
enable:
|
|
655
659
|
action: 启用
|
|
656
660
|
success: 启用
|
|
@@ -874,8 +878,13 @@ catalog:
|
|
|
874
878
|
windows: Windows
|
|
875
879
|
search: 筛选
|
|
876
880
|
install:
|
|
877
|
-
|
|
878
|
-
|
|
881
|
+
warning:
|
|
882
|
+
managed: |-
|
|
883
|
+
警告,{manager} 管理 {name} 应用的部署和升级。不支持升级此应用。<br>
|
|
884
|
+
{version, select,
|
|
885
|
+
null { }
|
|
886
|
+
other { 在大多数情况下,无需用户干预即可确保 {version} 版本与你正在运行的 Rancher 版本兼容。}
|
|
887
|
+
}
|
|
879
888
|
appReadmeMissing: 此 Chart 没有其他 Chart 信息。
|
|
880
889
|
appReadmeTitle: Chart 信息(Helm 自述)
|
|
881
890
|
chart: Chart
|
|
@@ -941,6 +950,8 @@ catalog:
|
|
|
941
950
|
install { 创建 }
|
|
942
951
|
upgrade { 升级 }
|
|
943
952
|
update { 更新 }
|
|
953
|
+
editVersion { 更新 }
|
|
954
|
+
downgrade { 降级 }
|
|
944
955
|
} 这个 {existing, select,
|
|
945
956
|
true { 应用 }
|
|
946
957
|
false { Chart}
|
|
@@ -11,7 +11,7 @@ const SHOW = 'show';
|
|
|
11
11
|
export default {
|
|
12
12
|
name: 'ActionMenu',
|
|
13
13
|
|
|
14
|
-
emits: ['close'],
|
|
14
|
+
emits: ['close', 'action-invoked'],
|
|
15
15
|
|
|
16
16
|
components: { IconOrSvg },
|
|
17
17
|
props: {
|
|
@@ -217,15 +217,14 @@ export default {
|
|
|
217
217
|
// If the state of this component is controlled
|
|
218
218
|
// by props instead of Vuex, we assume you wouldn't want
|
|
219
219
|
// the mutation to have a dependency on Vuex either.
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
action,
|
|
220
|
+
// The parent component should handle the action based on the action property
|
|
221
|
+
// in the 'action-invoked' event payload.
|
|
222
|
+
this.$emit('action-invoked', {
|
|
223
|
+
action: action.action,
|
|
224
|
+
actionData: action,
|
|
226
225
|
event,
|
|
227
226
|
...args,
|
|
228
|
-
route:
|
|
227
|
+
route: this.$route
|
|
229
228
|
});
|
|
230
229
|
} else {
|
|
231
230
|
// If the state of this component is controlled
|
|
@@ -5,7 +5,7 @@ import { useRoute } from 'vue-router';
|
|
|
5
5
|
|
|
6
6
|
import { isAlternate } from '@shell/utils/platform';
|
|
7
7
|
import { RcDropdownMenu } from '@components/RcDropdown';
|
|
8
|
-
import {
|
|
8
|
+
import { ButtonVariant, ButtonSize } from '@components/RcButton/types';
|
|
9
9
|
import { DropdownOption } from '@components/RcDropdown/types';
|
|
10
10
|
|
|
11
11
|
defineOptions({ inheritAttrs: false });
|
|
@@ -13,8 +13,8 @@ defineOptions({ inheritAttrs: false });
|
|
|
13
13
|
const store = useStore();
|
|
14
14
|
|
|
15
15
|
type RcDropdownMenuComponentProps = {
|
|
16
|
-
|
|
17
|
-
buttonSize?:
|
|
16
|
+
buttonVariant?: ButtonVariant;
|
|
17
|
+
buttonSize?: ButtonSize;
|
|
18
18
|
buttonAriaLabel?: string;
|
|
19
19
|
dropdownAriaLabel?: string;
|
|
20
20
|
dataTestid?: string;
|
|
@@ -30,7 +30,15 @@ const openChanged = (event: boolean) => {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
export interface ActionMenuSelection {
|
|
34
|
+
action: string;
|
|
35
|
+
actionData: any;
|
|
36
|
+
event: MouseEvent;
|
|
37
|
+
route: ReturnType<typeof useRoute>;
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const emit = defineEmits<{(event: 'action-invoked', payload?: ActionMenuSelection): void;}>();
|
|
34
42
|
const route = useRoute();
|
|
35
43
|
|
|
36
44
|
const execute = (action: any, event: MouseEvent, args?: any) => {
|
|
@@ -38,7 +46,15 @@ const execute = (action: any, event: MouseEvent, args?: any) => {
|
|
|
38
46
|
return;
|
|
39
47
|
}
|
|
40
48
|
|
|
41
|
-
|
|
49
|
+
const payload: ActionMenuSelection = {
|
|
50
|
+
action: action.action,
|
|
51
|
+
actionData: action,
|
|
52
|
+
event,
|
|
53
|
+
...args,
|
|
54
|
+
route,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
emit('action-invoked', payload);
|
|
42
58
|
|
|
43
59
|
// this will come from extensions...
|
|
44
60
|
if (action.invoke) {
|
|
@@ -56,24 +72,7 @@ const execute = (action: any, event: MouseEvent, args?: any) => {
|
|
|
56
72
|
fn.apply(this, [opts, resources]);
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
|
-
} else if (props.customActions) {
|
|
60
|
-
// If the state of this component is controlled
|
|
61
|
-
// by props instead of Vuex, we assume you wouldn't want
|
|
62
|
-
// the mutation to have a dependency on Vuex either.
|
|
63
|
-
// So in that case we use events to execute actions instead.
|
|
64
|
-
// If an action list item is clicked, this
|
|
65
|
-
// component emits that event, then we assume the parent
|
|
66
|
-
// component will execute the action.
|
|
67
|
-
emit(
|
|
68
|
-
action.action,
|
|
69
|
-
{
|
|
70
|
-
action,
|
|
71
|
-
event,
|
|
72
|
-
...args,
|
|
73
|
-
route,
|
|
74
|
-
}
|
|
75
|
-
);
|
|
76
|
-
} else {
|
|
75
|
+
} else if (!props.customActions) {
|
|
77
76
|
// If the state of this component is controlled
|
|
78
77
|
// by Vuex, mutate the store when an action is clicked.
|
|
79
78
|
const opts = { alt: isAlternate(event) };
|
|
@@ -97,7 +96,7 @@ const menuOptions = () => {
|
|
|
97
96
|
|
|
98
97
|
<template>
|
|
99
98
|
<rc-dropdown-menu
|
|
100
|
-
:button-
|
|
99
|
+
:button-variant="buttonVariant || 'link'"
|
|
101
100
|
:button-size="buttonSize || 'small'"
|
|
102
101
|
:button-aria-label="buttonAriaLabel"
|
|
103
102
|
:dropdown-aria-label="dropdownAriaLabel"
|
|
@@ -330,9 +330,6 @@ export default {
|
|
|
330
330
|
border-color: var(--primary-border);
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
.CodeMirror-wrap pre {
|
|
334
|
-
word-break: break-word;
|
|
335
|
-
}
|
|
336
333
|
.CodeMirror-code {
|
|
337
334
|
.CodeMirror-line {
|
|
338
335
|
&:not(:last-child)>span:after,
|
|
@@ -426,6 +423,10 @@ export default {
|
|
|
426
423
|
.CodeMirror-gutters {
|
|
427
424
|
background: inherit;
|
|
428
425
|
}
|
|
426
|
+
|
|
427
|
+
.CodeMirror-wrap pre {
|
|
428
|
+
word-break: break-word;
|
|
429
|
+
}
|
|
429
430
|
}
|
|
430
431
|
|
|
431
432
|
.keymap.overlay {
|
|
@@ -167,8 +167,12 @@ export default {
|
|
|
167
167
|
<h5
|
|
168
168
|
v-if="labelKey"
|
|
169
169
|
v-t="labelKey"
|
|
170
|
+
v-clean-tooltip="{content: itemLabel, popperClass: 'detail-text-tooltip'}"
|
|
170
171
|
/>
|
|
171
|
-
<h5
|
|
172
|
+
<h5
|
|
173
|
+
v-else-if="label"
|
|
174
|
+
v-clean-tooltip="{content: label, popperClass: 'detail-text-tooltip'}"
|
|
175
|
+
>
|
|
172
176
|
{{ label }}
|
|
173
177
|
</h5>
|
|
174
178
|
|
|
@@ -190,17 +194,22 @@ export default {
|
|
|
190
194
|
aria-live="polite"
|
|
191
195
|
/>
|
|
192
196
|
|
|
193
|
-
<
|
|
197
|
+
<div
|
|
194
198
|
v-else
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
:class="{'conceal-wrapper': concealed}"
|
|
200
|
+
>
|
|
201
|
+
<span
|
|
202
|
+
v-clean-html="bodyHtml"
|
|
203
|
+
data-testid="detail-top_html"
|
|
204
|
+
:class="{'conceal': concealed, 'monospace': monospace && !isBinary}"
|
|
205
|
+
aria-live="polite"
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
200
208
|
|
|
201
209
|
<template v-if="!isBinary && !jsonStr && isLong && !expanded">
|
|
202
210
|
<a
|
|
203
211
|
href="#"
|
|
212
|
+
class="more-characters"
|
|
204
213
|
@click.prevent="expand"
|
|
205
214
|
>{{ plusMore }}</a>
|
|
206
215
|
</template>
|
|
@@ -238,6 +247,30 @@ export default {
|
|
|
238
247
|
background-color: var(--input-bg);
|
|
239
248
|
border-radius: var(--border-radius);
|
|
240
249
|
border: solid var(--border-width) var(--input-border);
|
|
250
|
+
contain: inline-size;
|
|
251
|
+
|
|
252
|
+
h5 {
|
|
253
|
+
margin-bottom: 15px;
|
|
254
|
+
white-space: nowrap;
|
|
255
|
+
overflow: hidden;
|
|
256
|
+
text-overflow: ellipsis;
|
|
257
|
+
width: fit-content;
|
|
258
|
+
// Accounting for the button on the right
|
|
259
|
+
max-width: calc(100% - 150px);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// This prevents the scrollbar from overlapping the text without changing the size of the detailtext container.
|
|
263
|
+
$scrollBarShift: 10px;
|
|
264
|
+
.conceal-wrapper {
|
|
265
|
+
overflow-x: auto;
|
|
266
|
+
padding-bottom: $scrollBarShift;
|
|
267
|
+
margin-bottom: -$scrollBarShift;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.conceal {
|
|
271
|
+
white-space: nowrap;
|
|
272
|
+
display: block;
|
|
273
|
+
}
|
|
241
274
|
|
|
242
275
|
.action-group {
|
|
243
276
|
position: absolute;
|
|
@@ -267,4 +300,18 @@ export default {
|
|
|
267
300
|
white-space: pre-wrap;
|
|
268
301
|
word-wrap: break-all
|
|
269
302
|
}
|
|
303
|
+
|
|
304
|
+
.more-characters {
|
|
305
|
+
margin-top: 8px;
|
|
306
|
+
display: inline-block;
|
|
307
|
+
}
|
|
308
|
+
</style>
|
|
309
|
+
|
|
310
|
+
<style lang="scss">
|
|
311
|
+
// The global styles for tooltips are in dashboard/shell/assets/styles/global/_tooltip.scss.
|
|
312
|
+
// I don't want to make this change for all tooltips since there's 149 instances as of writing this
|
|
313
|
+
// so I'm adding a global style here that's scoped to the class we're adding to the tooltips we have in this component.
|
|
314
|
+
.detail-text-tooltip.v-popper__popper.v-popper--theme-tooltip {
|
|
315
|
+
overflow-wrap: anywhere;
|
|
316
|
+
}
|
|
270
317
|
</style>
|
|
@@ -3,6 +3,7 @@ import { useI18n } from '@shell/composables/useI18n';
|
|
|
3
3
|
import { useStore } from 'vuex';
|
|
4
4
|
import { computed } from 'vue';
|
|
5
5
|
import { Props } from './types';
|
|
6
|
+
import RcButton from '@components/RcButton/RcButton.vue';
|
|
6
7
|
|
|
7
8
|
const props = defineProps<Props>();
|
|
8
9
|
const emit = defineEmits(['close']);
|
|
@@ -34,16 +35,20 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
|
|
|
34
35
|
<div class="body pp-4">
|
|
35
36
|
<slot name="body" />
|
|
36
37
|
</div>
|
|
37
|
-
<div
|
|
38
|
+
<div
|
|
39
|
+
v-if="!removeFooter"
|
|
40
|
+
class="footer pp-4"
|
|
41
|
+
>
|
|
38
42
|
<slot name="footer">
|
|
39
43
|
<div class="actions">
|
|
40
|
-
<
|
|
41
|
-
|
|
44
|
+
<RcButton
|
|
45
|
+
variant="secondary"
|
|
46
|
+
size="large"
|
|
42
47
|
:aria-label="ariaLabel"
|
|
43
48
|
@click="emit('close')"
|
|
44
49
|
>
|
|
45
50
|
{{ i18n.t('component.drawer.chrome.close') }}
|
|
46
|
-
</
|
|
51
|
+
</RcButton>
|
|
47
52
|
<slot name="additional-actions" />
|
|
48
53
|
</div>
|
|
49
54
|
</slot>
|
|
@@ -71,6 +76,8 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
|
|
|
71
76
|
height: var(--header-height);
|
|
72
77
|
|
|
73
78
|
& > .title {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
74
81
|
flex: 1;
|
|
75
82
|
font-size: 16px;
|
|
76
83
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<div class="drawer-card">
|
|
6
|
+
<slot />
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<style lang="scss" scoped>
|
|
11
|
+
.drawer-card {
|
|
12
|
+
background-color: var(--body-bg);
|
|
13
|
+
border-radius: var(--border-radius-md);
|
|
14
|
+
padding: 16px;
|
|
15
|
+
max-width: 100%;
|
|
16
|
+
width: 100%;
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
</style>
|