@rancher/shell 3.0.5-rc.7 → 3.0.5-rc.9
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/classic/metadata.json +3 -0
- package/assets/styles/app.scss +1 -0
- package/assets/styles/base/_color.scss +19 -0
- package/assets/styles/base/_helpers.scss +10 -0
- package/assets/styles/base/_variables.scss +1 -1
- package/assets/styles/fonts/_icons.scss +1 -32
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/global/_tooltip.scss +7 -4
- package/assets/styles/themes/_dark.scss +272 -259
- package/assets/styles/themes/_light.scss +551 -516
- package/assets/styles/themes/_modern.scss +936 -0
- package/assets/translations/en-us.yaml +219 -38
- package/assets/translations/zh-hans.yaml +0 -1
- package/chart/__tests__/S3.test.ts +2 -1
- package/chart/monitoring/grafana/index.vue +8 -2
- package/cloud-credential/generic.vue +18 -10
- package/cloud-credential/harvester.vue +1 -9
- package/components/ActionMenuShell.vue +3 -1
- package/components/AdvancedSection.vue +8 -0
- package/components/ChartReadme.vue +17 -7
- package/components/Cron/CronExpressionEditor.vue +299 -0
- package/components/Cron/CronExpressionEditorModal.vue +247 -0
- package/components/Cron/CronTooltip.vue +87 -0
- package/components/Cron/types.ts +13 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +1 -26
- package/components/Drawer/ResourceDetailDrawer/composables.ts +0 -23
- package/components/Drawer/ResourceDetailDrawer/index.vue +17 -4
- package/components/ForceDirectedTreeChart/composable.ts +11 -0
- package/components/InstallHelmCharts.vue +656 -0
- package/components/LazyImage.vue +60 -4
- package/components/LocaleSelector.vue +7 -2
- package/components/Markdown.vue +4 -0
- package/components/PromptModal.vue +1 -1
- package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +1 -0
- package/components/Resource/Detail/CopyToClipboard.vue +78 -0
- package/components/Resource/Detail/FetchLoader/__tests__/composables.test.ts +69 -0
- package/components/Resource/Detail/FetchLoader/composables.ts +27 -0
- package/components/Resource/Detail/Masthead/composable.ts +16 -0
- package/components/Resource/Detail/Masthead/index.vue +37 -0
- package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +1 -1
- package/components/Resource/Detail/Metadata/Annotations/index.vue +1 -1
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +13 -61
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +33 -6
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +29 -43
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +25 -5
- package/components/Resource/Detail/Metadata/KeyValue.vue +12 -23
- package/components/Resource/Detail/Metadata/KeyValueRow.vue +144 -0
- package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +1 -0
- package/components/Resource/Detail/Metadata/Labels/index.vue +1 -0
- package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +30 -32
- package/components/Resource/Detail/Metadata/__tests__/KeyValueRow.test.ts +108 -0
- package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +10 -20
- package/components/Resource/Detail/Metadata/__tests__/index.test.ts +12 -5
- package/components/Resource/Detail/Metadata/composables.ts +9 -10
- package/components/Resource/Detail/Metadata/index.vue +18 -2
- package/components/Resource/Detail/Page.vue +35 -21
- package/components/Resource/Detail/Preview/Content.vue +63 -0
- package/components/Resource/Detail/Preview/Preview.vue +128 -0
- package/components/Resource/Detail/Preview/__tests__/Content.spec.ts +71 -0
- package/components/Resource/Detail/Preview/__tests__/Preview.spec.ts +121 -0
- package/components/Resource/Detail/ResourcePopover/ResourcePopoverCard.vue +141 -0
- package/components/Resource/Detail/ResourcePopover/__tests__/ResourcePopoverCard.test.ts +136 -0
- package/components/Resource/Detail/ResourcePopover/__tests__/index.test.ts +245 -0
- package/components/Resource/Detail/ResourcePopover/index.vue +226 -0
- package/components/Resource/Detail/SpacedRow.vue +1 -0
- package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +8 -14
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +1 -1
- package/components/Resource/Detail/TitleBar/composables.ts +3 -6
- package/components/Resource/Detail/TitleBar/index.vue +11 -29
- package/components/Resource/Detail/ViewOptions/composable.ts +9 -0
- package/components/Resource/Detail/ViewOptions/index.vue +41 -0
- package/components/Resource/Detail/__tests__/CopyToClipboard.spec.ts +82 -0
- package/components/ResourceDetail/Masthead/legacy.vue +0 -19
- package/components/ResourceDetail/index.vue +544 -74
- package/components/ResourceTable.vue +24 -0
- package/components/SlideInPanelManager.vue +10 -3
- package/components/SortableTable/index.vue +11 -5
- package/components/SortableTable/paging.js +3 -0
- package/components/Tabbed/Tab.vue +43 -1
- package/components/Tabbed/index.vue +32 -4
- package/components/__tests__/Cron/CronExpressionEditor.test.ts +151 -0
- package/components/__tests__/Cron/CronExpressionEditorModal.test.ts +81 -0
- package/components/__tests__/LazyImage.spec.ts +121 -0
- package/components/auth/login/saml.vue +86 -0
- package/components/fleet/FleetStatus.vue +4 -0
- package/components/form/ClusterAppearance.vue +5 -0
- package/components/form/LabeledSelect.vue +8 -8
- package/components/form/Members/ClusterPermissionsEditor.vue +1 -1
- package/components/form/ProjectMemberEditor.vue +1 -1
- package/components/form/ResourceLabeledSelect.vue +19 -6
- package/components/form/ResourceTabs/composable.ts +54 -0
- package/components/form/ResourceTabs/index.vue +30 -7
- package/components/form/SecretSelector.vue +9 -0
- package/components/form/Select.vue +13 -10
- package/components/form/__tests__/LabeledSelect.test.ts +133 -0
- package/components/form/__tests__/Select.test.ts +134 -0
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
- package/components/formatter/FleetApplicationSource.vue +25 -17
- package/components/nav/Favorite.vue +4 -0
- package/components/nav/NotificationCenter/Notification.vue +1 -27
- package/components/nav/WindowManager/index.vue +3 -3
- package/composables/useExtensionManager.ts +17 -0
- package/config/home-links.js +12 -0
- package/config/labels-annotations.js +1 -3
- package/config/page-actions.js +0 -1
- package/config/product/explorer.js +3 -1
- package/config/product/fleet.js +2 -7
- package/config/product/manager.js +0 -5
- package/config/query-params.js +1 -0
- package/config/router/navigation-guards/clusters.js +2 -1
- package/config/router/navigation-guards/products.js +1 -1
- package/core/extension-manager-impl.js +518 -0
- package/core/plugins.js +35 -468
- package/core/types.ts +8 -2
- package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +1 -0
- package/detail/__tests__/provisioning.cattle.io.cluster.test.ts +11 -0
- package/detail/__tests__/workload.test.ts +164 -0
- package/detail/catalog.cattle.io.app.vue +7 -4
- package/detail/configmap.vue +33 -75
- package/detail/fleet.cattle.io.bundle.vue +1 -5
- package/detail/fleet.cattle.io.cluster.vue +3 -2
- package/detail/fleet.cattle.io.gitrepo.vue +76 -49
- package/detail/fleet.cattle.io.helmop.vue +78 -49
- package/detail/projectsecret.vue +11 -0
- package/detail/provisioning.cattle.io.cluster.vue +350 -324
- package/detail/secret.vue +49 -308
- package/detail/workload/index.vue +38 -21
- package/dialog/AddonConfigConfirmationDialog.vue +1 -1
- package/dialog/GenericPrompt.vue +1 -1
- package/dialog/ImportDialog.vue +9 -2
- package/dialog/InstallExtensionDialog.vue +26 -15
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +2 -1
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/edit/__tests__/resources.cattle.io.restore.test.ts +106 -0
- package/edit/cloudcredential.vue +31 -17
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +10 -2
- package/edit/fleet.cattle.io.cluster.vue +19 -0
- package/edit/fleet.cattle.io.gitrepo.vue +28 -22
- package/edit/fleet.cattle.io.helmop.vue +78 -56
- package/edit/logging.banzaicloud.io.output/index.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +12 -11
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +11 -1
- package/edit/networking.k8s.io.ingress/Certificate.vue +9 -11
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +8 -3
- package/edit/networking.k8s.io.ingress/Rule.vue +2 -5
- package/edit/networking.k8s.io.ingress/RulePath.vue +17 -11
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +11 -10
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +1 -3
- package/edit/networking.k8s.io.networkpolicy/index.vue +17 -17
- package/edit/provisioning.cattle.io.cluster/index.vue +14 -19
- package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -15
- package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +9 -7
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +10 -12
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +39 -38
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +41 -19
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +16 -3
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +30 -31
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryMirrors.vue +9 -10
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +1 -3
- package/edit/provisioning.cattle.io.cluster/tabs/upgrade/DrainOptions.vue +16 -9
- package/edit/resources.cattle.io.restore.vue +5 -8
- package/edit/workload/index.vue +5 -14
- package/list/__tests__/workload.test.ts +1 -0
- package/list/provisioning.cattle.io.cluster.vue +1 -69
- package/list/workload.vue +8 -1
- package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
- package/machine-config/components/GCEImage.vue +6 -5
- package/machine-config/google.vue +20 -7
- package/machine-config/vmwarevsphere.vue +7 -17
- package/mixins/__tests__/chart.test.ts +139 -1
- package/mixins/chart.js +58 -20
- package/mixins/resource-fetch-api-pagination.js +3 -4
- package/models/__tests__/chart.test.ts +111 -80
- package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/models/__tests__/namespace.test.ts +69 -0
- package/models/__tests__/node.test.ts +7 -63
- package/models/apps.statefulset.js +8 -10
- package/models/catalog.cattle.io.app.js +1 -1
- package/models/catalog.cattle.io.operation.js +1 -1
- package/models/chart.js +41 -21
- package/models/cloudcredential.js +2 -163
- package/models/cluster/node.js +7 -7
- package/models/cluster.x-k8s.io.machine.js +3 -3
- package/models/compliance.cattle.io.clusterscan.js +2 -2
- package/models/configmap.js +4 -0
- package/models/constraints.gatekeeper.sh.constraint.js +1 -1
- package/models/fleet-application.js +16 -63
- package/models/fleet.cattle.io.bundle.js +1 -38
- package/models/fleet.cattle.io.gitrepo.js +19 -1
- package/models/fleet.cattle.io.helmop.js +30 -22
- package/models/management.cattle.io.project.js +12 -0
- package/models/management.cattle.io.setting.js +4 -0
- package/models/namespace.js +30 -0
- package/models/persistentvolumeclaim.js +1 -1
- package/models/pod.js +2 -2
- package/models/provisioning.cattle.io.cluster.js +16 -40
- package/models/rke.cattle.io.etcdsnapshot.js +1 -1
- package/models/secret.js +4 -0
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/workload.js +6 -3
- package/package.json +19 -18
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +26 -10
- package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +4 -1
- package/pages/c/_cluster/apps/charts/__tests__/AppChartCardFooter.spec.js +41 -0
- package/pages/c/_cluster/apps/charts/chart.vue +440 -183
- package/pages/c/_cluster/apps/charts/index.vue +1 -0
- package/pages/c/_cluster/apps/charts/install.vue +7 -6
- package/pages/c/_cluster/explorer/projectsecret.vue +3 -13
- package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +102 -12
- package/pages/c/_cluster/explorer/tools/index.vue +145 -254
- package/pages/c/_cluster/fleet/__tests__/index.test.ts +608 -314
- package/pages/c/_cluster/fleet/index.vue +103 -44
- package/pages/c/_cluster/manager/cloudCredential/index.vue +20 -60
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +12 -2
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +11 -4
- package/pages/c/_cluster/uiplugins/__tests__/index.spec.ts +318 -0
- package/pages/c/_cluster/uiplugins/index.vue +256 -387
- package/pages/home.vue +1 -9
- package/plugins/dashboard-store/actions.js +42 -22
- package/plugins/dashboard-store/resource-class.js +80 -0
- package/plugins/steve/__tests__/getters.test.ts +1 -1
- package/plugins/steve/__tests__/subscribe.spec.ts +259 -1
- package/plugins/steve/getters.js +8 -2
- package/plugins/steve/resourceWatcher.js +10 -3
- package/plugins/steve/subscribe.js +192 -19
- package/plugins/steve/worker/web-worker.advanced.js +2 -0
- package/public/index.html +2 -1
- package/rancher-components/Card/Card.vue +1 -19
- package/rancher-components/Form/Checkbox/Checkbox.vue +1 -1
- package/rancher-components/Form/Radio/RadioButton.vue +1 -1
- package/rancher-components/Form/Radio/RadioGroup.vue +1 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -11
- package/rancher-components/Pill/RcCounterBadge/RcCounterBadge.test.ts +53 -0
- package/rancher-components/Pill/RcCounterBadge/RcCounterBadge.vue +65 -0
- package/rancher-components/Pill/RcCounterBadge/index.ts +1 -0
- package/rancher-components/Pill/RcCounterBadge/types.ts +7 -0
- package/rancher-components/Pill/RcStatusBadge/RcStatusBadge.test.ts +15 -0
- package/rancher-components/Pill/RcStatusBadge/RcStatusBadge.vue +65 -0
- package/rancher-components/Pill/RcStatusBadge/index.ts +2 -0
- package/rancher-components/Pill/RcStatusBadge/types.ts +5 -0
- package/rancher-components/Pill/RcStatusIndicator/RcStatusIndicator.test.ts +33 -0
- package/rancher-components/Pill/RcStatusIndicator/RcStatusIndicator.vue +75 -0
- package/rancher-components/Pill/RcStatusIndicator/index.ts +2 -0
- package/rancher-components/Pill/RcStatusIndicator/types.ts +7 -0
- package/rancher-components/Pill/RcTag/RcTag.test.ts +64 -0
- package/rancher-components/Pill/RcTag/RcTag.vue +94 -0
- package/rancher-components/Pill/RcTag/index.ts +1 -0
- package/rancher-components/Pill/RcTag/types.ts +9 -0
- package/rancher-components/Pill/types.ts +3 -0
- package/rancher-components/RcButton/RcButton.vue +1 -1
- package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +5 -0
- package/rancher-components/RcDropdown/RcDropdownItem.vue +7 -1
- package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +2 -1
- package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +2 -1
- package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
- package/rancher-components/RcDropdown/useDropdownItem.ts +30 -1
- package/rancher-components/RcItemCard/RcItemCard.test.ts +20 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +41 -6
- package/rancher-components/RcItemCard/RcItemCardAction.vue +12 -0
- package/store/__tests__/catalog.test.ts +156 -1
- package/store/aws.js +19 -8
- package/store/catalog.js +10 -5
- package/store/type-map.js +3 -15
- package/types/extension-manager.ts +26 -0
- package/types/resources/settings.d.ts +1 -1
- package/types/shell/index.d.ts +149 -44
- package/types/uiplugins.ts +73 -0
- package/utils/__tests__/back-off.test.ts +354 -0
- package/utils/__tests__/kontainer.test.ts +19 -0
- package/utils/__tests__/product.test.ts +129 -0
- package/utils/__tests__/resource.test.ts +87 -0
- package/utils/__tests__/uiplugins.test.ts +84 -0
- package/utils/alertmanagerconfig.js +2 -2
- package/utils/auth.js +3 -76
- package/utils/back-off.ts +176 -0
- package/utils/dynamic-importer.js +8 -0
- package/utils/kontainer.ts +3 -5
- package/utils/product.ts +39 -0
- package/utils/resource.ts +35 -0
- package/utils/select.js +0 -24
- package/utils/style.ts +3 -0
- package/utils/uiplugins.ts +29 -2
- package/utils/validators/__tests__/setting.test.js +92 -0
- package/utils/validators/formRules/__tests__/index.test.ts +91 -7
- package/utils/validators/formRules/index.ts +84 -8
- package/utils/validators/setting.js +17 -0
- package/vue.config.js +1 -1
- package/cloud-credential/__tests__/harvester.test.ts +0 -18
- package/components/Resource/Detail/Metadata/Rectangle.vue +0 -34
- package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +0 -24
- package/components/ResourceDetail/Masthead/__tests__/legacy.test.ts +0 -65
- package/components/ResourceDetail/__tests__/index.test.ts +0 -135
- package/components/ResourceDetail/legacy.vue +0 -562
- package/components/formatter/CloudCredExpired.vue +0 -69
- package/pages/explorer/resource/detail/configmap.vue +0 -42
- package/pages/explorer/resource/detail/projectsecret.vue +0 -9
- package/pages/explorer/resource/detail/secret.vue +0 -63
- package/utils/aws.js +0 -0
- /package/components/{ForceDirectedTreeChart.vue → ForceDirectedTreeChart/index.vue} +0 -0
|
@@ -17,8 +17,20 @@
|
|
|
17
17
|
<template>
|
|
18
18
|
<div
|
|
19
19
|
item-card-action
|
|
20
|
+
class="rc-item-card-action"
|
|
20
21
|
data-testid="rc-item-card-action"
|
|
21
22
|
>
|
|
22
23
|
<slot />
|
|
23
24
|
</div>
|
|
24
25
|
</template>
|
|
26
|
+
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
.rc-item-card-action {
|
|
29
|
+
.v-popper {
|
|
30
|
+
.icon-actions {
|
|
31
|
+
color: var(--body-text);
|
|
32
|
+
font-size: 19px;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CATALOG } from '@shell/config/types';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
state, getters, actions, mutations, filterAndArrangeCharts
|
|
4
|
+
} from '../catalog';
|
|
3
5
|
import { createStore } from 'vuex';
|
|
4
6
|
|
|
5
7
|
const clusterRepo = { _key: 'testClusterRepo' };
|
|
@@ -204,4 +206,157 @@ describe('catalog', () => {
|
|
|
204
206
|
expect(store.state[catalogStoreName].versionInfos).toStrictEqual({ });
|
|
205
207
|
});
|
|
206
208
|
});
|
|
209
|
+
|
|
210
|
+
describe('filterAndArrangeCharts', () => {
|
|
211
|
+
const mockCharts = [
|
|
212
|
+
{
|
|
213
|
+
chartName: 'chart-a',
|
|
214
|
+
chartNameDisplay: 'Chart Alpha',
|
|
215
|
+
chartDescription: 'Description for Alpha',
|
|
216
|
+
keywords: ['keyword1', 'keyword2'],
|
|
217
|
+
versions: [{ annotations: {}, version: '1.0.0' }],
|
|
218
|
+
deprecated: false,
|
|
219
|
+
hidden: false,
|
|
220
|
+
repoKey: 'repo1',
|
|
221
|
+
chartType: 'app',
|
|
222
|
+
categories: [],
|
|
223
|
+
tags: [],
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
chartName: 'chart-b',
|
|
227
|
+
chartNameDisplay: 'Chart Beta',
|
|
228
|
+
chartDescription: 'Description for Beta',
|
|
229
|
+
keywords: ['keyword2', 'keyword3'],
|
|
230
|
+
versions: [{ annotations: {}, version: '1.0.0' }],
|
|
231
|
+
deprecated: false,
|
|
232
|
+
hidden: false,
|
|
233
|
+
repoKey: 'repo1',
|
|
234
|
+
chartType: 'app',
|
|
235
|
+
categories: [],
|
|
236
|
+
tags: [],
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
chartName: 'chart-c',
|
|
240
|
+
chartNameDisplay: 'Chart Gamma',
|
|
241
|
+
chartDescription: 'Description for Gamma',
|
|
242
|
+
keywords: ['keyword3', 'keyword4'],
|
|
243
|
+
versions: [{ annotations: {}, version: '1.0.0' }],
|
|
244
|
+
deprecated: false,
|
|
245
|
+
hidden: false,
|
|
246
|
+
repoKey: 'repo1',
|
|
247
|
+
chartType: 'app',
|
|
248
|
+
categories: [],
|
|
249
|
+
tags: [],
|
|
250
|
+
},
|
|
251
|
+
];
|
|
252
|
+
|
|
253
|
+
it('should return all charts when no search query is provided', () => {
|
|
254
|
+
const result = filterAndArrangeCharts(mockCharts, {});
|
|
255
|
+
|
|
256
|
+
expect(result).toHaveLength(mockCharts.length);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it('should filter charts by name', () => {
|
|
260
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'Chart Alpha' });
|
|
261
|
+
|
|
262
|
+
expect(result).toHaveLength(1);
|
|
263
|
+
expect(result[0].chartNameDisplay).toBe('Chart Alpha');
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
it('should filter charts by description', () => {
|
|
267
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'Description for Beta' });
|
|
268
|
+
|
|
269
|
+
expect(result).toHaveLength(1);
|
|
270
|
+
expect(result[0].chartNameDisplay).toBe('Chart Beta');
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('should filter charts by keyword', () => {
|
|
274
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'keyword1' });
|
|
275
|
+
|
|
276
|
+
expect(result).toHaveLength(1);
|
|
277
|
+
expect(result[0].chartNameDisplay).toBe('Chart Alpha');
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('should handle multiple search tokens', () => {
|
|
281
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'Chart, keyword2' });
|
|
282
|
+
|
|
283
|
+
expect(result).toHaveLength(2);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
it('should be case-insensitive', () => {
|
|
287
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'chart alpha' });
|
|
288
|
+
|
|
289
|
+
expect(result).toHaveLength(1);
|
|
290
|
+
expect(result[0].chartNameDisplay).toBe('Chart Alpha');
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it('should return an empty array if no charts match', () => {
|
|
294
|
+
const result = filterAndArrangeCharts(mockCharts, { searchQuery: 'nonexistent' });
|
|
295
|
+
|
|
296
|
+
expect(result).toHaveLength(0);
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
describe('getters', () => {
|
|
301
|
+
describe('version', () => {
|
|
302
|
+
it('should find a version from a chart, respecting the showDeprecated flag for charts', () => {
|
|
303
|
+
// A regular chart with some versions
|
|
304
|
+
const regularChart = {
|
|
305
|
+
repoType: 'cluster',
|
|
306
|
+
repoName: 'rancher-charts',
|
|
307
|
+
chartName: 'regular-chart',
|
|
308
|
+
deprecated: false,
|
|
309
|
+
versions: [{ version: '1.2.3' }, { version: '1.2.4' }]
|
|
310
|
+
};
|
|
311
|
+
// A deprecated chart with some versions
|
|
312
|
+
const deprecatedChart = {
|
|
313
|
+
repoType: 'cluster',
|
|
314
|
+
repoName: 'rancher-charts',
|
|
315
|
+
chartName: 'deprecated-chart',
|
|
316
|
+
deprecated: true,
|
|
317
|
+
versions: [{ version: '2.0.0' }, { version: '2.1.0' }]
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
const allCharts = [regularChart, deprecatedChart];
|
|
321
|
+
const state = {};
|
|
322
|
+
const localGetters = {
|
|
323
|
+
charts: allCharts,
|
|
324
|
+
chart: (args: any) => getters.chart(state, { charts: allCharts })(args)
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
// Scenario 1: Get a version from a regular chart
|
|
328
|
+
const result1 = getters.version(state, localGetters)({
|
|
329
|
+
repoType: 'cluster',
|
|
330
|
+
repoName: 'rancher-charts',
|
|
331
|
+
chartName: 'regular-chart',
|
|
332
|
+
versionName: '1.2.3',
|
|
333
|
+
showDeprecated: false
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
expect(result1).toStrictEqual({ version: '1.2.3' });
|
|
337
|
+
|
|
338
|
+
// Scenario 2: Get a version from a deprecated chart
|
|
339
|
+
const result2 = getters.version(state, localGetters)({
|
|
340
|
+
repoType: 'cluster',
|
|
341
|
+
repoName: 'rancher-charts',
|
|
342
|
+
chartName: 'deprecated-chart',
|
|
343
|
+
versionName: '2.0.0',
|
|
344
|
+
showDeprecated: true
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
expect(result2).toStrictEqual({ version: '2.0.0' });
|
|
348
|
+
|
|
349
|
+
// Scenario 3: Try to get a version from a deprecated chart without the flag should fail
|
|
350
|
+
const result3 = getters.version(state, localGetters)({
|
|
351
|
+
repoType: 'cluster',
|
|
352
|
+
repoName: 'rancher-charts',
|
|
353
|
+
chartName: 'deprecated-chart',
|
|
354
|
+
versionName: '2.0.0',
|
|
355
|
+
showDeprecated: false
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
expect(result3).toBeNull();
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
});
|
|
207
362
|
});
|
package/store/aws.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { sortBy } from '@shell/utils/sort';
|
|
2
2
|
import { randomStr } from '@shell/utils/string';
|
|
3
|
-
import { FetchHttpHandler } from '@
|
|
3
|
+
import { FetchHttpHandler } from '@smithy/fetch-http-handler';
|
|
4
4
|
import { isArray, addObjects } from '@shell/utils/array';
|
|
5
5
|
|
|
6
6
|
export const state = () => {
|
|
@@ -11,26 +11,33 @@ export const state = () => {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
class Handler {
|
|
14
|
-
constructor(cloudCredentialId) {
|
|
14
|
+
constructor(cloudCredentialId, options) {
|
|
15
15
|
this.cloudCredentialId = (cloudCredentialId || '');
|
|
16
|
+
this.fetchHandler = new FetchHttpHandler(options);
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
handle(httpRequest,
|
|
19
|
+
async handle(httpRequest, options = {}) {
|
|
20
|
+
if (!httpRequest?.headers) {
|
|
21
|
+
httpRequest.headers = {};
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
httpRequest.headers['x-api-headers-restrict'] = 'Content-Length';
|
|
20
25
|
|
|
21
|
-
if (
|
|
26
|
+
if (this.cloudCredentialId) {
|
|
22
27
|
httpRequest.headers['x-api-cattleauth-header'] = `awsv4 credID=${ this.cloudCredentialId }`;
|
|
23
|
-
} else {
|
|
28
|
+
} else if (httpRequest?.headers['authorization']) {
|
|
24
29
|
httpRequest.headers['x-api-auth-header'] = httpRequest.headers['authorization'];
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
delete httpRequest.headers['authorization'];
|
|
28
33
|
|
|
29
|
-
httpRequest.headers['content-type']
|
|
34
|
+
const originalContentType = httpRequest.headers['content-type'] ?? '';
|
|
35
|
+
|
|
36
|
+
httpRequest.headers['content-type'] = originalContentType ? `rancher:${ originalContentType }` : 'rancher:';
|
|
30
37
|
|
|
31
38
|
const endpoint = `/meta/proxy/`;
|
|
32
39
|
|
|
33
|
-
if (
|
|
40
|
+
if (!httpRequest.path.startsWith(endpoint)) {
|
|
34
41
|
httpRequest.path = endpoint + httpRequest.hostname + httpRequest.path;
|
|
35
42
|
}
|
|
36
43
|
|
|
@@ -38,7 +45,7 @@ class Handler {
|
|
|
38
45
|
httpRequest.hostname = window.location.hostname;
|
|
39
46
|
httpRequest.port = window.location.port;
|
|
40
47
|
|
|
41
|
-
return
|
|
48
|
+
return this.fetchHandler.handle(httpRequest, options);
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
|
|
@@ -107,6 +114,7 @@ export const actions = {
|
|
|
107
114
|
region,
|
|
108
115
|
credentialDefaultProvider: credentialDefaultProvider(accessKey, secretKey),
|
|
109
116
|
requestHandler: new Handler(cloudCredentialId),
|
|
117
|
+
useDualstackEndpoint: true,
|
|
110
118
|
});
|
|
111
119
|
|
|
112
120
|
return client;
|
|
@@ -121,6 +129,7 @@ export const actions = {
|
|
|
121
129
|
region,
|
|
122
130
|
credentialDefaultProvider: credentialDefaultProvider(accessKey, secretKey),
|
|
123
131
|
requestHandler: new Handler(cloudCredentialId),
|
|
132
|
+
useDualstackEndpoint: true,
|
|
124
133
|
});
|
|
125
134
|
|
|
126
135
|
return client;
|
|
@@ -135,6 +144,7 @@ export const actions = {
|
|
|
135
144
|
region,
|
|
136
145
|
credentialDefaultProvider: credentialDefaultProvider(accessKey, secretKey),
|
|
137
146
|
requestHandler: new Handler(cloudCredentialId),
|
|
147
|
+
useDualstackEndpoint: true,
|
|
138
148
|
});
|
|
139
149
|
|
|
140
150
|
return client;
|
|
@@ -149,6 +159,7 @@ export const actions = {
|
|
|
149
159
|
region,
|
|
150
160
|
credentialDefaultProvider: credentialDefaultProvider(accessKey, secretKey),
|
|
151
161
|
requestHandler: new Handler(cloudCredentialId),
|
|
162
|
+
useDualstackEndpoint: true,
|
|
152
163
|
});
|
|
153
164
|
|
|
154
165
|
return client;
|
package/store/catalog.js
CHANGED
|
@@ -237,10 +237,10 @@ export const getters = {
|
|
|
237
237
|
|
|
238
238
|
version(state, getters) {
|
|
239
239
|
return ({
|
|
240
|
-
repoType, repoName, chartName, versionName
|
|
240
|
+
repoType, repoName, chartName, versionName, showDeprecated
|
|
241
241
|
}) => {
|
|
242
242
|
const chart = getters['chart']({
|
|
243
|
-
repoType, repoName, chartName
|
|
243
|
+
repoType, repoName, chartName, showDeprecated
|
|
244
244
|
});
|
|
245
245
|
|
|
246
246
|
if ( !chart ) {
|
|
@@ -539,6 +539,7 @@ function addChart(ctx, map, chart, repo) {
|
|
|
539
539
|
featuredIndex: chart.annotations?.[CATALOG_ANNOTATIONS.FEATURED] ? Number(chart.annotations?.[CATALOG_ANNOTATIONS.FEATURED]) : Number.MAX_SAFE_INTEGER,
|
|
540
540
|
repoKey: repo._key,
|
|
541
541
|
versions: [],
|
|
542
|
+
keywords: chart.keywords || [],
|
|
542
543
|
categories: filterCategories(chart.keywords),
|
|
543
544
|
deprecated: !!chart.deprecated,
|
|
544
545
|
experimental,
|
|
@@ -693,11 +694,15 @@ export function filterAndArrangeCharts(charts, {
|
|
|
693
694
|
if ( searchQuery ) {
|
|
694
695
|
// The search filter doesn't match
|
|
695
696
|
const searchTokens = searchQuery.split(/\s*[, ]\s*/).map((x) => ensureRegex(x, false));
|
|
697
|
+
const chartDescription = c.chartDescription || '';
|
|
698
|
+
const keywords = c.keywords || [];
|
|
696
699
|
|
|
697
|
-
for (
|
|
698
|
-
const
|
|
700
|
+
for (const token of searchTokens) {
|
|
701
|
+
const nameMatch = c.chartNameDisplay.match(token);
|
|
702
|
+
const descMatch = chartDescription.match(token);
|
|
703
|
+
const keywordMatch = keywords.some((k) => k.match(token));
|
|
699
704
|
|
|
700
|
-
if ( !
|
|
705
|
+
if (!nameMatch && !descMatch && !keywordMatch) {
|
|
701
706
|
return false;
|
|
702
707
|
}
|
|
703
708
|
}
|
package/store/type-map.js
CHANGED
|
@@ -103,8 +103,6 @@
|
|
|
103
103
|
// depaginate: undefined -- Use this to depaginate requests for this type
|
|
104
104
|
// resourceEditMasthead: true -- Show the Masthead in the edit resource component
|
|
105
105
|
// customRoute: undefined,
|
|
106
|
-
// hasGraph: undefined -- If true, render ForceDirectedTreeChart graph (ATTENTION: option graphConfig is needed also!!!)
|
|
107
|
-
// graphConfig: undefined -- Use this to pass along the graph configuration
|
|
108
106
|
// notFilterNamespace: undefined -- Define namespaces that do not need to be filtered
|
|
109
107
|
// localOnly: False -- Hide this type from the nav/search bar on downstream clusters
|
|
110
108
|
// custom: any - Custom options for a given type
|
|
@@ -208,7 +206,6 @@ export const SPOOFED_PREFIX = '__[[spoofed]]__';
|
|
|
208
206
|
export const SPOOFED_API_PREFIX = '__[[spoofedapi]]__';
|
|
209
207
|
|
|
210
208
|
const instanceMethods = {};
|
|
211
|
-
const graphConfigMap = {};
|
|
212
209
|
|
|
213
210
|
export const IF_HAVE = {
|
|
214
211
|
V2_MONITORING: 'v2-monitoring',
|
|
@@ -291,10 +288,6 @@ export function DSL(store, product, module = 'type-map') {
|
|
|
291
288
|
},
|
|
292
289
|
|
|
293
290
|
configureType(match, options) {
|
|
294
|
-
if (options.graphConfig) {
|
|
295
|
-
graphConfigMap[match] = options.graphConfig;
|
|
296
|
-
delete options.graphConfig;
|
|
297
|
-
}
|
|
298
291
|
store.commit(`${ module }/configureType`, { ...options, match });
|
|
299
292
|
},
|
|
300
293
|
|
|
@@ -1178,14 +1171,9 @@ export const getters = {
|
|
|
1178
1171
|
};
|
|
1179
1172
|
},
|
|
1180
1173
|
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
if (typeOptions && typeOptions.hasGraph) {
|
|
1186
|
-
return graphConfigMap[resource];
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1174
|
+
// This has to be left in to support extensions which use shell version 3.0.5-rc.8 or earlier, this extensions have a version of ResourceDetail/index.vue which still invokes this method.
|
|
1175
|
+
hasGraph() {
|
|
1176
|
+
return () => {
|
|
1189
1177
|
return null;
|
|
1190
1178
|
};
|
|
1191
1179
|
},
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ClusterProvisionerContext } from '@shell/core/types';
|
|
2
|
+
export type ExtensionManager = {
|
|
3
|
+
internal(): any;
|
|
4
|
+
loadPluginAsync(plugin: any): Promise<void>;
|
|
5
|
+
loadAsync(id: string, mainFile: string): Promise<void>;
|
|
6
|
+
loadBuiltinExtensions(): void;
|
|
7
|
+
registerBuiltinExtension(id: string, module: any): void;
|
|
8
|
+
initBuiltinExtension(id: string, module: any): void;
|
|
9
|
+
logout(): Promise<void>;
|
|
10
|
+
removePlugin(name: string): Promise<void>;
|
|
11
|
+
removeTypeFromStore(store: any, storeName: string, types: string[]): any[];
|
|
12
|
+
applyPlugin(plugin: any): void;
|
|
13
|
+
register(type: string, name: string, fn: Function): void;
|
|
14
|
+
unregister(type: string, name: string, fn: Function): void;
|
|
15
|
+
getAll(): any;
|
|
16
|
+
getPlugins(): any;
|
|
17
|
+
getDynamic(typeName: string, name: string): any;
|
|
18
|
+
getValidator(name: string): any;
|
|
19
|
+
getUIConfig(type: string, uiArea: string): any[];
|
|
20
|
+
getAllUIConfig(): any;
|
|
21
|
+
getProviders(context: ClusterProvisionerContext): any[];
|
|
22
|
+
lastLoad: number;
|
|
23
|
+
listDynamic(typeName: string): string[];
|
|
24
|
+
products: any[];
|
|
25
|
+
loadProducts(loadPlugins: any[]): void;
|
|
26
|
+
}
|
package/types/shell/index.d.ts
CHANGED
|
@@ -121,7 +121,6 @@ export namespace FLEET {
|
|
|
121
121
|
export { CLUSTER_NAMESPACE_1 as CLUSTER_NAMESPACE };
|
|
122
122
|
export let CLUSTER: string;
|
|
123
123
|
export let CREATED_BY_USER_ID: string;
|
|
124
|
-
export let CREATED_BY_USER_NAME: string;
|
|
125
124
|
export let OCI_STORAGE_SECRET_DEFAULT: string;
|
|
126
125
|
export let OCI_STORAGE_SECRET_GENERATED: string;
|
|
127
126
|
}
|
|
@@ -149,6 +148,7 @@ export namespace HCI {
|
|
|
149
148
|
let NETWORK_TYPE: string;
|
|
150
149
|
let CLUSTER_NETWORK: string;
|
|
151
150
|
let PRIMARY_SERVICE: string;
|
|
151
|
+
let CPU_MANAGER: string;
|
|
152
152
|
}
|
|
153
153
|
export namespace CLUSTER_BADGE {
|
|
154
154
|
export let TEXT: string;
|
|
@@ -157,9 +157,6 @@ export namespace CLUSTER_BADGE {
|
|
|
157
157
|
export let ICON_TEXT: string;
|
|
158
158
|
}
|
|
159
159
|
export const SYSTEM_LABELS: string[];
|
|
160
|
-
export namespace CLOUD_CREDENTIALS {
|
|
161
|
-
let EXPIRATION: string;
|
|
162
|
-
}
|
|
163
160
|
export namespace OIDC_CLIENT_SECRET_ANNOTATIONS {
|
|
164
161
|
let CREATE: string;
|
|
165
162
|
let REGEN: string;
|
|
@@ -201,6 +198,7 @@ export const _STAGE: "stage";
|
|
|
201
198
|
export const _IMPORT: "import";
|
|
202
199
|
export const LEGACY: "legacy";
|
|
203
200
|
export const AS: "as";
|
|
201
|
+
export const VIEW: "view";
|
|
204
202
|
export const _DETAIL: "detail";
|
|
205
203
|
export const _CONFIG: "config";
|
|
206
204
|
export const _YAML: "yaml";
|
|
@@ -2615,6 +2613,20 @@ export default class Namespace {
|
|
|
2615
2613
|
cleanForNew(): void;
|
|
2616
2614
|
metadata: any;
|
|
2617
2615
|
get hideDetailLocation(): boolean;
|
|
2616
|
+
get glance(): any[];
|
|
2617
|
+
get projectGlance(): {
|
|
2618
|
+
name: string;
|
|
2619
|
+
label: any;
|
|
2620
|
+
formatter: string;
|
|
2621
|
+
formatterOpts: {
|
|
2622
|
+
to: any;
|
|
2623
|
+
row: {};
|
|
2624
|
+
options: {
|
|
2625
|
+
internal: boolean;
|
|
2626
|
+
};
|
|
2627
|
+
};
|
|
2628
|
+
content: any;
|
|
2629
|
+
};
|
|
2618
2630
|
}
|
|
2619
2631
|
}
|
|
2620
2632
|
|
|
@@ -2789,6 +2801,9 @@ declare namespace _default {
|
|
|
2789
2801
|
export function createMany(ctx: any, data: any): any;
|
|
2790
2802
|
export function createPopulated(ctx: any, userData: any): Promise<any>;
|
|
2791
2803
|
export function clone(ctx: any, { resource }?: {}): any;
|
|
2804
|
+
/**
|
|
2805
|
+
* Remove all cached entries for a resource and stop watches
|
|
2806
|
+
*/
|
|
2792
2807
|
export function forgetType({ commit, dispatch, state }: {
|
|
2793
2808
|
commit: any;
|
|
2794
2809
|
dispatch: any;
|
|
@@ -3044,17 +3059,8 @@ export default class Resource {
|
|
|
3044
3059
|
hasCondition(condition: any): boolean;
|
|
3045
3060
|
isCondition(condition: any, withStatus?: string): boolean;
|
|
3046
3061
|
waitForCondition(name: any, withStatus?: string, timeoutMs?: number, intervalMs?: number): any;
|
|
3062
|
+
get canEdit(): any;
|
|
3047
3063
|
get availableActions(): ({
|
|
3048
|
-
divider: boolean;
|
|
3049
|
-
action?: undefined;
|
|
3050
|
-
label?: undefined;
|
|
3051
|
-
icon?: undefined;
|
|
3052
|
-
enabled?: undefined;
|
|
3053
|
-
bulkable?: undefined;
|
|
3054
|
-
bulkAction?: undefined;
|
|
3055
|
-
weight?: undefined;
|
|
3056
|
-
altAction?: undefined;
|
|
3057
|
-
} | {
|
|
3058
3064
|
action: string;
|
|
3059
3065
|
label: any;
|
|
3060
3066
|
icon: string;
|
|
@@ -3064,6 +3070,16 @@ export default class Resource {
|
|
|
3064
3070
|
bulkAction?: undefined;
|
|
3065
3071
|
weight?: undefined;
|
|
3066
3072
|
altAction?: undefined;
|
|
3073
|
+
} | {
|
|
3074
|
+
divider: boolean;
|
|
3075
|
+
action?: undefined;
|
|
3076
|
+
label?: undefined;
|
|
3077
|
+
icon?: undefined;
|
|
3078
|
+
enabled?: undefined;
|
|
3079
|
+
bulkable?: undefined;
|
|
3080
|
+
bulkAction?: undefined;
|
|
3081
|
+
weight?: undefined;
|
|
3082
|
+
altAction?: undefined;
|
|
3067
3083
|
} | {
|
|
3068
3084
|
action: string;
|
|
3069
3085
|
label: any;
|
|
@@ -3085,17 +3101,8 @@ export default class Resource {
|
|
|
3085
3101
|
weight: number;
|
|
3086
3102
|
divider?: undefined;
|
|
3087
3103
|
})[];
|
|
3104
|
+
showConfiguration(returnFocusSelector: any): void;
|
|
3088
3105
|
get _availableActions(): ({
|
|
3089
|
-
divider: boolean;
|
|
3090
|
-
action?: undefined;
|
|
3091
|
-
label?: undefined;
|
|
3092
|
-
icon?: undefined;
|
|
3093
|
-
enabled?: undefined;
|
|
3094
|
-
bulkable?: undefined;
|
|
3095
|
-
bulkAction?: undefined;
|
|
3096
|
-
weight?: undefined;
|
|
3097
|
-
altAction?: undefined;
|
|
3098
|
-
} | {
|
|
3099
3106
|
action: string;
|
|
3100
3107
|
label: any;
|
|
3101
3108
|
icon: string;
|
|
@@ -3105,6 +3112,16 @@ export default class Resource {
|
|
|
3105
3112
|
bulkAction?: undefined;
|
|
3106
3113
|
weight?: undefined;
|
|
3107
3114
|
altAction?: undefined;
|
|
3115
|
+
} | {
|
|
3116
|
+
divider: boolean;
|
|
3117
|
+
action?: undefined;
|
|
3118
|
+
label?: undefined;
|
|
3119
|
+
icon?: undefined;
|
|
3120
|
+
enabled?: undefined;
|
|
3121
|
+
bulkable?: undefined;
|
|
3122
|
+
bulkAction?: undefined;
|
|
3123
|
+
weight?: undefined;
|
|
3124
|
+
altAction?: undefined;
|
|
3108
3125
|
} | {
|
|
3109
3126
|
action: string;
|
|
3110
3127
|
label: any;
|
|
@@ -3272,6 +3289,112 @@ export default class Resource {
|
|
|
3272
3289
|
};
|
|
3273
3290
|
content: any;
|
|
3274
3291
|
})[];
|
|
3292
|
+
get glance(): ({
|
|
3293
|
+
name: string;
|
|
3294
|
+
label: any;
|
|
3295
|
+
formatter: string;
|
|
3296
|
+
formatterOpts: {
|
|
3297
|
+
row: this;
|
|
3298
|
+
to?: undefined;
|
|
3299
|
+
options?: undefined;
|
|
3300
|
+
};
|
|
3301
|
+
content: any;
|
|
3302
|
+
} | {
|
|
3303
|
+
name: string;
|
|
3304
|
+
label: any;
|
|
3305
|
+
formatter: string;
|
|
3306
|
+
formatterOpts: {
|
|
3307
|
+
to: {
|
|
3308
|
+
name: string;
|
|
3309
|
+
params: {
|
|
3310
|
+
product: any;
|
|
3311
|
+
cluster: any;
|
|
3312
|
+
resource: any;
|
|
3313
|
+
};
|
|
3314
|
+
};
|
|
3315
|
+
row: {};
|
|
3316
|
+
options: {
|
|
3317
|
+
internal: boolean;
|
|
3318
|
+
};
|
|
3319
|
+
};
|
|
3320
|
+
content: any;
|
|
3321
|
+
} | {
|
|
3322
|
+
name: string;
|
|
3323
|
+
label: any;
|
|
3324
|
+
formatter: string;
|
|
3325
|
+
formatterOpts: {
|
|
3326
|
+
to: {
|
|
3327
|
+
name: string;
|
|
3328
|
+
product: any;
|
|
3329
|
+
cluster: any;
|
|
3330
|
+
resource: any;
|
|
3331
|
+
};
|
|
3332
|
+
row: {};
|
|
3333
|
+
options: {
|
|
3334
|
+
internal: boolean;
|
|
3335
|
+
};
|
|
3336
|
+
};
|
|
3337
|
+
content: any;
|
|
3338
|
+
} | {
|
|
3339
|
+
name: string;
|
|
3340
|
+
label: any;
|
|
3341
|
+
formatter: string;
|
|
3342
|
+
content: any;
|
|
3343
|
+
formatterOpts?: undefined;
|
|
3344
|
+
})[];
|
|
3345
|
+
get _glance(): ({
|
|
3346
|
+
name: string;
|
|
3347
|
+
label: any;
|
|
3348
|
+
formatter: string;
|
|
3349
|
+
formatterOpts: {
|
|
3350
|
+
row: this;
|
|
3351
|
+
to?: undefined;
|
|
3352
|
+
options?: undefined;
|
|
3353
|
+
};
|
|
3354
|
+
content: any;
|
|
3355
|
+
} | {
|
|
3356
|
+
name: string;
|
|
3357
|
+
label: any;
|
|
3358
|
+
formatter: string;
|
|
3359
|
+
formatterOpts: {
|
|
3360
|
+
to: {
|
|
3361
|
+
name: string;
|
|
3362
|
+
params: {
|
|
3363
|
+
product: any;
|
|
3364
|
+
cluster: any;
|
|
3365
|
+
resource: any;
|
|
3366
|
+
};
|
|
3367
|
+
};
|
|
3368
|
+
row: {};
|
|
3369
|
+
options: {
|
|
3370
|
+
internal: boolean;
|
|
3371
|
+
};
|
|
3372
|
+
};
|
|
3373
|
+
content: any;
|
|
3374
|
+
} | {
|
|
3375
|
+
name: string;
|
|
3376
|
+
label: any;
|
|
3377
|
+
formatter: string;
|
|
3378
|
+
formatterOpts: {
|
|
3379
|
+
to: {
|
|
3380
|
+
name: string;
|
|
3381
|
+
product: any;
|
|
3382
|
+
cluster: any;
|
|
3383
|
+
resource: any;
|
|
3384
|
+
};
|
|
3385
|
+
row: {};
|
|
3386
|
+
options: {
|
|
3387
|
+
internal: boolean;
|
|
3388
|
+
};
|
|
3389
|
+
};
|
|
3390
|
+
content: any;
|
|
3391
|
+
} | {
|
|
3392
|
+
name: string;
|
|
3393
|
+
label: any;
|
|
3394
|
+
formatter: string;
|
|
3395
|
+
content: any;
|
|
3396
|
+
formatterOpts?: undefined;
|
|
3397
|
+
})[];
|
|
3275
3398
|
get t(): any;
|
|
3276
3399
|
findOwners(): any[];
|
|
3277
3400
|
getOwners(): any[];
|
|
@@ -3553,20 +3676,6 @@ export function parseAuthProvidersInfo(rows: any): {
|
|
|
3553
3676
|
};
|
|
3554
3677
|
enabled: any;
|
|
3555
3678
|
};
|
|
3556
|
-
/**
|
|
3557
|
-
* Attempt to set the product in our datastore if the route matches a known product. Otherwise show an error page instead.
|
|
3558
|
-
*/
|
|
3559
|
-
export function setProduct(store: any, to: any): any;
|
|
3560
|
-
/**
|
|
3561
|
-
* Check that the resource is valid, if not redirect to fail whale
|
|
3562
|
-
*
|
|
3563
|
-
* This requires that
|
|
3564
|
-
* - product is set
|
|
3565
|
-
* - product's store is set and setup (so we can check schema's within it)
|
|
3566
|
-
* - product's store has the schemaFor getter (extension stores might not have it)
|
|
3567
|
-
* - there's a resource associated with route (meta or param)
|
|
3568
|
-
*/
|
|
3569
|
-
export function validateResource(store: any, to: any): boolean;
|
|
3570
3679
|
/**
|
|
3571
3680
|
* Attempt to load the current user's principal
|
|
3572
3681
|
*/
|
|
@@ -3594,11 +3703,6 @@ export function checkPermissions(types: any, getters: any): any;
|
|
|
3594
3703
|
export function canViewResource(store: any, resource: any): boolean;
|
|
3595
3704
|
}
|
|
3596
3705
|
|
|
3597
|
-
// @shell/utils/aws
|
|
3598
|
-
|
|
3599
|
-
declare module '@shell/utils/aws' {
|
|
3600
|
-
}
|
|
3601
|
-
|
|
3602
3706
|
// @shell/utils/axios
|
|
3603
3707
|
|
|
3604
3708
|
declare module '@shell/utils/axios' {
|
|
@@ -3988,6 +4092,7 @@ export function importList(name: any): any;
|
|
|
3988
4092
|
export function importDetail(name: any): any;
|
|
3989
4093
|
export function importEdit(name: any): any;
|
|
3990
4094
|
export function importDialog(name: any): any;
|
|
4095
|
+
export function importDrawer(name: any): any;
|
|
3991
4096
|
export function importWindowComponent(name: any): any;
|
|
3992
4097
|
export function loadProduct(name: any): Promise<any>;
|
|
3993
4098
|
export function listProducts(): string[];
|
|
@@ -4390,7 +4495,6 @@ export function routeRequiresInstallRedirect(to: any): boolean;
|
|
|
4390
4495
|
// @shell/utils/select
|
|
4391
4496
|
|
|
4392
4497
|
declare module '@shell/utils/select' {
|
|
4393
|
-
export function onClickOption(option: any, e: any): void;
|
|
4394
4498
|
export function calculatePosition(dropdownList: any, component: any, width: any, placement: any): void;
|
|
4395
4499
|
}
|
|
4396
4500
|
|
|
@@ -4855,6 +4959,7 @@ export function externalName(spec: any, getters: any, errors: any, validatorArgs
|
|
|
4855
4959
|
declare module '@shell/utils/validators/setting' {
|
|
4856
4960
|
export function isServerUrl(value: any): boolean;
|
|
4857
4961
|
export function isHttps(value: any): any;
|
|
4962
|
+
export function isDomainWithoutProtocol(value: any): boolean;
|
|
4858
4963
|
export function isLocalhost(value: any): boolean;
|
|
4859
4964
|
export function hasTrailingForwardSlash(value: any): any;
|
|
4860
4965
|
}
|