@rancher/shell 3.0.12-rc.1 → 3.0.12-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/apis/impl/apis.ts +6 -0
- package/apis/index.ts +26 -0
- package/apis/intf/resources-api/cluster-api.ts +18 -0
- package/apis/intf/resources-api/mgmt-api.ts +15 -0
- package/apis/intf/resources-api/resource-base.ts +107 -0
- package/apis/intf/resources-api/resource-constants.ts +147 -0
- package/apis/intf/resources-api/resources-api.ts +143 -0
- package/apis/intf/resources.ts +49 -0
- package/apis/intf/{modal.ts → shell-api/modal.ts} +21 -26
- package/apis/intf/shell-api/proxy.ts +216 -0
- package/apis/intf/{slide-in.ts → shell-api/slide-in.ts} +4 -3
- package/apis/intf/{system.ts → shell-api/system.ts} +4 -1
- package/apis/intf/shell.ts +12 -6
- package/apis/resources/__tests__/resources-api-class.test.ts +550 -0
- package/apis/resources/index.ts +22 -0
- package/apis/resources/resources-api-class.ts +187 -0
- package/apis/shell/__tests__/proxy.test.ts +369 -0
- package/apis/shell/index.ts +8 -1
- package/apis/shell/modal.ts +4 -1
- package/apis/shell/notifications.ts +9 -6
- package/apis/shell/proxy.ts +256 -0
- package/apis/shell/slide-in.ts +4 -1
- package/apis/vue-shim.d.ts +2 -1
- package/assets/data/aws-regions.json +4 -0
- package/assets/fonts/lato/LatoLatin-Black.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Black.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-BlackItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-BlackItalic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Bold.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Bold.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-BoldItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-BoldItalic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Heavy.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Heavy.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-HeavyItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-HeavyItalic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Italic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Italic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Light.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Light.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-LightItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-LightItalic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Medium.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Medium.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-MediumItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-MediumItalic.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Regular.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Regular.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-Semibold.woff +0 -0
- package/assets/fonts/lato/LatoLatin-Semibold.woff2 +0 -0
- package/assets/fonts/lato/LatoLatin-SemiboldItalic.woff +0 -0
- package/assets/fonts/lato/LatoLatin-SemiboldItalic.woff2 +0 -0
- package/assets/images/providers/entraid-black.svg +4 -0
- package/assets/images/providers/entraid.svg +9 -0
- package/assets/images/vendor/entraid.svg +9 -0
- package/assets/styles/app.scss +0 -1
- package/assets/styles/base/_variables.scss +2 -0
- package/assets/styles/fonts/_fontstack.scss +132 -8
- package/assets/translations/en-us.yaml +41 -22
- package/assets/translations/zh-hans.yaml +4 -8
- package/chart/__tests__/S3.test.ts +10 -3
- package/chart/monitoring/index.vue +10 -1
- package/components/ActionDropdownShell.vue +2 -1
- package/components/CountBox.vue +20 -0
- package/components/CreateDriver.vue +0 -12
- package/components/CruResourceFooter.vue +9 -5
- package/components/DetailText.vue +12 -3
- package/components/ExplorerProjectsNamespaces.vue +1 -1
- package/components/InstallHelmCharts.vue +2 -2
- package/components/LandingPagePreference.vue +14 -5
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +15 -1
- package/components/Resource/Detail/Metadata/index.vue +6 -0
- package/components/Resource/Detail/ResourcePopover/index.vue +12 -1
- package/components/Resource/Detail/SpacedRow.vue +3 -1
- package/components/Resource/Detail/TitleBar/index.vue +10 -11
- package/components/ResourceList/Masthead.vue +12 -8
- package/components/SelectIconGrid.vue +5 -10
- package/components/SingleClusterInfo.vue +1 -0
- package/components/SortableTable/__tests__/sorting.test.ts +126 -0
- package/components/SortableTable/index.vue +6 -9
- package/components/SortableTable/selection.js +23 -5
- package/components/SortableTable/sorting.js +6 -3
- package/components/Wizard.vue +14 -13
- package/components/__tests__/CountBox.test.ts +72 -0
- package/components/__tests__/DetailText.test.ts +113 -0
- package/components/fleet/FleetBundles.vue +100 -12
- package/components/fleet/FleetClusterTargets/index.vue +54 -15
- package/components/fleet/__tests__/FleetClusterTargets.test.ts +149 -115
- package/components/fleet/__tests__/FleetClusters.test.ts +12 -12
- package/components/form/InputWithSelect.vue +18 -10
- package/components/form/KeyValue.vue +17 -1
- package/components/form/LabeledSelect.vue +101 -26
- package/components/form/NameNsDescription.vue +11 -0
- package/components/form/Security.vue +6 -2
- package/components/form/Select.vue +73 -56
- package/components/form/ServiceNameSelect.vue +13 -11
- package/components/form/WorkloadPorts.vue +2 -7
- package/components/form/__tests__/KeyValue.test.ts +66 -0
- package/components/form/__tests__/NodeScheduling.test.ts +9 -0
- package/components/form/__tests__/Security.test.ts +76 -0
- package/components/form/labeled-select-utils/useLabeledSelectPagination.ts +138 -0
- package/components/formatter/Autoscaler.vue +4 -4
- package/components/formatter/ClusterKubeVersion.vue +27 -0
- package/components/formatter/ClusterLink.vue +1 -7
- package/components/formatter/ClusterProvider.vue +6 -10
- package/components/formatter/FleetSummaryGraph.vue +0 -3
- package/components/formatter/MachineSummaryGraph.vue +1 -1
- package/components/formatter/PodsUsage.vue +2 -2
- package/components/formatter/__tests__/Autoscaler.test.ts +19 -22
- package/components/formatter/__tests__/FleetSummaryGraph.test.ts +216 -0
- package/components/formatter/__tests__/PodsUsage.test.ts +6 -10
- package/components/nav/Group.vue +7 -6
- package/components/nav/Header.vue +24 -3
- package/components/nav/NamespaceFilter.vue +2 -2
- package/components/nav/NotificationCenter/Notification.vue +4 -1
- package/components/nav/NotificationCenter/NotificationHeader.vue +20 -8
- package/components/nav/NotificationCenter/__tests__/NotificationHeader.test.ts +80 -0
- package/components/nav/TopLevelMenu.helper.ts +15 -3
- package/components/nav/TopLevelMenu.vue +16 -5
- package/components/nav/Type.vue +8 -7
- package/components/nav/WindowManager/index.vue +2 -1
- package/components/nav/WorkspaceSwitcher.vue +13 -0
- package/components/nav/__tests__/Group.test.ts +67 -0
- package/components/nav/__tests__/Header.test.ts +235 -0
- package/components/nav/__tests__/TopLevelMenu.test.ts +145 -21
- package/components/nav/__tests__/Type.test.ts +20 -3
- package/components/templates/default.vue +34 -4
- package/components/templates/home.vue +30 -25
- package/components/templates/plain.vue +31 -26
- package/components/templates/standalone.vue +17 -0
- package/composables/useFormValidation.ts +93 -0
- package/composables/useLabeledFormElement.ts +10 -2
- package/composables/useLabeledSelect.ts +60 -0
- package/composables/useUserRetentionValidation.ts +1 -49
- package/composables/useVeeValidateField.test.ts +159 -0
- package/composables/useVeeValidateField.ts +67 -0
- package/config/cookies.js +0 -1
- package/config/labels-annotations.js +1 -0
- package/config/pagination-table-headers.js +18 -1
- package/config/product/manager.js +82 -21
- package/config/query-params.js +1 -0
- package/config/router/routes.js +6 -8
- package/config/table-headers.js +20 -1
- package/config/types.js +2 -1
- package/core/__tests__/plugin-products.test.ts +1505 -30
- package/core/plugin-products-base.ts +137 -20
- package/core/plugin-products-helpers.ts +5 -4
- package/core/plugin-products.ts +4 -0
- package/core/plugin-types.ts +129 -4
- package/core/plugin.ts +15 -7
- package/core/productDebugger.js +9 -4
- package/core/types-provisioning.ts +43 -30
- package/core/types.ts +58 -19
- package/detail/__tests__/management.cattle.io.fleetworkspace.test.ts +128 -0
- package/detail/__tests__/pod.test.ts +41 -0
- package/detail/harvesterhci.io.management.cluster.vue +6 -2
- package/detail/management.cattle.io.fleetworkspace.vue +49 -0
- package/detail/pod.vue +1 -1
- package/detail/provisioning.cattle.io.cluster.vue +4 -10
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +9 -0
- package/edit/__tests__/kontainerDriver.test.ts +0 -13
- package/edit/__tests__/nodeDriver.test.ts +5 -11
- package/edit/__tests__/resources.cattle.io.restore.test.ts +9 -0
- package/edit/auditlog.cattle.io.auditpolicy/__tests__/__snapshots__/General.test.ts.snap +6 -0
- package/edit/auth/__tests__/azuread.test.ts +217 -34
- package/edit/auth/__tests__/oidc.test.ts +54 -0
- package/edit/auth/azuread.vue +123 -15
- package/edit/auth/oidc.vue +10 -2
- package/edit/kontainerDriver.vue +1 -2
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +13 -4
- package/edit/networking.k8s.io.ingress/RulePath.vue +8 -4
- package/edit/networking.k8s.io.ingress/index.vue +75 -20
- package/edit/nodeDriver.vue +0 -2
- package/edit/provisioning.cattle.io.cluster/AgentEnv.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/AgentEnv.test.ts +25 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/MachinePool.test.ts +104 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +81 -106
- package/edit/provisioning.cattle.io.cluster/rke2.vue +8 -4
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +11 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +37 -4
- package/edit/provisioning.cattle.io.cluster/tabs/registries/__tests__/RegistryConfigs.test.ts +132 -7
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +2 -1
- package/edit/secret/__tests__/ssh.test.ts +5 -6
- package/edit/secret/basic.vue +31 -0
- package/edit/secret/index.vue +68 -17
- package/edit/secret/registry.vue +38 -0
- package/edit/secret/ssh.vue +29 -0
- package/edit/secret/tls.vue +30 -0
- package/edit/service.vue +4 -4
- package/edit/workload/Upgrading.vue +3 -3
- package/edit/workload/__tests__/Upgrading.test.ts +6 -9
- package/edit/workload/mixins/workload.js +2 -1
- package/initialize/App.vue +29 -2
- package/initialize/install-plugins.js +0 -2
- package/list/__tests__/management.cattle.io.feature.test.ts +105 -0
- package/list/catalog.cattle.io.app.vue +25 -5
- package/list/fleet.cattle.io.bundle.vue +7 -104
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +20 -0
- package/list/management.cattle.io.feature.vue +1 -1
- package/list/management.cattle.io.fleetworkspace.vue +8 -0
- package/list/provisioning.cattle.io.cluster.vue +262 -180
- package/list/utils/management.cattle.io.cluster.utils.ts +128 -0
- package/machine-config/amazonec2.vue +1 -0
- package/mixins/__tests__/chart.test.ts +112 -0
- package/mixins/brand.js +2 -1
- package/mixins/chart.js +50 -15
- package/mixins/resource-fetch-api-pagination.js +41 -5
- package/models/__tests__/catalog.cattle.io.app.test.ts +15 -1
- package/models/__tests__/catalog.cattle.io.clusterrepo.test.ts +84 -0
- package/models/__tests__/chart.test.ts +99 -6
- package/models/__tests__/ext.cattle.io.kubeconfig.test.ts +67 -67
- package/models/__tests__/management.cattle.io.cluster.test.ts +1 -1
- package/models/__tests__/management.cattle.io.feature.test.ts +131 -0
- package/models/__tests__/management.cattle.io.node.ts +6 -5
- package/models/__tests__/management.cattle.io.nodepool.ts +5 -4
- package/models/__tests__/monitoring.coreos.com.alertmanagerconfig.test.ts +98 -0
- package/models/__tests__/provisioning.cattle.io.cluster.test.ts +32 -11
- package/models/base-cluster.x-k8s.io.js +26 -0
- package/models/catalog.cattle.io.app.js +21 -17
- package/models/catalog.cattle.io.clusterrepo.js +39 -11
- package/models/chart.js +33 -19
- package/models/cluster.js +1 -1
- package/models/cluster.x-k8s.io.machine.js +4 -22
- package/models/cluster.x-k8s.io.machinedeployment.js +2 -20
- package/models/cluster.x-k8s.io.machineset.js +2 -20
- package/models/compliance.cattle.io.clusterscan.js +130 -2
- package/models/ext.cattle.io.kubeconfig.ts +4 -7
- package/models/fleet-application.js +4 -2
- package/models/fleet.cattle.io.bundle.js +1 -1
- package/models/kontainerdriver.js +11 -0
- package/models/management.cattle.io.authconfig.js +5 -1
- package/models/management.cattle.io.cluster.js +402 -78
- package/models/management.cattle.io.feature.js +3 -3
- package/models/management.cattle.io.kontainerdriver.js +1 -26
- package/models/management.cattle.io.node.js +6 -4
- package/models/management.cattle.io.nodepool.js +1 -1
- package/models/monitoring.coreos.com.alertmanagerconfig.js +31 -17
- package/models/networking.k8s.io.ingress.js +12 -4
- package/models/nodedriver.js +7 -0
- package/models/provisioning.cattle.io.cluster.js +47 -330
- package/models/rke.cattle.io.etcdsnapshot.js +1 -2
- package/package.json +20 -37
- package/pages/__tests__/readme.test.ts +49 -0
- package/pages/auth/setup.vue +2 -3
- package/pages/c/_cluster/apps/charts/__tests__/chart.test.ts +265 -0
- package/pages/c/_cluster/apps/charts/__tests__/index.test.ts +55 -0
- package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +53 -0
- package/pages/c/_cluster/apps/charts/chart.vue +275 -39
- package/pages/c/_cluster/apps/charts/index.vue +2 -2
- package/pages/c/_cluster/apps/charts/install.vue +18 -10
- package/pages/c/_cluster/auth/user.retention/index.vue +55 -22
- package/pages/c/_cluster/explorer/__tests__/index.test.ts +23 -25
- package/pages/c/_cluster/explorer/index.vue +5 -49
- package/pages/c/_cluster/istio/__tests__/istio.index.test.ts +194 -0
- package/pages/c/_cluster/istio/index.vue +21 -6
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -7
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +40 -2
- package/pages/c/_cluster/uiplugins/__tests__/PluginInfoPanel.test.ts +61 -0
- package/pages/c/_cluster/uiplugins/__tests__/index.test.ts +735 -13
- package/pages/c/_cluster/uiplugins/index.vue +226 -222
- package/pages/diagnostic.vue +13 -17
- package/pages/fail-whale.vue +18 -0
- package/pages/home.vue +77 -260
- package/pages/readme.vue +88 -0
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +88 -0
- package/plugins/dashboard-store/actions.js +40 -18
- package/plugins/dashboard-store/resource-class.js +5 -2
- package/plugins/steve/__tests__/subscribe.spec.ts +6 -3
- package/plugins/steve/steve-pagination-utils.ts +11 -3
- package/plugins/steve/subscribe.js +35 -5
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +211 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +37 -4
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -1
- package/rancher-components/RcButton/RcButton.test.ts +37 -1
- package/rancher-components/RcButton/RcButton.vue +38 -8
- package/rancher-components/RcDropdown/RcDropdownTrigger.vue +10 -8
- package/scripts/test-plugins-build.sh +5 -2
- package/server/server-middleware.js +2 -2
- package/static/humans.txt +1 -0
- package/static/robots.txt +34 -0
- package/static/welcome-cow.svg +18 -0
- package/store/__tests__/catalog.test.ts +276 -12
- package/store/__tests__/type-map.test.ts +556 -1
- package/store/action-menu.js +8 -3
- package/store/auth.js +1 -4
- package/store/aws.js +27 -16
- package/store/catalog.js +87 -11
- package/store/digitalocean.js +20 -38
- package/store/index.js +2 -0
- package/store/linode.js +25 -40
- package/store/pnap.js +1 -0
- package/store/type-map.js +111 -29
- package/tsconfig.paths.json +8 -8
- package/types/kube/kube-api.ts +14 -1
- package/types/rancher/steve.api.ts +12 -12
- package/types/resources/settings.d.ts +2 -1
- package/types/shell/index.d.ts +128 -24
- package/types/store/dashboard-store.types.ts +108 -11
- package/types/store/pagination.types.ts +6 -3
- package/utils/__tests__/alertmanagerconfig.test.ts +117 -0
- package/utils/__tests__/async.test.ts +87 -0
- package/utils/__tests__/aws.test.ts +140 -0
- package/utils/__tests__/banners.test.ts +176 -0
- package/utils/__tests__/chart.test.ts +64 -1
- package/utils/__tests__/color.test.ts +226 -0
- package/utils/__tests__/duration.test.ts +140 -0
- package/utils/__tests__/fleet.test.ts +340 -0
- package/utils/__tests__/git.test.ts +270 -0
- package/utils/__tests__/inactivity.test.ts +316 -0
- package/utils/__tests__/ingress.test.ts +553 -0
- package/utils/__tests__/kube.test.ts +68 -0
- package/utils/__tests__/namespace-filter.test.ts +109 -0
- package/utils/__tests__/object.test.ts +77 -0
- package/utils/__tests__/pagination-utils.test.ts +361 -0
- package/utils/__tests__/parse-externalid.test.ts +137 -0
- package/utils/__tests__/perf-setting.utils.test.ts +98 -0
- package/utils/__tests__/poller-sequential.test.ts +177 -0
- package/utils/__tests__/poller.test.ts +170 -0
- package/utils/__tests__/promise.test.ts +346 -0
- package/utils/__tests__/settings.test.ts +140 -0
- package/utils/__tests__/sort-utils.test.ts +301 -0
- package/utils/__tests__/string-utils.test.ts +798 -0
- package/utils/__tests__/string.test.ts +23 -1
- package/utils/__tests__/style.test.ts +154 -0
- package/utils/__tests__/svg-filter.test.ts +184 -0
- package/utils/__tests__/time.test.ts +14 -1
- package/utils/__tests__/units.test.ts +417 -0
- package/utils/__tests__/url.test.ts +246 -0
- package/utils/__tests__/versions.test.ts +128 -0
- package/utils/__tests__/xccdf.test.ts +391 -0
- package/utils/chart.js +36 -0
- package/utils/fleet.ts +13 -3
- package/utils/gatekeeper/__tests__/util.test.ts +174 -0
- package/utils/gc/__tests__/gc-interval.test.ts +119 -0
- package/utils/gc/__tests__/gc-root-store.test.ts +225 -0
- package/utils/gc/__tests__/gc-route-changed.test.ts +96 -0
- package/utils/gc/__tests__/gc.test.ts +487 -0
- package/utils/ingress.ts +9 -1
- package/utils/object.js +33 -2
- package/utils/pagination-utils.ts +2 -1
- package/utils/string.js +25 -2
- package/utils/time.ts +5 -0
- package/utils/uiplugins.ts +5 -5
- package/utils/validators/__tests__/cluster-name.test.ts +110 -0
- package/utils/validators/__tests__/cron-schedule.test.ts +79 -0
- package/utils/validators/__tests__/index.test.ts +481 -0
- package/utils/validators/__tests__/kubernetes-name.test.ts +163 -0
- package/utils/validators/__tests__/misc-validators.test.ts +246 -0
- package/utils/validators/__tests__/pod-affinity.test.ts +382 -0
- package/utils/validators/__tests__/prometheusrule.test.ts +211 -0
- package/utils/validators/__tests__/role-template.test.ts +149 -0
- package/utils/validators/__tests__/service.test.ts +283 -0
- package/utils/validators/__tests__/setting.test.js +32 -0
- package/utils/validators/formRules/__tests__/index.test.ts +50 -0
- package/utils/validators/formRules/index.ts +5 -5
- package/utils/validators/machine-pool.ts +1 -1
- package/utils/validators/setting.js +18 -3
- package/utils/xccdf.ts +418 -0
- package/vue.config.js +0 -9
- package/assets/fonts/lato/lato-v17-latin-700.woff +0 -0
- package/assets/fonts/lato/lato-v17-latin-700.woff2 +0 -0
- package/assets/fonts/lato/lato-v17-latin-regular.woff +0 -0
- package/assets/fonts/lato/lato-v17-latin-regular.woff2 +0 -0
- package/assets/images/providers/azuread-black.svg +0 -22
- package/assets/images/providers/azuread.svg +0 -25
- package/assets/images/vendor/azuread.svg +0 -18
- package/assets/styles/fonts/_dots.scss +0 -18
- package/components/EmberPage.vue +0 -622
- package/components/EmberPageView.vue +0 -39
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +0 -116
- package/mixins/labeled-form-element.ts +0 -225
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -28
- package/pages/c/_cluster/manager/pages/_page.vue +0 -22
- package/pages/c/_cluster/mcapps/pages/_page.vue +0 -22
- package/plugins/ember-cookie.js +0 -17
- package/utils/ember-page.js +0 -30
package/apis/impl/apis.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { throttle } from 'lodash';
|
|
2
2
|
import { createExtensionManager } from '@shell/core/extension-manager-impl';
|
|
3
3
|
import { ShellApiImpl } from '@shell/apis/shell';
|
|
4
|
+
import { ResourcesApiImpl } from '@shell/apis/resources';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Initialise the APIs that are available in the shell
|
|
@@ -21,6 +22,11 @@ export function initUiApis(context: any, inject: any, vueApp: any) {
|
|
|
21
22
|
// Shell API
|
|
22
23
|
// ======================================================================================================================
|
|
23
24
|
registerApi('shell', new ShellApiImpl(context.store), inject, vueApp);
|
|
25
|
+
|
|
26
|
+
// ======================================================================================================================
|
|
27
|
+
// Resources API
|
|
28
|
+
// ======================================================================================================================
|
|
29
|
+
registerApi('resources', new ResourcesApiImpl(context.store), inject, vueApp);
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
// ======================================================================================================================
|
package/apis/index.ts
CHANGED
|
@@ -3,11 +3,16 @@
|
|
|
3
3
|
import { inject } from 'vue';
|
|
4
4
|
import { ExtensionManager } from '@shell/types/extension-manager';
|
|
5
5
|
import { ShellApi as ShellApiImport } from '@shell/apis/intf/shell';
|
|
6
|
+
import { ResourcesApiProvider as ResourcesApiProviderImport } from '@shell/apis/intf/resources';
|
|
6
7
|
|
|
7
8
|
// Re-export the types for the APIs, so they appear in this module
|
|
8
9
|
export type ShellApi = ShellApiImport;
|
|
10
|
+
export type ResourcesApiProvider = ResourcesApiProviderImport;
|
|
9
11
|
export type ExtensionManagerApi = ExtensionManager;
|
|
10
12
|
|
|
13
|
+
// Re-export resource types and constants
|
|
14
|
+
export * from '@shell/apis/intf/resources';
|
|
15
|
+
|
|
11
16
|
/**
|
|
12
17
|
* Returns an object that can be used to access the registered extension manager instance.
|
|
13
18
|
*
|
|
@@ -26,6 +31,27 @@ export const useShell = (): ShellApi => {
|
|
|
26
31
|
return getApi<ShellApi>('$shell', 'useShell');
|
|
27
32
|
};
|
|
28
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Returns an object that implements the ResourcesApiProvider interface.
|
|
36
|
+
* Provides type-safe access to cluster and management resources.
|
|
37
|
+
*
|
|
38
|
+
* @returns Returns an object that implements the ResourcesApiProvider interface
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
43
|
+
*
|
|
44
|
+
* // Cluster-scoped resources (current cluster context)
|
|
45
|
+
* const pod = await resources.cluster.find(K8S.POD, 'default/my-pod-123');
|
|
46
|
+
*
|
|
47
|
+
* // Management/global resources
|
|
48
|
+
* const user = await resources.mgmt.find(K8S.USER, 'u-xyz789');
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export const useResources = (): ResourcesApiProvider => {
|
|
52
|
+
return getApi<ResourcesApiProvider>('$resources', 'useResources');
|
|
53
|
+
};
|
|
54
|
+
|
|
29
55
|
// =================================================================================================================
|
|
30
56
|
// Internal helper to get any API by key with error handling
|
|
31
57
|
// =================================================================================================================
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ResourcesApi } from './resources-api';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @interface
|
|
5
|
+
* Provides access to the Cluster API which can be used for managing cluster resources in Rancher UI
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
10
|
+
*
|
|
11
|
+
* // Cluster-scoped resources (current cluster context)
|
|
12
|
+
* const pod = await resources.cluster.find(K8S.POD, 'default/my-pod-123');
|
|
13
|
+
*
|
|
14
|
+
* // Management/global resources
|
|
15
|
+
* const user = await resources.mgmt.find(K8S.USER, 'u-xyz789');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export type ClusterApi = ResourcesApi
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResourcesApi } from './resources-api';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @interface
|
|
5
|
+
* Provides access to the Management layer in Rancher UI (users, global settings, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
10
|
+
* const resources = useResources();
|
|
11
|
+
*
|
|
12
|
+
* const user = await resources.mgmt.find(K8S.USER, 'u-xyz789');
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export type MgmtApi = ResourcesApi
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { K8SResourceType } from './resource-constants';
|
|
2
|
+
import {
|
|
3
|
+
ActionFindAllArgs, ActionFindArgs,
|
|
4
|
+
ActionFindMatchingArgs,
|
|
5
|
+
ActionFindPageArgs,
|
|
6
|
+
ActionFindPageResponse, ActionFindMatchingResponse
|
|
7
|
+
} from '@shell/types/store/dashboard-store.types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @interface
|
|
11
|
+
* The type of the resource - can be a **string** (for CRDs) or a constant from **{@link K8S}**
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { K8S } from '@shell/apis';
|
|
16
|
+
*
|
|
17
|
+
* // Using constants (recommended)
|
|
18
|
+
* resources.cluster.findAll(K8S.POD);
|
|
19
|
+
*
|
|
20
|
+
* // Using strings (for CRDs or dynamic resources)
|
|
21
|
+
* resources.cluster.findAll('mycompany.io.customresource');
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export type ResourceType = K8SResourceType | string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @interface
|
|
28
|
+
* Resources API "findAll" options
|
|
29
|
+
*/
|
|
30
|
+
export type FindAllMethodOptions = Omit<ActionFindAllArgs, 'hasManualRefresh' | 'depaginate' | 'saveCountAs' | 'incremental'>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @interface
|
|
34
|
+
* Resources API "find" options
|
|
35
|
+
*/
|
|
36
|
+
export type FindMethodOptions = Omit<ActionFindArgs, 'invalidatePageCache' | 'method' | 'headers'>;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @interface
|
|
40
|
+
* Options for `findFiltered` when using label selector matching (label selector mode).
|
|
41
|
+
*
|
|
42
|
+
* Filters resources by `labelSelector` (matchLabels / matchExpressions).
|
|
43
|
+
* The store automatically handles pagination:
|
|
44
|
+
* - If `ui-sql-cache` is enabled: uses server-side pagination
|
|
45
|
+
* - Otherwise: uses native Kubernetes API pagination
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
50
|
+
*
|
|
51
|
+
* const resources = useResources();
|
|
52
|
+
*
|
|
53
|
+
* const pods = await resources.cluster.findFiltered(K8S.POD, {
|
|
54
|
+
* labelSelector: { matchLabels: { type: 'my-type' } }
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export type FindFilteredLabelSelectorOptions = Omit<ActionFindMatchingArgs, 'depaginate'>;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @interface
|
|
62
|
+
* Options for `findFiltered` when using server-side pagination (pagination mode).
|
|
63
|
+
*
|
|
64
|
+
* Requires `pagination` settings for server-side filtering, sorting, and pagination
|
|
65
|
+
* via the Steve API's pagination cache. **Only available when `ui-sql-cache` is enabled.**
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
70
|
+
*
|
|
71
|
+
* const resources = useResources();
|
|
72
|
+
*
|
|
73
|
+
* const pods = await resources.cluster.findFiltered(K8S.POD, {
|
|
74
|
+
* pagination: {
|
|
75
|
+
* page: 1,
|
|
76
|
+
* pageSize: 10,
|
|
77
|
+
* projectsOrNamespaces: [],
|
|
78
|
+
* filters: [],
|
|
79
|
+
* sort: []
|
|
80
|
+
* }
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* See {@link ActionFindPageArgs} for complete pagination options.
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
// @internal We use an interface instead of a type alias so the documentation generator
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
89
|
+
export interface FindFilteredPageOptions extends ActionFindPageArgs {}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @interface
|
|
93
|
+
* Response type for `findFiltered` when using pagination mode.
|
|
94
|
+
*
|
|
95
|
+
* Aligns with the response type of the underlying `findPage` store action.
|
|
96
|
+
* Can be either a transient response object (with data and pagination) or an array of resources.
|
|
97
|
+
*/
|
|
98
|
+
export type FindFilteredPageResponse<T = any> = ActionFindPageResponse<T>;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @interface
|
|
102
|
+
* Response type for `findFiltered` when using label selector mode.
|
|
103
|
+
*
|
|
104
|
+
* Aligns with the response type of the underlying `findMatching` store action via `findLabelSelector`.
|
|
105
|
+
* Can be either a transient response object (with data and pagination) or an array of resources.
|
|
106
|
+
*/
|
|
107
|
+
export type FindFilteredLabelSelectorResponse<T = any> = ActionFindMatchingResponse<T>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource type constants for Kubernetes and Rancher resources.
|
|
3
|
+
* Use these constants instead of string literals for type safety and autocomplete.
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
9
|
+
*
|
|
10
|
+
* const resources = useResources();
|
|
11
|
+
*
|
|
12
|
+
* resources.cluster.find(K8S.POD, 'default/my-pod');
|
|
13
|
+
* resources.cluster.findAll(K8S.DEPLOYMENT);
|
|
14
|
+
* resources.mgmt.findAll(K8S.USER);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import {
|
|
19
|
+
POD,
|
|
20
|
+
SERVICE,
|
|
21
|
+
CONFIG_MAP,
|
|
22
|
+
SECRET,
|
|
23
|
+
NAMESPACE,
|
|
24
|
+
NODE,
|
|
25
|
+
PV,
|
|
26
|
+
PVC,
|
|
27
|
+
SERVICE_ACCOUNT,
|
|
28
|
+
EVENT,
|
|
29
|
+
ENDPOINTS,
|
|
30
|
+
LIMIT_RANGE,
|
|
31
|
+
RESOURCE_QUOTA,
|
|
32
|
+
WORKLOAD_TYPES,
|
|
33
|
+
HPA,
|
|
34
|
+
INGRESS,
|
|
35
|
+
NETWORK_POLICY,
|
|
36
|
+
INGRESS_CLASS,
|
|
37
|
+
RBAC,
|
|
38
|
+
STORAGE_CLASS,
|
|
39
|
+
CSI_DRIVER,
|
|
40
|
+
POD_DISRUPTION_BUDGET,
|
|
41
|
+
MANAGEMENT,
|
|
42
|
+
} from '@shell/config/types';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Kubernetes core and common resource types
|
|
46
|
+
*/
|
|
47
|
+
export const K8S = {
|
|
48
|
+
// Core resources
|
|
49
|
+
/** Kubernetes Pod resource - `pod` */
|
|
50
|
+
POD,
|
|
51
|
+
/** Kubernetes Service resource - `service` */
|
|
52
|
+
SERVICE,
|
|
53
|
+
/** Kubernetes ConfigMap resource - `configmap` */
|
|
54
|
+
CONFIG_MAP,
|
|
55
|
+
/** Kubernetes Secret resource - `secret` */
|
|
56
|
+
SECRET,
|
|
57
|
+
/** Kubernetes Namespace resource - `namespace` */
|
|
58
|
+
NAMESPACE,
|
|
59
|
+
/** Kubernetes Node resource - `node` */
|
|
60
|
+
NODE,
|
|
61
|
+
/** Kubernetes PersistentVolume resource - `persistentvolume` */
|
|
62
|
+
PV,
|
|
63
|
+
/** Kubernetes PersistentVolumeClaim resource - `persistentvolumeclaim` */
|
|
64
|
+
PVC,
|
|
65
|
+
/** Kubernetes ServiceAccount resource - `serviceaccount` */
|
|
66
|
+
SERVICE_ACCOUNT,
|
|
67
|
+
/** Kubernetes Event resource - `event` */
|
|
68
|
+
EVENT,
|
|
69
|
+
/** Kubernetes Endpoints resource - `endpoints` */
|
|
70
|
+
ENDPOINTS,
|
|
71
|
+
/** Kubernetes LimitRange resource - `limitrange` */
|
|
72
|
+
LIMIT_RANGE,
|
|
73
|
+
/** Kubernetes ResourceQuota resource - `resourcequota` */
|
|
74
|
+
RESOURCE_QUOTA,
|
|
75
|
+
|
|
76
|
+
// Apps/Workloads
|
|
77
|
+
/** Kubernetes Deployment workload - `apps.deployment` */
|
|
78
|
+
DEPLOYMENT: WORKLOAD_TYPES.DEPLOYMENT,
|
|
79
|
+
/** Kubernetes StatefulSet workload - `apps.statefulset` */
|
|
80
|
+
STATEFUL_SET: WORKLOAD_TYPES.STATEFUL_SET,
|
|
81
|
+
/** Kubernetes DaemonSet workload - `apps.daemonset` */
|
|
82
|
+
DAEMON_SET: WORKLOAD_TYPES.DAEMON_SET,
|
|
83
|
+
/** Kubernetes ReplicaSet workload - `apps.replicaset` */
|
|
84
|
+
REPLICA_SET: WORKLOAD_TYPES.REPLICA_SET,
|
|
85
|
+
/** Kubernetes ReplicationController workload - `replicationcontroller` */
|
|
86
|
+
REPLICATION_CONTROLLER: WORKLOAD_TYPES.REPLICATION_CONTROLLER,
|
|
87
|
+
|
|
88
|
+
// Batch
|
|
89
|
+
/** Kubernetes Job batch resource - `batch.job` */
|
|
90
|
+
JOB: WORKLOAD_TYPES.JOB,
|
|
91
|
+
/** Kubernetes CronJob batch resource - `batch.cronjob` */
|
|
92
|
+
CRON_JOB: WORKLOAD_TYPES.CRON_JOB,
|
|
93
|
+
|
|
94
|
+
// Networking
|
|
95
|
+
/** Kubernetes Ingress networking resource - `networking.k8s.io.ingress` */
|
|
96
|
+
INGRESS,
|
|
97
|
+
/** Kubernetes NetworkPolicy resource - `networking.k8s.io.networkpolicy` */
|
|
98
|
+
NETWORK_POLICY,
|
|
99
|
+
/** Kubernetes IngressClass resource - `networking.k8s.io.ingressclass` */
|
|
100
|
+
INGRESS_CLASS,
|
|
101
|
+
|
|
102
|
+
// RBAC
|
|
103
|
+
/** Kubernetes Role RBAC resource - `rbac.authorization.k8s.io.role` */
|
|
104
|
+
ROLE: RBAC.ROLE,
|
|
105
|
+
/** Kubernetes RoleBinding RBAC resource - `rbac.authorization.k8s.io.rolebinding` */
|
|
106
|
+
ROLE_BINDING: RBAC.ROLE_BINDING,
|
|
107
|
+
/** Kubernetes ClusterRole RBAC resource - `rbac.authorization.k8s.io.clusterrole` */
|
|
108
|
+
CLUSTER_ROLE: RBAC.CLUSTER_ROLE,
|
|
109
|
+
/** Kubernetes ClusterRoleBinding RBAC resource - `rbac.authorization.k8s.io.clusterrolebinding` */
|
|
110
|
+
CLUSTER_ROLE_BINDING: RBAC.CLUSTER_ROLE_BINDING,
|
|
111
|
+
|
|
112
|
+
// Storage
|
|
113
|
+
/** Kubernetes StorageClass storage resource - `storage.k8s.io.storageclass` */
|
|
114
|
+
STORAGE_CLASS,
|
|
115
|
+
/** Kubernetes CSIDriver storage resource - `storage.k8s.io.csidriver` */
|
|
116
|
+
CSI_DRIVER,
|
|
117
|
+
|
|
118
|
+
// Policy
|
|
119
|
+
/** Kubernetes PodDisruptionBudget policy resource - `policy.poddisruptionbudget` */
|
|
120
|
+
POD_DISRUPTION_BUDGET,
|
|
121
|
+
|
|
122
|
+
// Autoscaling
|
|
123
|
+
/** Kubernetes HorizontalPodAutoscaler resource - `autoscaling.horizontalpodautoscaler` */
|
|
124
|
+
HPA,
|
|
125
|
+
|
|
126
|
+
// Management/Rancher resources (public API: https://ranchermanager.docs.rancher.com/api/api-reference)
|
|
127
|
+
/** Rancher User management resource - `management.cattle.io.user` */
|
|
128
|
+
USER: MANAGEMENT.USER,
|
|
129
|
+
/** Rancher Project management resource - `management.cattle.io.project` */
|
|
130
|
+
PROJECT: MANAGEMENT.PROJECT,
|
|
131
|
+
/** Rancher RoleTemplate management resource - `management.cattle.io.roletemplate` */
|
|
132
|
+
ROLE_TEMPLATE: MANAGEMENT.ROLE_TEMPLATE,
|
|
133
|
+
/** Rancher GlobalRole management resource - `management.cattle.io.globalrole` */
|
|
134
|
+
GLOBAL_ROLE: MANAGEMENT.GLOBAL_ROLE,
|
|
135
|
+
/** Rancher GlobalRoleBinding management resource - `management.cattle.io.globalrolebinding` */
|
|
136
|
+
GLOBAL_ROLE_BINDING: MANAGEMENT.GLOBAL_ROLE_BINDING,
|
|
137
|
+
/** Rancher ClusterRoleTemplateBinding management resource - `management.cattle.io.clusterroletemplatebinding` */
|
|
138
|
+
CLUSTER_ROLE_TEMPLATE_BINDING: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
|
|
139
|
+
/** Rancher ProjectRoleTemplateBinding management resource - `management.cattle.io.projectroletemplatebinding` */
|
|
140
|
+
PROJECT_ROLE_TEMPLATE_BINDING: MANAGEMENT.PROJECT_ROLE_TEMPLATE_BINDING,
|
|
141
|
+
} as const;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Type helper to extract resource type values from K8S constants.
|
|
145
|
+
* Check **{@link K8S}** constant documentation
|
|
146
|
+
*/
|
|
147
|
+
export type K8SResourceType = typeof K8S[keyof typeof K8S];
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ResourceType, FindMethodOptions, FindAllMethodOptions, FindFilteredPageOptions, FindFilteredLabelSelectorOptions,
|
|
3
|
+
FindFilteredPageResponse, FindFilteredLabelSelectorResponse
|
|
4
|
+
} from './resource-base';
|
|
5
|
+
import { SteveListResponse, SteveGetResponse } from '@shell/types/rancher/steve.api';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Base interface for all resource API operations.
|
|
9
|
+
*
|
|
10
|
+
* Provides type-safe methods for interacting with Kubernetes and Rancher resources.
|
|
11
|
+
* Used by both cluster-scoped and management-scoped APIs, and can be extended
|
|
12
|
+
* by custom store implementations (e.g. Harvester, Epinio).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
17
|
+
*
|
|
18
|
+
* const resources = useResources();
|
|
19
|
+
*
|
|
20
|
+
* const deployment = await resources.cluster.find(K8S.DEPLOYMENT, 'default/my-app');
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface ResourcesApi {
|
|
24
|
+
/**
|
|
25
|
+
* Finds a specific resource by its type and ID.
|
|
26
|
+
*
|
|
27
|
+
* @template T - The type of the resource (defaults to SteveGetResponse)
|
|
28
|
+
* @param resourceType - The type of the resource to find (use **{@link K8S}** constant). See also {@link ResourceType}.
|
|
29
|
+
* @param resourceId - The unique identifier of the resource to find. If the resource is namespaced, this should be in the format `namespace/name`.
|
|
30
|
+
* @param options - Optional find arguments
|
|
31
|
+
* @returns The found resource item or null if not found.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
36
|
+
*
|
|
37
|
+
* const resources = useResources();
|
|
38
|
+
*
|
|
39
|
+
* // Namespaced resource - ID must be in "namespace/name" format
|
|
40
|
+
* const pod = await resources.cluster.find(K8S.POD, 'default/my-pod-123');
|
|
41
|
+
*
|
|
42
|
+
* // Cluster-scoped resource - ID is just the name
|
|
43
|
+
* const node = await resources.cluster.find(K8S.NODE, 'worker-1');
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
find<T = SteveGetResponse>(
|
|
47
|
+
resourceType: ResourceType,
|
|
48
|
+
resourceId: string,
|
|
49
|
+
options?: FindMethodOptions
|
|
50
|
+
): Promise<T | null>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Finds resources using pagination mode with server-side filtering, sorting, and pagination.
|
|
54
|
+
*
|
|
55
|
+
* Requires `ui-sql-cache` to be enabled.
|
|
56
|
+
*
|
|
57
|
+
* @template T - The type of the resources (defaults to SteveListResponse)
|
|
58
|
+
* @param resourceType - The type of the resources to find (use **{@link K8S}** constant). See also {@link ResourceType}.
|
|
59
|
+
* @param options - Pagination options with server-side filtering and sorting via the Steve API's pagination cache. See {@link FindFilteredPageOptions}.
|
|
60
|
+
* @returns Response containing resource items (may be transient if requested, otherwise cached array).
|
|
61
|
+
* @throws Error if pagination mode is requested but `ui-sql-cache` is not enabled.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
66
|
+
*
|
|
67
|
+
* const resources = useResources();
|
|
68
|
+
*
|
|
69
|
+
* const pods = await resources.cluster.findFiltered(K8S.POD, {
|
|
70
|
+
* pagination: {
|
|
71
|
+
* page: 1,
|
|
72
|
+
* pageSize: 10,
|
|
73
|
+
* filters: [],
|
|
74
|
+
* sort: []
|
|
75
|
+
* }
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
findFiltered<T = SteveListResponse>(
|
|
80
|
+
resourceType: ResourceType,
|
|
81
|
+
options: FindFilteredPageOptions
|
|
82
|
+
): Promise<FindFilteredPageResponse<T>>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Finds resources using label selector matching.
|
|
86
|
+
*
|
|
87
|
+
* Filters resources by Kubernetes labels. The store automatically handles pagination:
|
|
88
|
+
* - If `ui-sql-cache` is enabled: uses server-side pagination
|
|
89
|
+
* - Otherwise: uses native Kubernetes API pagination
|
|
90
|
+
*
|
|
91
|
+
* @template T - The type of the resources (defaults to SteveListResponse)
|
|
92
|
+
* @param resourceType - The type of the resources to find (use **{@link K8S}** constant). See also {@link ResourceType}.
|
|
93
|
+
* @param options - Label selector options for filtering. See {@link FindFilteredLabelSelectorOptions}.
|
|
94
|
+
* @returns Response containing resource items (may be transient if requested, otherwise cached array).
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
99
|
+
*
|
|
100
|
+
* const resources = useResources();
|
|
101
|
+
*
|
|
102
|
+
* const pods = await resources.cluster.findFiltered(K8S.POD, {
|
|
103
|
+
* labelSelector: { matchLabels: { type: 'my-type' } }
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
findFiltered<T = SteveListResponse>(
|
|
108
|
+
resourceType: ResourceType,
|
|
109
|
+
options: FindFilteredLabelSelectorOptions
|
|
110
|
+
): Promise<FindFilteredLabelSelectorResponse<T>>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @internal Implementation - use one of the overloads above
|
|
114
|
+
*/
|
|
115
|
+
findFiltered<T = SteveListResponse>(
|
|
116
|
+
resourceType: ResourceType,
|
|
117
|
+
options: FindFilteredPageOptions | FindFilteredLabelSelectorOptions
|
|
118
|
+
): Promise<FindFilteredPageResponse<T> | FindFilteredLabelSelectorResponse<T>>;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Fetches all resources of a specific type with advanced options.
|
|
122
|
+
* This method provides additional capabilities like incremental loading and namespace filtering.
|
|
123
|
+
*
|
|
124
|
+
* @template T - The type of the resources (defaults to SteveListResponse)
|
|
125
|
+
* @param resourceType - The type of the resources to find (use **{@link K8S}** constant). See also {@link ResourceType}.
|
|
126
|
+
* @param options - Optional advanced fetch options (incremental loading, namespace filtering, etc.)
|
|
127
|
+
* @returns An array of resource items or an empty array if none are found.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
132
|
+
*
|
|
133
|
+
* const resources = useResources();
|
|
134
|
+
* const allPods = await resources.cluster.findAll(K8S.POD, {
|
|
135
|
+
* namespaced: ['default', 'kube-system']
|
|
136
|
+
* });
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
findAll<T = SteveListResponse>(
|
|
140
|
+
resourceType: ResourceType,
|
|
141
|
+
options?: FindAllMethodOptions
|
|
142
|
+
): Promise<T[]>;
|
|
143
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
|
|
2
|
+
import { ClusterApi } from '@shell/apis/intf/resources-api/cluster-api';
|
|
3
|
+
import { MgmtApi } from '@shell/apis/intf/resources-api/mgmt-api';
|
|
4
|
+
|
|
5
|
+
export * from '@shell/apis/intf/resources-api/resources-api';
|
|
6
|
+
export * from '@shell/apis/intf/resources-api/cluster-api';
|
|
7
|
+
export * from '@shell/apis/intf/resources-api/mgmt-api';
|
|
8
|
+
export {
|
|
9
|
+
ResourceType, FindMethodOptions, FindAllMethodOptions, FindFilteredPageOptions, FindFilteredLabelSelectorOptions,
|
|
10
|
+
FindFilteredPageResponse, FindFilteredLabelSelectorResponse
|
|
11
|
+
} from '@shell/apis/intf/resources-api/resource-base';
|
|
12
|
+
export * from '@shell/apis/intf/resources-api/resource-constants';
|
|
13
|
+
|
|
14
|
+
export { SteveGetResponse, SteveListResponse } from '@shell/types/rancher/steve.api';
|
|
15
|
+
export { KubeLabelSelector, KubeLabelSelectorExpression } from '@shell/types/kube/kube-api';
|
|
16
|
+
export {
|
|
17
|
+
PaginationSort, PaginationParamFilter, PaginationParamProjectOrNamespace, PaginationFilterField
|
|
18
|
+
} from '@shell/types/store/pagination.types';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
* Top-level provider that exposes scoped resource API instances.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { useResources, K8S } from '@shell/apis';
|
|
27
|
+
*
|
|
28
|
+
* const resources = useResources();
|
|
29
|
+
*
|
|
30
|
+
* // Cluster-scoped resources (current cluster context)
|
|
31
|
+
* const pod = await resources.cluster.find(K8S.POD, 'default/my-pod-123');
|
|
32
|
+
*
|
|
33
|
+
* // Management/global resources
|
|
34
|
+
* const user = await resources.mgmt.find(K8S.USER, 'u-xyz789');
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export interface ResourcesApiProvider {
|
|
38
|
+
/**
|
|
39
|
+
* Provides access to the Cluster API which can be used for managing Kubernetes cluster resources.
|
|
40
|
+
* This includes Kubernetes native resources like Pods, Deployments, Services, etc.
|
|
41
|
+
*/
|
|
42
|
+
get cluster(): ClusterApi;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Provides access to the Management layer in Rancher UI.
|
|
46
|
+
* This includes global resources like Users, Clusters, Global Settings, etc.
|
|
47
|
+
*/
|
|
48
|
+
get mgmt(): MgmtApi;
|
|
49
|
+
}
|
|
@@ -17,36 +17,29 @@ export interface ModalConfig {
|
|
|
17
17
|
* Example with a callback function:
|
|
18
18
|
*
|
|
19
19
|
* ```ts
|
|
20
|
+
* import { useShell } from '@shell/apis';
|
|
20
21
|
* import MyCustomModal from './MyCustomModal.vue';
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* }
|
|
23
|
+
* const shell = useShell();
|
|
24
|
+
*
|
|
25
|
+
* function myAction() {
|
|
26
|
+
* console.log('Performed an action');
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* function showModal() {
|
|
30
|
+
* shell.modal.open(MyCustomModal, {
|
|
31
|
+
* props: { onConfirm: myAction }
|
|
32
|
+
* });
|
|
33
33
|
* }
|
|
34
34
|
* ```
|
|
35
35
|
*
|
|
36
36
|
* ```ts
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* },
|
|
44
|
-
* methods:.
|
|
45
|
-
* confirm() {
|
|
46
|
-
* this.onConfirm();
|
|
47
|
-
* this.$emit('close');
|
|
48
|
-
* }
|
|
49
|
-
* }
|
|
37
|
+
* const props = defineProps<{ onConfirm: () => void }>();
|
|
38
|
+
* const emit = defineEmits<{ close: [] }>();
|
|
39
|
+
*
|
|
40
|
+
* function confirm() {
|
|
41
|
+
* props.onConfirm();
|
|
42
|
+
* emit('close');
|
|
50
43
|
* }
|
|
51
44
|
* ```
|
|
52
45
|
*/
|
|
@@ -108,13 +101,15 @@ export interface ModalApi {
|
|
|
108
101
|
*
|
|
109
102
|
* Example:
|
|
110
103
|
* ```ts
|
|
104
|
+
* import { useShell } from '@shell/apis';
|
|
111
105
|
* import MyCustomModal from '@/components/MyCustomModal.vue';
|
|
112
106
|
*
|
|
113
|
-
*
|
|
107
|
+
* const shell = useShell();
|
|
108
|
+
*
|
|
109
|
+
* shell.modal.open(MyCustomModal, {
|
|
114
110
|
* props: { title: 'Hello Modal' }
|
|
115
111
|
* });
|
|
116
112
|
* ```
|
|
117
|
-
* For usage with the Composition API check usage guide [here](../../shell-api#using-composition-api-in-vue).
|
|
118
113
|
*
|
|
119
114
|
* @param component
|
|
120
115
|
* The Vue component to be displayed inside the modal.
|