@rancher/shell 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/global/_button.scss +5 -1
- package/assets/styles/global/_columns.scss +4 -0
- package/assets/styles/global/_gauges.scss +1 -1
- package/assets/styles/global/_layout.scss +5 -2
- package/assets/styles/global/_select.scss +1 -4
- package/assets/styles/themes/_dark.scss +5 -4
- package/assets/styles/themes/_light.scss +4 -3
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/styles/vendor/vue-select.scss +4 -3
- package/assets/translations/en-us.yaml +673 -73
- package/assets/translations/zh-hans.yaml +720 -207
- package/chart/monitoring/steps/uninstall-v1.vue +2 -2
- package/cloud-credential/azure.vue +23 -0
- package/cloud-credential/harvester.vue +25 -62
- package/cloud-credential/pnap.vue +80 -0
- package/components/.DS_Store +0 -0
- package/components/ActionMenu.vue +28 -7
- package/components/AdvancedSection.vue +9 -2
- package/components/Alert.vue +2 -2
- package/components/ButtonDropdown.vue +0 -2
- package/components/ButtonGroup.vue +1 -0
- package/components/CollapsibleCard.vue +0 -1
- package/components/CruResource.vue +41 -4
- package/components/DetailTop.vue +72 -4
- package/components/DisableAuthProviderModal.vue +106 -0
- package/{rancher-components/components/Utils/DraggableZone → components}/DraggableZone.vue +0 -0
- package/components/ExplorerMembers.vue +253 -30
- package/components/ExplorerProjectsNamespaces.vue +77 -33
- package/components/ExtensionPanel.vue +42 -0
- package/components/GrowlManager.vue +3 -3
- package/components/IconOrSvg.vue +178 -0
- package/components/LogItem.vue +69 -0
- package/components/PodSecurityAdmission.vue +302 -0
- package/components/PromptModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +69 -4
- package/components/ResourceDetail/index.vue +12 -5
- package/components/ResourceList/Masthead.vue +11 -1
- package/components/ResourceList/ResourceLoadingIndicator.vue +12 -2
- package/components/ResourceList/index.vue +66 -12
- package/components/ResourceList/resource-list.config.js +7 -0
- package/components/ResourceTable.vue +33 -6
- package/components/SimpleBox.vue +1 -1
- package/components/SortableTable/THead.vue +21 -14
- package/components/SortableTable/filtering.js +1 -1
- package/components/SortableTable/index.vue +21 -10
- package/components/SortableTable/selection.js +15 -3
- package/components/Tabbed/Tab.vue +1 -1
- package/components/Tabbed/index.vue +20 -15
- package/components/__tests__/.DS_Store +0 -0
- package/components/__tests__/AsyncButton.test.ts +140 -0
- package/components/__tests__/BackLink.test.ts +33 -0
- package/components/__tests__/ButtonGroup.test.ts +124 -0
- package/components/__tests__/ClusterBadge.test.ts +32 -0
- package/components/__tests__/CollapsibleCard.test.ts +64 -0
- package/components/__tests__/ConsumptionGauge.test.ts +88 -0
- package/components/__tests__/CruResource.test.ts +3 -2
- package/components/__tests__/FixedBanner.test.ts +129 -0
- package/components/__tests__/GrowlManager.test.ts +147 -0
- package/components/__tests__/NamespaceFilter.test.ts +33 -25
- package/components/__tests__/PercentageBar.test.ts +32 -0
- package/components/__tests__/PodSecurityAdmission.test.ts +398 -0
- package/components/auth/AuthBanner.vue +20 -10
- package/components/auth/RoleDetailEdit.vue +26 -17
- package/components/auth/SelectPrincipal.vue +36 -5
- package/components/form/ArrayList.vue +3 -35
- package/components/form/ArrayListGrouped.vue +13 -4
- package/components/form/ArrayListSelect.vue +5 -5
- package/components/form/Error.vue +8 -0
- package/components/form/KeyValue.vue +39 -7
- package/components/form/LabeledSelect.vue +5 -2
- package/components/form/Labels.vue +46 -16
- package/components/form/Members/ClusterPermissionsEditor.vue +17 -17
- package/components/form/Members/MembershipEditor.vue +12 -12
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/Probe.vue +3 -3
- package/components/form/ResourceQuota/Project.vue +6 -6
- package/components/form/ResourceTabs/index.vue +24 -6
- package/components/form/Security.vue +7 -6
- package/components/form/Select.vue +3 -2
- package/components/form/SelectOrCreateAuthSecret.vue +22 -29
- package/components/form/ServicePorts.vue +8 -0
- package/components/form/WorkloadPorts.vue +7 -1
- package/components/form/__tests__/ArrayList.test.ts +74 -0
- package/components/form/__tests__/ArrayListGrouped.test.ts +6 -4
- package/components/formatter/Checked.vue +1 -1
- package/components/formatter/ClusterLink.vue +5 -0
- package/components/formatter/IconIsDefault.vue +2 -2
- package/components/formatter/InternalExternalIP.vue +11 -8
- package/components/formatter/LiveDuration.vue +78 -0
- package/components/formatter/WorkloadHealthScale.vue +5 -3
- package/components/nav/Header.vue +74 -7
- package/components/nav/NamespaceFilter.vue +146 -63
- package/components/nav/TopLevelMenu.vue +22 -19
- package/components/nav/WindowManager/ContainerLogs.vue +83 -126
- package/components/nav/WindowManager/ContainerShell.vue +9 -7
- package/components/nav/WindowManager/Window.vue +2 -0
- package/components/nav/WindowManager/index.vue +10 -0
- package/config/elemental-types.js +9 -0
- package/config/features.js +2 -0
- package/config/home-links.js +4 -1
- package/config/pod-security-admission.ts +82 -0
- package/config/product/apps.js +1 -1
- package/config/product/auth.js +6 -5
- package/config/product/backup.js +1 -1
- package/config/product/explorer.js +6 -6
- package/config/product/fleet.js +1 -1
- package/config/product/manager.js +6 -2
- package/config/query-params.js +1 -0
- package/config/secret.js +0 -1
- package/config/settings.ts +26 -9
- package/config/table-headers.js +22 -11
- package/config/types.js +4 -1
- package/config/uiplugins.js +3 -3
- package/content/docs/zh-hans/getting-started.md +113 -137
- package/content/docs/zh-hans/whats-new.md +8 -46
- package/core/plugin-helpers.js +171 -0
- package/core/plugin.ts +61 -1
- package/core/plugins.js +33 -0
- package/core/types.ts +128 -2
- package/creators/pkg/package-lock.json +37 -0
- package/creators/pkg/package.json +1 -1
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/pod.vue +1 -1
- package/detail/provisioning.cattle.io.cluster.vue +35 -9
- package/detail/service.vue +2 -9
- package/detail/workload/index.vue +0 -1
- package/dialog/AddClusterMemberDialog.vue +22 -28
- package/dialog/AddProjectMemberDialog.vue +53 -9
- package/dialog/DiagnosticTimingsDialog.vue +8 -7
- package/dialog/DrainNode.vue +44 -48
- package/dialog/ForceMachineRemoveDialog.vue +5 -7
- package/dialog/GenericPrompt.vue +15 -20
- package/dialog/RollbackWorkloadDialog.vue +15 -46
- package/dialog/RotateCertificatesDialog.vue +5 -7
- package/dialog/RotateEncryptionKeyDialog.vue +5 -9
- package/dialog/SaveAsRKETemplateDialog.vue +5 -13
- package/dialog/ScaleMachineDownDialog.vue +1 -1
- package/dialog/ScalePoolDownDialog.vue +121 -0
- package/edit/__tests__/management.cattle.io.setting.test.ts +3 -3
- package/edit/auth/azuread.vue +16 -16
- package/edit/auth/github.vue +8 -0
- package/edit/auth/googleoauth.vue +10 -1
- package/edit/auth/ldap/index.vue +10 -0
- package/edit/auth/oidc.vue +10 -0
- package/edit/auth/saml.vue +10 -0
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
- package/edit/catalog.cattle.io.clusterrepo.vue +3 -0
- package/edit/cloudcredential.vue +3 -7
- package/edit/logging-flow/Match.vue +39 -8
- package/edit/logging-flow/index.vue +27 -4
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +107 -0
- package/edit/management.cattle.io.project.vue +8 -1
- package/edit/management.cattle.io.setting.vue +5 -2
- package/edit/management.cattle.io.user.vue +7 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +36 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +14 -6
- package/edit/namespace.vue +18 -4
- package/edit/networking.k8s.io.ingress/Certificate.vue +1 -0
- package/edit/networking.k8s.io.ingress/IngressClass.vue +8 -6
- package/edit/networking.k8s.io.ingress/RulePath.vue +12 -6
- package/edit/networking.k8s.io.ingress/index.vue +8 -6
- package/edit/persistentvolume/index.vue +30 -27
- package/edit/persistentvolume/plugins/cephfs.vue +29 -29
- package/edit/persistentvolume/plugins/csi.vue +102 -62
- package/edit/persistentvolume/plugins/fc.vue +19 -19
- package/edit/persistentvolume/plugins/iscsi.vue +45 -45
- package/edit/persistentvolume/plugins/rbd.vue +39 -39
- package/edit/persistentvolumeclaim.vue +78 -75
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +11 -7
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +10 -1
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +87 -27
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +3 -6
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +96 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/index.vue +29 -6
- package/edit/provisioning.cattle.io.cluster/rke2.vue +445 -154
- package/edit/secret/index.vue +3 -7
- package/edit/service.vue +3 -1
- package/edit/storage.k8s.io.storageclass/index.vue +100 -16
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +114 -0
- package/edit/workload/__tests__/index.test.ts +98 -0
- package/edit/workload/index.vue +58 -8
- package/edit/workload/mixins/workload.js +107 -70
- package/edit/workload/storage/ContainerMountPaths.vue +0 -10
- package/edit/workload/storage/emptyDir.vue +88 -0
- package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
- package/edit/workload/storage/index.vue +8 -0
- package/edit/workload/storage/persistentVolumeClaim/index.vue +1 -1
- package/layouts/default.vue +57 -44
- package/list/__tests__/workload.test.ts +5 -2
- package/list/catalog.cattle.io.app.vue +1 -0
- package/list/cis.cattle.io.clusterscan.vue +1 -0
- package/list/fleet.cattle.io.bundle.vue +5 -6
- package/list/fleet.cattle.io.cluster.vue +6 -3
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +5 -6
- package/list/fleet.cattle.io.gitrepo.vue +4 -9
- package/list/helm.cattle.io.projecthelmchart.vue +1 -5
- package/list/logging.banzaicloud.io.clusterflow.vue +4 -1
- package/list/logging.banzaicloud.io.flow.vue +6 -5
- package/list/management.cattle.io.cluster.vue +1 -0
- package/list/management.cattle.io.feature.vue +3 -4
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +47 -0
- package/list/management.cattle.io.setting.vue +2 -2
- package/list/management.cattle.io.user.vue +4 -10
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +2 -7
- package/list/node.vue +8 -5
- package/list/persistentvolume.vue +3 -3
- package/list/persistentvolumeclaim.vue +3 -4
- package/list/provisioning.cattle.io.cluster.vue +18 -19
- package/list/service.vue +6 -14
- package/list/workload.vue +43 -38
- package/machine-config/azure.vue +429 -60
- package/machine-config/pnap.vue +288 -0
- package/mixins/auth-config.js +1 -3
- package/mixins/browser-tab-visibility.js +8 -14
- package/mixins/chart.js +1 -1
- package/mixins/create-edit-view/impl.js +4 -0
- package/mixins/create-edit-view/index.js +4 -2
- package/mixins/resource-fetch-namespaced.js +98 -0
- package/mixins/resource-fetch.js +79 -45
- package/mixins/resource-manager.js +1 -23
- package/models/apps.controllerrevision.js +7 -0
- package/models/apps.daemonset.js +18 -0
- package/models/apps.deployment.js +44 -0
- package/models/apps.replicaset.js +7 -0
- package/models/apps.statefulset.js +18 -0
- package/models/batch.job.js +7 -14
- package/models/cluster/node.js +10 -2
- package/models/cluster.x-k8s.io.machine.js +26 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +12 -2
- package/models/event.js +7 -0
- package/models/logging.banzaicloud.io.flow.js +4 -0
- package/models/management.cattle.io.cluster.js +1 -1
- package/models/management.cattle.io.clusterroletemplatebinding.js +1 -1
- package/models/management.cattle.io.globalrole.js +2 -2
- package/models/management.cattle.io.node.js +37 -2
- package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +4 -0
- package/models/management.cattle.io.project.js +30 -11
- package/models/management.cattle.io.setting.js +1 -1
- package/models/management.cattle.io.user.js +37 -1
- package/models/namespace.js +42 -5
- package/models/persistentvolume.js +14 -2
- package/models/pod.js +15 -0
- package/models/projectroletemplatebinding.js +7 -0
- package/models/provisioning.cattle.io.cluster.js +61 -10
- package/models/rke-machine.cattle.io.pnapmachinetemplate.js +15 -0
- package/models/service.js +14 -13
- package/models/storage.k8s.io.storageclass.js +33 -18
- package/models/workload.js +38 -7
- package/nuxt.config.js +27 -17
- package/package.json +7 -7
- package/pages/about.vue +14 -2
- package/pages/c/_cluster/apps/charts/index.vue +21 -3
- package/pages/c/_cluster/apps/charts/install.vue +59 -22
- package/pages/c/_cluster/auth/config/_id.vue +6 -0
- package/pages/c/_cluster/auth/config/index.vue +8 -6
- package/pages/c/_cluster/auth/group.principal/assign-edit.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +51 -6
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +15 -4
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/performance.vue +48 -2
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +2 -0
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -0
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +42 -2
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +2 -0
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +1 -0
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +2 -0
- package/pages/c/_cluster/uiplugins/index.vue +42 -3
- package/pages/diagnostic.vue +5 -4
- package/pages/home.vue +105 -30
- package/pages/prefs.vue +23 -12
- package/pages/rio/mesh.vue +1 -1
- package/pkg/dynamic-importer.lib.js +8 -0
- package/pkg/vue.config.js +4 -0
- package/plugins/dashboard-store/__tests__/mutations.spec.js +406 -0
- package/plugins/dashboard-store/actions.js +32 -25
- package/plugins/dashboard-store/getters.js +50 -33
- package/plugins/dashboard-store/mutations.js +134 -28
- package/plugins/dashboard-store/resource-class.js +37 -42
- package/plugins/steve/actions.js +30 -0
- package/plugins/steve/caches/resourceCache.js +60 -0
- package/plugins/steve/getters.js +44 -1
- package/plugins/steve/mutations.js +97 -36
- package/plugins/steve/resourceWatcher.js +277 -0
- package/plugins/steve/schema.utils.js +25 -0
- package/plugins/steve/subscribe.js +288 -115
- package/plugins/steve/worker/index.js +17 -0
- package/plugins/steve/worker/web-worker.advanced.js +302 -0
- package/plugins/steve/{web-worker.steve-sub-worker.js → worker/web-worker.basic.js} +3 -44
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/StringList/StringList.test.ts +45 -420
- package/rancher-components/StringList/StringList.vue +1 -10
- package/rancher-components/components/Banner/Banner.test.ts +44 -0
- package/rancher-components/components/Banner/Banner.vue +130 -61
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +13 -22
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +8 -6
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +9 -9
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +0 -1
- package/rancher-components/components/StringList/StringList.test.ts +7 -7
- package/rancher-components/components/StringList/StringList.vue +21 -15
- package/scripts/test-plugins-build.sh +8 -0
- package/static/loading-indicator.html +1 -1
- package/store/action-menu.js +4 -3
- package/store/index.js +54 -3
- package/store/plugins.js +0 -17
- package/store/pnap.js +128 -0
- package/store/prefs.js +4 -2
- package/store/type-map.js +81 -13
- package/types/pod-security-admission.ts +36 -0
- package/types/shell/index.d.ts +497 -396
- package/utils/__tests__/object.test.ts +17 -1
- package/utils/__tests__/pod-security-admission.test.ts +61 -0
- package/utils/async.ts +36 -0
- package/utils/color.js +45 -0
- package/utils/crypto/browserHashUtils.js +18 -0
- package/utils/dynamic-importer.js +8 -0
- package/utils/install-redirect.js +1 -1
- package/utils/object.js +24 -0
- package/utils/pod-security-admission.ts +39 -0
- package/utils/socket.js +61 -24
- package/utils/string.js +2 -0
- package/utils/svg-filter.js +301 -0
- package/utils/time.js +49 -0
- package/utils/validators/cidr.js +4 -0
- package/utils/validators/formRules/__tests__/index.test.ts +23 -3
- package/utils/validators/formRules/index.ts +14 -0
- package/config/product/harvester-manager.js +0 -162
- package/edit/harvesterhci.io.management.cluster.vue +0 -153
- package/list/harvesterhci.io.management.cluster.vue +0 -241
- package/machine-config/harvester.vue +0 -693
- package/models/harvesterhci.io.management.cluster.js +0 -228
- package/pages/c/_cluster/harvesterManager/index.vue +0 -24
- package/rancher-components/Card/Card.test.ts +0 -39
- package/rancher-components/Utils/DraggableZone/DraggableZone.vue +0 -181
- package/rancher-components/Utils/DraggableZone/index.ts +0 -1
- package/rancher-components/components/Utils/DraggableZone/index.ts +0 -1
package/machine-config/azure.vue
CHANGED
|
@@ -11,6 +11,9 @@ import { Checkbox } from '@components/Form/Checkbox';
|
|
|
11
11
|
import ArrayList from '@shell/components/form/ArrayList';
|
|
12
12
|
import { randomStr } from '@shell/utils/string';
|
|
13
13
|
import { addParam, addParams } from '@shell/utils/url';
|
|
14
|
+
import KeyValue from '@shell/components/form/KeyValue';
|
|
15
|
+
import { RadioGroup } from '@components/Form/Radio';
|
|
16
|
+
import { _CREATE } from '@shell/config/query-params';
|
|
14
17
|
|
|
15
18
|
export const azureEnvironments = [
|
|
16
19
|
{ value: 'AzurePublicCloud' },
|
|
@@ -20,33 +23,34 @@ export const azureEnvironments = [
|
|
|
20
23
|
];
|
|
21
24
|
|
|
22
25
|
const defaultConfig = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
26
|
+
acceleratedNetworking: false,
|
|
27
|
+
availabilitySet: 'docker-machine',
|
|
28
|
+
clientId: '',
|
|
29
|
+
clientSecret: '',
|
|
30
|
+
customData: '',
|
|
31
|
+
diskSize: '30',
|
|
32
|
+
dns: '',
|
|
33
|
+
environment: 'AzurePublicCloud',
|
|
34
|
+
faultDomainCount: '3',
|
|
35
|
+
image: 'canonical:UbuntuServer:18.04-LTS:latest',
|
|
36
|
+
location: 'westus',
|
|
37
|
+
managedDisks: false,
|
|
38
|
+
noPublicIp: false,
|
|
39
|
+
nsg: null,
|
|
40
|
+
privateIpAddress: null,
|
|
41
|
+
resourceGroup: 'docker-machine',
|
|
42
|
+
size: 'Standard_D2_v2',
|
|
43
|
+
sshUser: 'docker-user',
|
|
44
|
+
staticPublicIp: false,
|
|
45
|
+
storageType: 'Standard_LRS',
|
|
46
|
+
subnet: 'docker-machine',
|
|
47
|
+
subnetPrefix: '192.168.0.0/16',
|
|
48
|
+
subscriptionId: '',
|
|
49
|
+
tenantId: '',
|
|
50
|
+
updateDomainCount: '5',
|
|
51
|
+
usePrivateIp: false,
|
|
52
|
+
vnet: 'docker-machine-vnet',
|
|
53
|
+
openPort: [
|
|
50
54
|
'6443/tcp',
|
|
51
55
|
'2379/tcp',
|
|
52
56
|
'2380/tcp',
|
|
@@ -58,6 +62,7 @@ const defaultConfig = {
|
|
|
58
62
|
'10251/tcp',
|
|
59
63
|
'10252/tcp',
|
|
60
64
|
],
|
|
65
|
+
tags: null
|
|
61
66
|
};
|
|
62
67
|
|
|
63
68
|
const storageTypes = [
|
|
@@ -81,16 +86,23 @@ const storageTypes = [
|
|
|
81
86
|
name: 'Premium LRS',
|
|
82
87
|
value: 'Premium_LRS',
|
|
83
88
|
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Standard SSD LRS',
|
|
91
|
+
value: 'StandardSSD_LRS'
|
|
92
|
+
}
|
|
84
93
|
];
|
|
94
|
+
const DEFAULT_REGION = 'westus';
|
|
85
95
|
|
|
86
96
|
export default {
|
|
87
97
|
components: {
|
|
88
98
|
ArrayList,
|
|
89
99
|
Banner,
|
|
90
100
|
Checkbox,
|
|
101
|
+
KeyValue,
|
|
91
102
|
LabeledInput,
|
|
92
103
|
LabeledSelect,
|
|
93
104
|
Loading,
|
|
105
|
+
RadioGroup
|
|
94
106
|
},
|
|
95
107
|
|
|
96
108
|
mixins: [CreateEditView],
|
|
@@ -116,6 +128,7 @@ export default {
|
|
|
116
128
|
|
|
117
129
|
async fetch() {
|
|
118
130
|
this.errors = [];
|
|
131
|
+
this.initTags();
|
|
119
132
|
|
|
120
133
|
try {
|
|
121
134
|
const {
|
|
@@ -147,8 +160,15 @@ export default {
|
|
|
147
160
|
method: 'GET',
|
|
148
161
|
});
|
|
149
162
|
|
|
163
|
+
if (this.mode === _CREATE) {
|
|
164
|
+
this.value.location = DEFAULT_REGION;
|
|
165
|
+
}
|
|
166
|
+
|
|
150
167
|
this.vmSizes = await this.$store.dispatch('management/request', {
|
|
151
|
-
url:
|
|
168
|
+
url: addParams('/meta/aksVMSizesV2', {
|
|
169
|
+
cloudCredentialId: this.credentialId,
|
|
170
|
+
region: this.value.location
|
|
171
|
+
}),
|
|
152
172
|
method: 'GET',
|
|
153
173
|
});
|
|
154
174
|
} catch (e) {
|
|
@@ -157,13 +177,24 @@ export default {
|
|
|
157
177
|
},
|
|
158
178
|
|
|
159
179
|
data() {
|
|
180
|
+
let useAvailabilitySet = false;
|
|
181
|
+
|
|
182
|
+
if (this.mode === _CREATE) {
|
|
183
|
+
useAvailabilitySet = true;
|
|
184
|
+
} else {
|
|
185
|
+
useAvailabilitySet = !!this.value.availabilitySet;
|
|
186
|
+
}
|
|
187
|
+
|
|
160
188
|
return {
|
|
161
189
|
azureEnvironments,
|
|
162
190
|
defaultConfig,
|
|
163
191
|
storageTypes,
|
|
164
192
|
credential: null,
|
|
165
|
-
locationOptions:
|
|
166
|
-
|
|
193
|
+
locationOptions: [],
|
|
194
|
+
loading: false,
|
|
195
|
+
useAvailabilitySet,
|
|
196
|
+
vmSizes: [],
|
|
197
|
+
valueCopy: this.value
|
|
167
198
|
};
|
|
168
199
|
},
|
|
169
200
|
|
|
@@ -173,8 +204,180 @@ export default {
|
|
|
173
204
|
},
|
|
174
205
|
},
|
|
175
206
|
|
|
207
|
+
computed: {
|
|
208
|
+
locationOptionsInDropdown() {
|
|
209
|
+
const locationOptionsCopy = [...this.locationOptions];
|
|
210
|
+
|
|
211
|
+
return locationOptionsCopy.sort((a, b) => {
|
|
212
|
+
// Hopefully it's easier to find a region if the list is in
|
|
213
|
+
// alphabetical order.
|
|
214
|
+
if (a.name > b.name) {
|
|
215
|
+
return 1;
|
|
216
|
+
}
|
|
217
|
+
if (a.name < b.name) {
|
|
218
|
+
return -1;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return 0;
|
|
222
|
+
} )
|
|
223
|
+
.map((option) => {
|
|
224
|
+
return {
|
|
225
|
+
displayName: `${ option.displayName } (${ option.name })`,
|
|
226
|
+
name: option.name,
|
|
227
|
+
};
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
vmsWithAcceleratedNetworking() {
|
|
231
|
+
return this.vmSizes.filter((vmData) => {
|
|
232
|
+
return vmData.AcceleratedNetworkingSupported;
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
vmsWithoutAcceleratedNetworking() {
|
|
236
|
+
return this.vmSizes.filter((vmData) => {
|
|
237
|
+
return !vmData.AcceleratedNetworkingSupported;
|
|
238
|
+
});
|
|
239
|
+
},
|
|
240
|
+
selectedVmSizeSupportsAN() {
|
|
241
|
+
const selectedSizeIsValid = !!this.vmsWithAcceleratedNetworking.find((vmData) => {
|
|
242
|
+
return this.value.size === vmData.Name;
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
return selectedSizeIsValid;
|
|
246
|
+
},
|
|
247
|
+
vmSizeAcceleratedNetworkingWarning() {
|
|
248
|
+
if (!this.selectedVmSizeSupportsAN && this.value.acceleratedNetworking) {
|
|
249
|
+
return this.t('cluster.machineConfig.azure.size.selectedSizeAcceleratedNetworkingWarning');
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return '';
|
|
253
|
+
},
|
|
254
|
+
vmsWithAvailabilityZones() {
|
|
255
|
+
return this.vmSizes.filter((vmData) => {
|
|
256
|
+
return vmData.AvailabilityZones.length > 0;
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
vmSizeAvailabilityWarning() {
|
|
260
|
+
const selectedVmIsAvailableInSelectedRegion = this.vmSizes.filter((vmData) => {
|
|
261
|
+
return vmData.Name === this.value.size;
|
|
262
|
+
}).length > 0;
|
|
263
|
+
|
|
264
|
+
if (!selectedVmIsAvailableInSelectedRegion) {
|
|
265
|
+
return this.t('cluster.machineConfig.azure.size.availabilityWarning');
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return '';
|
|
269
|
+
},
|
|
270
|
+
selectedVmSizeHasZones() {
|
|
271
|
+
const dataForSelectedSize = this.vmsWithAvailabilityZones.filter((vmData) => {
|
|
272
|
+
const { Name } = vmData;
|
|
273
|
+
|
|
274
|
+
return Name === this.value.size;
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
if (dataForSelectedSize.length > 0) {
|
|
278
|
+
return dataForSelectedSize[0].AvailabilityZones.length > 0;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return false;
|
|
282
|
+
},
|
|
283
|
+
vmAvailabilityZoneWarning() {
|
|
284
|
+
if (this.useAvailabilitySet) {
|
|
285
|
+
return '';
|
|
286
|
+
}
|
|
287
|
+
if (this.vmsWithAvailabilityZones.length === 0) {
|
|
288
|
+
/**
|
|
289
|
+
* Show UI warning: Availability zones are not supported in the selected
|
|
290
|
+
* region. Please select a different region or use an
|
|
291
|
+
* availability set instead.
|
|
292
|
+
*/
|
|
293
|
+
return this.t('cluster.machineConfig.azure.size.regionDoesNotSupportAzs');
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (this.vmsWithAvailabilityZones.length > 0 && !this.selectedVmSizeHasZones) {
|
|
297
|
+
/**
|
|
298
|
+
* Show UI warning: The selected region does not support availability
|
|
299
|
+
* zones for the selected VM size. Please select a
|
|
300
|
+
* different region or VM size.
|
|
301
|
+
*/
|
|
302
|
+
return this.t('cluster.machineConfig.azure.size.regionSupportsAzsButNotThisSize');
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return '';
|
|
306
|
+
},
|
|
307
|
+
vmSizeOptionsForDropdown() {
|
|
308
|
+
// example vmSize option from backend:
|
|
309
|
+
// {
|
|
310
|
+
// AcceleratedNetworkingSupported: false,
|
|
311
|
+
// AvailabilityZones: [],
|
|
312
|
+
// Name: "Basic_A0"
|
|
313
|
+
// }
|
|
314
|
+
|
|
315
|
+
const out = [
|
|
316
|
+
{ kind: 'group', label: this.t('cluster.machineConfig.azure.size.supportsAcceleratedNetworking') },
|
|
317
|
+
...this.vmsWithAcceleratedNetworking,
|
|
318
|
+
{ kind: 'group', label: this.t('cluster.machineConfig.azure.size.doesNotSupportAcceleratedNetworking') },
|
|
319
|
+
...this.vmsWithoutAcceleratedNetworking,
|
|
320
|
+
];
|
|
321
|
+
|
|
322
|
+
if (!this.selectedVmSizeExistsInSelectedRegion) {
|
|
323
|
+
out.push({
|
|
324
|
+
Name: this.value.size,
|
|
325
|
+
disabled: true
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return out.map((vmData) => {
|
|
330
|
+
const { Name } = vmData;
|
|
331
|
+
|
|
332
|
+
if (vmData.kind === 'group') {
|
|
333
|
+
return vmData;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return {
|
|
337
|
+
label: Name,
|
|
338
|
+
value: Name,
|
|
339
|
+
disabled: vmData.disabled || false,
|
|
340
|
+
};
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
selectedVmSizeExistsInSelectedRegion() {
|
|
344
|
+
// If the user selects a region and then a VM size
|
|
345
|
+
// that does not exist in the region, the list of VM
|
|
346
|
+
// sizes will update, causing the selected VM size
|
|
347
|
+
// to disappear. A disappearing VM size seems like a
|
|
348
|
+
// bad UX, so this value allows the value to be
|
|
349
|
+
// added to the VM size dropdown, while an error message
|
|
350
|
+
// indicates that the size is invalid.
|
|
351
|
+
if (this.vmSizes.find((size) => {
|
|
352
|
+
return size.Name === this.value.size;
|
|
353
|
+
})) {
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return false;
|
|
358
|
+
},
|
|
359
|
+
availableZones() {
|
|
360
|
+
const data = this.vmSizes.filter((vmData) => {
|
|
361
|
+
return vmData.Name === this.value.size;
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
if (data.length > 0) {
|
|
365
|
+
return data[0].AvailabilityZones.sort((a, b) => {
|
|
366
|
+
return a - b;
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
return [];
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
|
|
176
374
|
created() {
|
|
177
375
|
if (this.mode === 'create') {
|
|
376
|
+
for (const key in this.defaultConfig) {
|
|
377
|
+
if (this.value[key] === undefined) {
|
|
378
|
+
this.$set(this.value, key, this.defaultConfig[key]);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
178
381
|
merge(this.value, this.defaultConfig);
|
|
179
382
|
|
|
180
383
|
this.value.nsg = `rancher-managed-${ randomStr(8) }`;
|
|
@@ -182,10 +385,81 @@ export default {
|
|
|
182
385
|
},
|
|
183
386
|
|
|
184
387
|
methods: {
|
|
388
|
+
getVmSizeOptionLabel(vmData) {
|
|
389
|
+
return vmData.label;
|
|
390
|
+
},
|
|
391
|
+
handleVmSizeInput($event) {
|
|
392
|
+
if (this.vmSizeAcceleratedNetworkingWarning) {
|
|
393
|
+
this.$emit('error', this.vmSizeAcceleratedNetworkingWarning);
|
|
394
|
+
}
|
|
395
|
+
},
|
|
185
396
|
stringify,
|
|
397
|
+
async getVmSizes() {
|
|
398
|
+
this.loading = true;
|
|
399
|
+
// The list of VM sizes should update when the
|
|
400
|
+
// selected region is changed because different
|
|
401
|
+
// VMs are supported in different regions.
|
|
402
|
+
|
|
403
|
+
// Example vmSize option from backend:
|
|
404
|
+
// {
|
|
405
|
+
// AcceleratedNetworkingSupported: false,
|
|
406
|
+
// AvailabilityZones: [],
|
|
407
|
+
// Name: "Basic_A0"
|
|
408
|
+
// }
|
|
409
|
+
try {
|
|
410
|
+
this.vmSizes = await this.$store.dispatch('management/request', {
|
|
411
|
+
url: addParams('/meta/aksVMSizesV2', {
|
|
412
|
+
cloudCredentialId: this.credentialId,
|
|
413
|
+
region: this.value.location
|
|
414
|
+
}),
|
|
415
|
+
method: 'GET',
|
|
416
|
+
});
|
|
417
|
+
} catch (e) {
|
|
418
|
+
this.errors = exceptionToErrorsArray(e);
|
|
419
|
+
}
|
|
420
|
+
this.loading = false;
|
|
421
|
+
},
|
|
186
422
|
setLocation(location) {
|
|
187
423
|
this.value.location = location?.name;
|
|
424
|
+
this.getVmSizes();
|
|
188
425
|
},
|
|
426
|
+
initTags() {
|
|
427
|
+
const parts = (this.value.tags || '').split(/,/);
|
|
428
|
+
const out = {};
|
|
429
|
+
|
|
430
|
+
let i = 0;
|
|
431
|
+
|
|
432
|
+
while ( i + 1 < parts.length ) {
|
|
433
|
+
const key = `${ parts[i] }`.trim();
|
|
434
|
+
const value = `${ parts[i + 1] }`.trim();
|
|
435
|
+
|
|
436
|
+
if ( key ) {
|
|
437
|
+
out[key] = value;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
i += 2;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
this.tags = out;
|
|
444
|
+
},
|
|
445
|
+
|
|
446
|
+
updateTags(tags) {
|
|
447
|
+
const ary = [];
|
|
448
|
+
|
|
449
|
+
for ( const k in tags ) {
|
|
450
|
+
ary.push(k, tags[k]);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
this.$set(this.value, 'tags', ary.join(','));
|
|
454
|
+
},
|
|
455
|
+
handleAzChange() {
|
|
456
|
+
if (this.value.availabilitySet) {
|
|
457
|
+
// If an availability set exists, clear it out when
|
|
458
|
+
// an availability zone is selected. Otherwise the
|
|
459
|
+
// set will take precedent and the zone will not be saved.
|
|
460
|
+
this.value.availabilitySet = null;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
189
463
|
},
|
|
190
464
|
};
|
|
191
465
|
</script>
|
|
@@ -225,7 +499,7 @@ export default {
|
|
|
225
499
|
<LabeledSelect
|
|
226
500
|
:value="value.location"
|
|
227
501
|
:mode="mode"
|
|
228
|
-
:options="
|
|
502
|
+
:options="locationOptionsInDropdown"
|
|
229
503
|
option-key="name"
|
|
230
504
|
option-label="displayName"
|
|
231
505
|
:searchable="true"
|
|
@@ -237,7 +511,7 @@ export default {
|
|
|
237
511
|
</div>
|
|
238
512
|
</div>
|
|
239
513
|
<div class="row mt-20">
|
|
240
|
-
<div class="col span-
|
|
514
|
+
<div class="col span-4">
|
|
241
515
|
<LabeledInput
|
|
242
516
|
v-model="value.resourceGroup"
|
|
243
517
|
:mode="mode"
|
|
@@ -245,14 +519,52 @@ export default {
|
|
|
245
519
|
:disabled="disabled"
|
|
246
520
|
/>
|
|
247
521
|
</div>
|
|
248
|
-
|
|
522
|
+
|
|
523
|
+
<div
|
|
524
|
+
v-if="useAvailabilitySet"
|
|
525
|
+
class="col span-4"
|
|
526
|
+
>
|
|
249
527
|
<LabeledInput
|
|
250
528
|
v-model="value.availabilitySet"
|
|
251
529
|
:mode="mode"
|
|
252
530
|
:label="t('cluster.machineConfig.azure.availabilitySet.label')"
|
|
531
|
+
:tooltip="t('cluster.machineConfig.azure.availabilitySet.description')"
|
|
253
532
|
:disabled="disabled"
|
|
254
533
|
/>
|
|
255
534
|
</div>
|
|
535
|
+
<div
|
|
536
|
+
v-if="!useAvailabilitySet"
|
|
537
|
+
class="col span-4"
|
|
538
|
+
>
|
|
539
|
+
<i
|
|
540
|
+
v-if="loading"
|
|
541
|
+
class="icon icon-spinner delayed-loader"
|
|
542
|
+
/>
|
|
543
|
+
<LabeledSelect
|
|
544
|
+
v-else
|
|
545
|
+
v-model="value.availabilityZone"
|
|
546
|
+
:mode="mode"
|
|
547
|
+
:options="availableZones"
|
|
548
|
+
:label="t('cluster.machineConfig.azure.availabilityZone.label')"
|
|
549
|
+
:tooltip="t('cluster.machineConfig.azure.availabilityZone.description')"
|
|
550
|
+
:disabled="disabled || !!vmAvailabilityZoneWarning"
|
|
551
|
+
@input="handleAzChange"
|
|
552
|
+
/>
|
|
553
|
+
<Banner
|
|
554
|
+
v-if="vmAvailabilityZoneWarning"
|
|
555
|
+
color="error"
|
|
556
|
+
:label="vmAvailabilityZoneWarning"
|
|
557
|
+
/>
|
|
558
|
+
</div>
|
|
559
|
+
<div class="col span-4">
|
|
560
|
+
<RadioGroup
|
|
561
|
+
v-model="useAvailabilitySet"
|
|
562
|
+
name="etcd-s3"
|
|
563
|
+
:options="[true, false]"
|
|
564
|
+
:labels="[t('cluster.machineConfig.azure.availabilitySet.label'),t('cluster.machineConfig.azure.availabilityZone.label')]"
|
|
565
|
+
:mode="mode"
|
|
566
|
+
/>
|
|
567
|
+
</div>
|
|
256
568
|
</div>
|
|
257
569
|
<hr class="mt-20">
|
|
258
570
|
<div class="row mt-20">
|
|
@@ -266,40 +578,62 @@ export default {
|
|
|
266
578
|
/>
|
|
267
579
|
</div>
|
|
268
580
|
<div class="col span-6">
|
|
581
|
+
<i
|
|
582
|
+
v-if="loading"
|
|
583
|
+
class="icon icon-spinner delayed-loader"
|
|
584
|
+
/>
|
|
269
585
|
<LabeledSelect
|
|
586
|
+
v-else
|
|
270
587
|
v-model="value.size"
|
|
271
588
|
:mode="mode"
|
|
272
|
-
:options="
|
|
589
|
+
:options="vmSizeOptionsForDropdown"
|
|
590
|
+
:get-option-label="getVmSizeOptionLabel"
|
|
273
591
|
:searchable="true"
|
|
274
592
|
:required="true"
|
|
275
593
|
:label="t('cluster.machineConfig.azure.size.label')"
|
|
594
|
+
:tooltip="value.acceleratedNetworking ? t('cluster.machineConfig.azure.size.tooltip') : ''"
|
|
276
595
|
:disabled="disabled"
|
|
596
|
+
@selecting="handleVmSizeInput"
|
|
597
|
+
/>
|
|
598
|
+
<Banner
|
|
599
|
+
v-if="vmSizeAcceleratedNetworkingWarning"
|
|
600
|
+
color="error"
|
|
601
|
+
:label="vmSizeAcceleratedNetworkingWarning"
|
|
602
|
+
/>
|
|
603
|
+
<Banner
|
|
604
|
+
v-else-if="vmSizeAvailabilityWarning"
|
|
605
|
+
color="error"
|
|
606
|
+
:label="vmSizeAvailabilityWarning"
|
|
277
607
|
/>
|
|
278
608
|
</div>
|
|
279
609
|
</div>
|
|
280
610
|
|
|
281
611
|
<portal :to="'advanced-' + uuid">
|
|
282
|
-
<div
|
|
283
|
-
<
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
612
|
+
<div v-if="useAvailabilitySet">
|
|
613
|
+
<h2>Availability Set Configuration</h2>
|
|
614
|
+
<div class="row mt-20">
|
|
615
|
+
<div class="col span-6">
|
|
616
|
+
<LabeledInput
|
|
617
|
+
v-model="value.faultDomainCount"
|
|
618
|
+
:mode="mode"
|
|
619
|
+
:label="t('cluster.machineConfig.azure.faultDomainCount.label')"
|
|
620
|
+
:tooltip="t('cluster.machineConfig.azure.faultDomainCount.help')"
|
|
621
|
+
:disabled="disabled"
|
|
622
|
+
/>
|
|
623
|
+
</div>
|
|
624
|
+
<div class="col span-6">
|
|
625
|
+
<LabeledInput
|
|
626
|
+
v-model="value.updateDomainCount"
|
|
627
|
+
:mode="mode"
|
|
628
|
+
:label="t('cluster.machineConfig.azure.updateDomainCount.label')"
|
|
629
|
+
:tooltip="t('cluster.machineConfig.azure.updateDomainCount.help')"
|
|
630
|
+
:disabled="disabled"
|
|
631
|
+
/>
|
|
632
|
+
</div>
|
|
300
633
|
</div>
|
|
301
634
|
</div>
|
|
302
|
-
<hr class="mt-20">
|
|
635
|
+
<hr class="mt-20 mb-20">
|
|
636
|
+
<h2>Purchase Plan</h2>
|
|
303
637
|
<div class="row mt-20">
|
|
304
638
|
<div class="col span-6">
|
|
305
639
|
<LabeledInput
|
|
@@ -311,7 +645,8 @@ export default {
|
|
|
311
645
|
/>
|
|
312
646
|
</div>
|
|
313
647
|
</div>
|
|
314
|
-
<hr class="mt-20">
|
|
648
|
+
<hr class="mt-20 mb-20">
|
|
649
|
+
<h2>Network</h2>
|
|
315
650
|
<div class="row mt-20">
|
|
316
651
|
<div class="col span-6">
|
|
317
652
|
<LabeledInput
|
|
@@ -330,6 +665,19 @@ export default {
|
|
|
330
665
|
/>
|
|
331
666
|
</div>
|
|
332
667
|
</div>
|
|
668
|
+
<div class="row mt-20">
|
|
669
|
+
<Checkbox
|
|
670
|
+
v-model="value.acceleratedNetworking"
|
|
671
|
+
:disabled="(!value.acceleratedNetworking && !selectedVmSizeSupportsAN)"
|
|
672
|
+
:mode="mode"
|
|
673
|
+
:label="t('cluster.machineConfig.azure.acceleratedNetworking.label')"
|
|
674
|
+
/>
|
|
675
|
+
</div>
|
|
676
|
+
<Banner
|
|
677
|
+
v-if="!selectedVmSizeSupportsAN && value.acceleratedNetworking"
|
|
678
|
+
color="error"
|
|
679
|
+
:label="t('cluster.machineConfig.azure.size.selectedSizeAcceleratedNetworkingWarning')"
|
|
680
|
+
/>
|
|
333
681
|
<div class="row mt-20">
|
|
334
682
|
<div class="col span-6">
|
|
335
683
|
<LabeledInput
|
|
@@ -392,7 +740,8 @@ export default {
|
|
|
392
740
|
/>
|
|
393
741
|
</div>
|
|
394
742
|
</div>
|
|
395
|
-
<hr class="mt-20">
|
|
743
|
+
<hr class="mt-20 mb-20">
|
|
744
|
+
<h2>Disks</h2>
|
|
396
745
|
<div class="row mt-20">
|
|
397
746
|
<div class="col span-6">
|
|
398
747
|
<LabeledSelect
|
|
@@ -406,9 +755,12 @@ export default {
|
|
|
406
755
|
option-key="value"
|
|
407
756
|
option-label="name"
|
|
408
757
|
/>
|
|
758
|
+
<Banner
|
|
759
|
+
v-if="value.storageType === 'StandardSSD_LRS' && !value.managedDisks"
|
|
760
|
+
color="error"
|
|
761
|
+
:label="t('cluster.machineConfig.azure.storageType.warning')"
|
|
762
|
+
/>
|
|
409
763
|
</div>
|
|
410
|
-
</div>
|
|
411
|
-
<div class="row mt-20">
|
|
412
764
|
<div class="col span-6">
|
|
413
765
|
<Checkbox
|
|
414
766
|
v-model="value.managedDisks"
|
|
@@ -416,16 +768,17 @@ export default {
|
|
|
416
768
|
:label="t('cluster.machineConfig.azure.managedDisks.label')"
|
|
417
769
|
:disabled="disabled"
|
|
418
770
|
/>
|
|
771
|
+
</div>
|
|
772
|
+
</div>
|
|
773
|
+
<div class="row mt-20">
|
|
774
|
+
<div class="col span-6">
|
|
419
775
|
<LabeledInput
|
|
420
776
|
v-model="value.diskSize"
|
|
421
777
|
:mode="mode"
|
|
422
|
-
class="mt-10"
|
|
423
778
|
:label="t('cluster.machineConfig.azure.managedDisksSize.label')"
|
|
424
779
|
:disabled="disabled"
|
|
425
780
|
/>
|
|
426
781
|
</div>
|
|
427
|
-
</div>
|
|
428
|
-
<div class="row mt-20">
|
|
429
782
|
<div class="col span-6">
|
|
430
783
|
<LabeledInput
|
|
431
784
|
v-model="value.sshUser"
|
|
@@ -449,6 +802,22 @@ export default {
|
|
|
449
802
|
/>
|
|
450
803
|
</div>
|
|
451
804
|
</div>
|
|
805
|
+
|
|
806
|
+
<div class="row mt-20">
|
|
807
|
+
<div class="col span-12">
|
|
808
|
+
<h3><t k="cluster.machineConfig.azure.tags.label" /></h3>
|
|
809
|
+
<KeyValue
|
|
810
|
+
:value="tags"
|
|
811
|
+
:mode="mode"
|
|
812
|
+
:read-allowed="false"
|
|
813
|
+
:label="t('cluster.machineConfig.amazonEc2.tagTitle')"
|
|
814
|
+
:add-label="t('labels.addTag')"
|
|
815
|
+
:initial-empty-row="true"
|
|
816
|
+
:disabled="disabled"
|
|
817
|
+
@input="updateTags"
|
|
818
|
+
/>
|
|
819
|
+
</div>
|
|
820
|
+
</div>
|
|
452
821
|
</portal>
|
|
453
822
|
</div>
|
|
454
823
|
</template>
|