@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
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* Cloud Credential authentication for `/meta/proxy` requests.
|
|
4
|
+
*
|
|
5
|
+
* Instructs the Rancher backend to fetch the named Cloud Credential secret,
|
|
6
|
+
* extract the relevant fields, and sign the upstream `Authorization` header.
|
|
7
|
+
* The browser never sees the credential value.
|
|
8
|
+
*
|
|
9
|
+
* The backend constructs `X-Api-CattleAuth-Header` in the form:
|
|
10
|
+
* `<signer> credID=<id> [usernameField=<field>] [passwordField=<field>]`
|
|
11
|
+
*
|
|
12
|
+
* Secret data keys are normalised before lookup: a key stored as
|
|
13
|
+
* `<configPrefix>-<key>` (e.g. `amazonec2Config-secretKey`) is matched by
|
|
14
|
+
* passing just `<key>` (e.g. `secretKey`).
|
|
15
|
+
*/
|
|
16
|
+
export interface ProxyAuthCloudCredential {
|
|
17
|
+
/**
|
|
18
|
+
* Rancher Cloud Credential ID, or any opaque secret in the
|
|
19
|
+
* `cattle-global-data` namespace (format: `cattle-global-data:<name>`).
|
|
20
|
+
*/
|
|
21
|
+
id: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Signing strategy used to build the upstream `Authorization` header.
|
|
25
|
+
*
|
|
26
|
+
* - `bearer` – `Authorization: Bearer <secret[passwordField]>`
|
|
27
|
+
* - `basic` – `Authorization: Basic base64(<secret[usernameField]>:<secret[passwordField]>)`
|
|
28
|
+
* - `digest` – HTTP Digest auth using `usernameField` and `passwordField`
|
|
29
|
+
* - `awsv4` – AWS Signature V4 (reads `accessKey` and `secretKey` from secret)
|
|
30
|
+
* - `arbitrary` – Sets arbitrary headers supplied via `headers` (no credential lookup)
|
|
31
|
+
*
|
|
32
|
+
* Read the details of signer implementation here: https://github.com/rancher/rancher/tree/main/pkg/httpproxy
|
|
33
|
+
*
|
|
34
|
+
* If no authSigner is specified Rancher will forward the cloud credential id in the Authorization header without signing.
|
|
35
|
+
*/
|
|
36
|
+
authSigner?: 'bearer' | 'awsv4' | 'basic' | 'digest' | 'arbitrary';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Key inside the credential secret to use as the password / bearer token.
|
|
40
|
+
* Required by: `bearer`, `basic`, `digest`.
|
|
41
|
+
*/
|
|
42
|
+
passwordField?: string;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Key inside the credential secret to use as the username / access-key.
|
|
46
|
+
* Required by: `basic`, `digest`.
|
|
47
|
+
*/
|
|
48
|
+
usernameField?: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Plain-token authentication for `/meta/proxy` requests.
|
|
53
|
+
*
|
|
54
|
+
* The token is forwarded as the upstream `Authorization` header via
|
|
55
|
+
* `X-API-Auth-Header: <scheme> <token>`.
|
|
56
|
+
*/
|
|
57
|
+
export interface ProxyAuthToken {
|
|
58
|
+
/** Raw token value sent to the upstream API. */
|
|
59
|
+
token: string;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Authorization scheme prefix. Defaults to `Bearer` when omitted.
|
|
63
|
+
* Use `Basic` for base64-encoded credentials, etc.
|
|
64
|
+
*/
|
|
65
|
+
authSigner?: 'bearer' | 'awsv4' | 'basic' | 'digest' | 'arbitrary';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ProxyRequestOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Full upstream URL passed as a `URL` object.
|
|
71
|
+
*
|
|
72
|
+
* Examples:
|
|
73
|
+
* - `new URL('https://api.example.com/v1/regions')` →
|
|
74
|
+
* `/meta/proxy/api.example.com/v1/regions`
|
|
75
|
+
* - `new URL('http://api.example.com:1234/path')` →
|
|
76
|
+
* `/meta/proxy/http:/api.example.com:1234/path`
|
|
77
|
+
*
|
|
78
|
+
* TLS on port 443 is assumed. For a non-standard port include it in the
|
|
79
|
+
* `URL` host. For plain HTTP the double-slash is collapsed to one so the
|
|
80
|
+
* backend receives `/meta/proxy/http:/example.com:1234/path`.
|
|
81
|
+
*
|
|
82
|
+
* Use `URL.searchParams` to construct query strings rather than building
|
|
83
|
+
* them manually.
|
|
84
|
+
*/
|
|
85
|
+
url: URL;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* HTTP method. Defaults to `GET` when omitted.
|
|
89
|
+
*/
|
|
90
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Additional headers merged into the outgoing request.
|
|
94
|
+
* Auth headers (`X-API-Auth-Header`, `X-Api-CattleAuth-Header`) are
|
|
95
|
+
* managed automatically via `authentication` — do not set them here.
|
|
96
|
+
*/
|
|
97
|
+
headers?: Record<string, string>;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Value for the `Accept` header. Defaults to `application/json`.
|
|
101
|
+
*/
|
|
102
|
+
accept?: string;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Request body for `POST`, `PUT`, and `PATCH` requests.
|
|
106
|
+
*/
|
|
107
|
+
data?: any;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Authentication strategy. Supply either a `ProxyAuthCloudCredential`
|
|
111
|
+
* (to have Rancher sign the request from a stored secret) or a
|
|
112
|
+
* `ProxyAuthToken` (to send a raw bearer/basic token directly).
|
|
113
|
+
*
|
|
114
|
+
* Discriminated by field presence: `'id' in authentication` → cloud
|
|
115
|
+
* credential; `'token' in authentication` → plain token.
|
|
116
|
+
*/
|
|
117
|
+
authentication?: ProxyAuthCloudCredential | ProxyAuthToken;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Optional post-processing callback invoked with the raw response before
|
|
121
|
+
* `request()` returns. Use `createDepaginator()` from
|
|
122
|
+
* `@shell/apis/shell/proxy` to handle paginated list endpoints.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import { createDepaginator } from '@shell/apis/shell/proxy';
|
|
127
|
+
*
|
|
128
|
+
* const baseOptions = { url: 'api.example.com/v1/items', authentication };
|
|
129
|
+
* const result = await proxy.request({
|
|
130
|
+
* ...baseOptions,
|
|
131
|
+
* postProcess: createDepaginator(proxy, baseOptions, { mergeKey: 'items' }),
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
postProcess?: (res: any) => Promise<any>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Proxy API for Rancher's server-side `/meta/proxy` endpoint.
|
|
140
|
+
*
|
|
141
|
+
* `/meta/proxy` lets the UI call third-party APIs (for example cloud
|
|
142
|
+
* provider APIs) through the Rancher server, avoiding browser CORS limits.
|
|
143
|
+
*
|
|
144
|
+
* Base format:
|
|
145
|
+
* - `/meta/proxy/<host>/<path>`
|
|
146
|
+
* - TLS + port `443` are assumed by default.
|
|
147
|
+
* - To use a different port: `/meta/proxy/example.com:1234/<path>`.
|
|
148
|
+
* - For plain HTTP (if absolutely required):
|
|
149
|
+
* `/meta/proxy/http:/example.com:1234/<path>` (note one slash after `http:`).
|
|
150
|
+
*
|
|
151
|
+
* Notes from docs:
|
|
152
|
+
* - `X-API-Auth-Header` is forwarded as `Authorization` to the upstream.
|
|
153
|
+
* - `X-Api-CattleAuth-Header` can instruct Rancher to sign/authenticate
|
|
154
|
+
* upstream requests with data from a Rancher Cloud Credential
|
|
155
|
+
*/
|
|
156
|
+
export interface ProxyApi {
|
|
157
|
+
/**
|
|
158
|
+
* Sends a request through Rancher's `/meta/proxy` endpoint.
|
|
159
|
+
*
|
|
160
|
+
* Builds the proxy URL and auth headers from `options`, dispatches via
|
|
161
|
+
* `management/request`, and returns the response. If `options.postProcess`
|
|
162
|
+
* is set it is called with the response before returning, allowing callers
|
|
163
|
+
* to implement pagination or other response transforms.
|
|
164
|
+
*/
|
|
165
|
+
request(options: ProxyRequestOptions): Promise<any>;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Creates a `ProxyEndpoint` CR (`management.cattle.io/v3`) that adds the
|
|
169
|
+
* given domains to the Rancher `/meta/proxy` allow-list.
|
|
170
|
+
*
|
|
171
|
+
* Each entry in `domains` should be a bare hostname or a wildcard pattern
|
|
172
|
+
* accepted by the backend (e.g. `api.example.com`, `%.amazonaws.com`).
|
|
173
|
+
* Overly-broad wildcards (e.g. `*.com`) are rejected by the backend.
|
|
174
|
+
*
|
|
175
|
+
* @param domains - One or more domain patterns to allow.
|
|
176
|
+
* @param name - Optional name for the `ProxyEndpoint` CR.
|
|
177
|
+
* Defaults to a generated name when omitted.
|
|
178
|
+
* @returns The created `ProxyEndpoint` resource.
|
|
179
|
+
*/
|
|
180
|
+
allowDomains(domains: string[], name?: string): Promise<any>;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Checks whether a domain pattern is already present in any existing
|
|
184
|
+
* `ProxyEndpoint` CR.
|
|
185
|
+
*
|
|
186
|
+
* The comparison is a case-insensitive exact match against each
|
|
187
|
+
* `spec.routes[].domain` value — the same format accepted by `allowDomains`
|
|
188
|
+
* (e.g. `api.example.com`, `%.amazonaws.com`).
|
|
189
|
+
*
|
|
190
|
+
* @param domain - The hostname or wildcard pattern to look up.
|
|
191
|
+
* @returns `true` if the pattern is found in at least one `ProxyEndpoint` CR,
|
|
192
|
+
* `false` otherwise.
|
|
193
|
+
*/
|
|
194
|
+
isDomainAllowed(domain: string): Promise<boolean>;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Checks whether a `ProxyEndpoint` CR with the given name exists.
|
|
198
|
+
*
|
|
199
|
+
* @param name - The metadata name of the `ProxyEndpoint` CR to look up.
|
|
200
|
+
* @returns `true` if the CR exists, `false` if it is not found.
|
|
201
|
+
*/
|
|
202
|
+
hasProxyEndpoint(name: string): Promise<boolean>;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Builds the `/meta/proxy` URL and auth headers for the given options
|
|
206
|
+
* without dispatching a request.
|
|
207
|
+
*
|
|
208
|
+
* Useful when a caller needs to construct the request itself (e.g. to pass
|
|
209
|
+
* the URL and headers to a third-party HTTP client or an existing `axios`
|
|
210
|
+
* call).
|
|
211
|
+
*
|
|
212
|
+
* @param options - Proxy request options (same as `request()`).
|
|
213
|
+
* @returns An object containing the resolved `url` and `headers`.
|
|
214
|
+
*/
|
|
215
|
+
prepareRequest(options: ProxyRequestOptions): { url: string; headers: Record<string, string> };
|
|
216
|
+
}
|
|
@@ -80,15 +80,16 @@ export interface SlideInApi {
|
|
|
80
80
|
*
|
|
81
81
|
* Example:
|
|
82
82
|
* ```ts
|
|
83
|
+
* import { useShell } from '@shell/apis';
|
|
83
84
|
* import MyCustomSlideIn from '@/components/MyCustomSlideIn.vue';
|
|
84
85
|
*
|
|
85
|
-
*
|
|
86
|
+
* const shell = useShell();
|
|
87
|
+
*
|
|
88
|
+
* shell.slideIn.open(MyCustomSlideIn, {
|
|
86
89
|
* title: 'Hello from SlideIn panel!'
|
|
87
90
|
* });
|
|
88
91
|
* ```
|
|
89
92
|
*
|
|
90
|
-
* For usage with the Composition API check usage guide [here](../../shell-api#using-composition-api-in-vue).
|
|
91
|
-
*
|
|
92
93
|
* @param component
|
|
93
94
|
* The Vue component to be displayed inside the slide in panel.
|
|
94
95
|
* This can be any SFC (Single-File Component) imported and passed in as a `Component`.
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Usage example:
|
|
6
6
|
* ```ts
|
|
7
|
-
*
|
|
7
|
+
* import { useShell } from '@shell/apis';
|
|
8
|
+
*
|
|
9
|
+
* const shell = useShell();
|
|
10
|
+
* const rancherVersion = shell.system.rancherVersion;
|
|
8
11
|
* console.log('Rancher Version:', rancherVersion);
|
|
9
12
|
* ```
|
|
10
13
|
*
|
package/apis/intf/shell.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
import { NotificationApi } from '@shell/types/notifications';
|
|
3
|
-
import { ModalApi } from '@shell/apis/intf/modal';
|
|
4
|
-
import { SlideInApi } from '@shell/apis/intf/slide-in';
|
|
5
|
-
import { SystemApi } from '@shell/apis/intf/system';
|
|
3
|
+
import { ModalApi } from '@shell/apis/intf/shell-api/modal';
|
|
4
|
+
import { SlideInApi } from '@shell/apis/intf/shell-api/slide-in';
|
|
5
|
+
import { SystemApi } from '@shell/apis/intf/shell-api/system';
|
|
6
|
+
import { ProxyApi } from '@shell/apis/intf/shell-api/proxy';
|
|
6
7
|
|
|
7
8
|
export * from '@shell/types/notifications';
|
|
8
|
-
export * from '@shell/apis/intf/modal';
|
|
9
|
-
export * from '@shell/apis/intf/slide-in';
|
|
10
|
-
export * from '@shell/apis/intf/system';
|
|
9
|
+
export * from '@shell/apis/intf/shell-api/modal';
|
|
10
|
+
export * from '@shell/apis/intf/shell-api/slide-in';
|
|
11
|
+
export * from '@shell/apis/intf/shell-api/system';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @internal
|
|
@@ -33,4 +34,9 @@ export interface ShellApi {
|
|
|
33
34
|
* Provides access to the system API which providers information about the current system
|
|
34
35
|
*/
|
|
35
36
|
get system(): SystemApi;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Provides access to the proxy API which can be used to make http requests via Rancher
|
|
40
|
+
*/
|
|
41
|
+
get proxy(): ProxyApi;
|
|
36
42
|
}
|