@rancher/shell 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/base/_basic.scss +0 -1
- package/assets/styles/base/_variables.scss +2 -0
- package/assets/styles/global/_labeled-input.scss +6 -1
- package/assets/styles/global/_select.scss +9 -0
- package/assets/styles/vendor/vue-js-modal.scss +4 -0
- package/assets/translations/en-us.yaml +240 -16
- package/assets/translations/zh-hans.yaml +335 -111
- package/chart/example.vue +1 -1
- package/chart/istio.vue +2 -2
- package/chart/logging/index.vue +2 -2
- package/chart/monitoring/alerting/index.vue +2 -2
- package/chart/monitoring/grafana/index.vue +2 -2
- package/chart/monitoring/index.vue +2 -2
- package/chart/monitoring/prometheus/index.vue +4 -4
- package/chart/rancher-alerting-drivers.vue +17 -3
- package/chart/rancher-backup/S3.vue +37 -4
- package/chart/rancher-backup/index.vue +3 -3
- package/cloud-credential/aws.vue +1 -1
- package/cloud-credential/azure.vue +1 -1
- package/cloud-credential/digitalocean.vue +1 -1
- package/cloud-credential/gcp.vue +1 -1
- package/cloud-credential/generic.vue +1 -1
- package/cloud-credential/harvester.vue +2 -2
- package/cloud-credential/linode.vue +1 -1
- package/cloud-credential/s3.vue +2 -2
- package/cloud-credential/vmwarevsphere.vue +1 -1
- package/components/ActionMenu.vue +11 -1
- package/components/Alert.vue +1 -1
- package/components/AssignTo.vue +2 -2
- package/components/AsyncButton.vue +25 -12
- package/components/AwsComplianceBanner.vue +44 -0
- package/components/BannerGraphic.vue +11 -2
- package/components/ChartReadme.vue +10 -2
- package/components/CompoundStatusBadge.vue +50 -0
- package/components/CopyToClipboardText.vue +25 -4
- package/components/CruResource.vue +185 -16
- package/components/CruResourceFooter.vue +17 -1
- package/components/EtcdInfoBanner.vue +1 -1
- package/components/FilterLabel.vue +254 -0
- package/components/GlobalRoleBindings.vue +2 -2
- package/components/GrafanaDashboard.vue +1 -1
- package/components/GrowlManager.vue +20 -9
- package/components/HarvesterServiceAddOnConfig.vue +2 -2
- package/components/Import.vue +2 -2
- package/components/LandingPagePreference.vue +2 -2
- package/components/Markdown.vue +44 -12
- package/components/ModalWithCard.vue +2 -2
- package/components/MoveModal.vue +1 -1
- package/components/PercentageBar.vue +1 -1
- package/components/PromptChangePassword.vue +1 -1
- package/components/PromptModal.vue +13 -2
- package/components/PromptRemove.vue +64 -33
- package/components/PromptRestore.vue +3 -3
- package/components/Questions/Boolean.vue +1 -1
- package/components/Questions/Float.vue +1 -1
- package/components/Questions/Int.vue +1 -1
- package/components/Questions/Reference.vue +1 -1
- package/components/Questions/String.vue +1 -1
- package/components/RelatedResources.vue +1 -1
- package/components/RelatedWorkloadsTable.vue +3 -1
- package/components/ResourceDetail/Masthead.vue +27 -9
- package/components/ResourceDetail/index.vue +72 -7
- package/components/ResourceList/Masthead.vue +22 -0
- package/components/ResourceList/ResourceLoadingIndicator.vue +137 -0
- package/components/ResourceList/index.vue +42 -7
- package/components/ResourceTable.vue +11 -2
- package/components/ResourceYaml.vue +7 -1
- package/components/SelectIconGrid.vue +14 -1
- package/components/SortableTable/THead.vue +1 -1
- package/components/SortableTable/debug.js +117 -0
- package/components/SortableTable/index.vue +200 -43
- package/components/SortableTable/paging.js +2 -12
- package/components/SortableTable/selection.js +3 -0
- package/components/SortableTable/sorting.js +3 -1
- package/components/Tabbed/Tab.vue +25 -4
- package/components/Tabbed/index.vue +133 -119
- package/components/TypeDescription.vue +1 -1
- package/components/VMConsoleBar.vue +1 -1
- package/components/Wizard.vue +53 -14
- package/components/YamlEditor.vue +10 -0
- package/components/__tests__/CopyCode.test.ts +1 -7
- package/components/__tests__/CruResource.test.ts +1 -8
- package/components/auth/AllowedPrincipals.vue +1 -1
- package/components/auth/AuthBanner.vue +2 -1
- package/components/auth/AzureWarning.vue +69 -0
- package/components/auth/RoleDetailEdit.vue +4 -4
- package/components/auth/login/ldap.vue +1 -1
- package/components/cards/ApplicationCard.vue +140 -0
- package/components/dialog/AddClusterMemberDialog.vue +1 -1
- package/components/dialog/AddCustomBadgeDialog.vue +4 -4
- package/components/dialog/AddProjectMemberDialog.vue +2 -2
- package/components/dialog/AddonConfigConfirmationDialog.vue +1 -1
- package/components/dialog/DrainNode.vue +3 -3
- package/components/dialog/ForceMachineRemoveDialog.vue +2 -2
- package/components/dialog/GenericPrompt.vue +2 -2
- package/components/dialog/RollbackWorkloadDialog.vue +2 -2
- package/components/dialog/RotateCertificatesDialog.vue +3 -3
- package/components/dialog/RotateEncryptionKeyDialog.vue +11 -6
- package/components/dialog/SaveAsRKETemplateDialog.vue +3 -3
- package/components/dialog/harvester/AddHotplugModal.vue +3 -3
- package/components/dialog/harvester/BackupModal.vue +3 -3
- package/components/dialog/harvester/CloneTemplate.vue +3 -3
- package/components/dialog/harvester/EjectCDROMDialog.vue +3 -3
- package/components/dialog/harvester/ExportImageDialog.vue +3 -3
- package/components/dialog/harvester/MaintenanceDialog.vue +2 -2
- package/components/dialog/harvester/MigrationDialog.vue +2 -2
- package/components/dialog/harvester/RestoreDialog.vue +2 -2
- package/components/dialog/harvester/SupportBundle.vue +2 -2
- package/components/dialog/harvester/UnplugVolume.vue +2 -2
- package/components/fleet/FleetBundleResources.vue +1 -1
- package/components/fleet/FleetBundles.vue +1 -1
- package/components/fleet/FleetResources.vue +5 -3
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +17 -0
- package/components/fleet/ForceDirectedTreeChart/index.vue +553 -0
- package/components/form/ArrayList.vue +22 -3
- package/components/form/BannerSettings.vue +3 -3
- package/components/form/ChangePassword.vue +2 -2
- package/components/form/Command.vue +28 -9
- package/components/form/Error.vue +50 -0
- package/components/form/Footer.vue +2 -5
- package/components/form/HealthCheck.vue +2 -2
- package/components/form/HookOption.vue +2 -2
- package/components/form/InputWithSelect.vue +12 -2
- package/components/form/KeyValue.vue +5 -2
- package/components/form/LabeledSelect.vue +27 -14
- package/components/form/Labels.vue +12 -0
- package/components/form/MatchExpressions.vue +44 -10
- package/components/form/Members/ClusterPermissionsEditor.vue +3 -3
- package/components/form/Members/MembershipEditor.vue +10 -1
- package/components/form/Members/ProjectMembershipEditor.vue +1 -0
- package/components/form/NameNsDescription.vue +202 -79
- package/components/form/Networking.vue +1 -1
- package/components/form/NodeAffinity.vue +41 -26
- package/components/form/NodeScheduling.vue +29 -3
- package/components/form/NotificationSettings.vue +2 -2
- package/components/form/Password.vue +1 -1
- package/components/form/PodAffinity.vue +64 -6
- package/components/form/PodSecurity.vue +2 -2
- package/components/form/Ports.vue +1 -1
- package/components/form/Probe.vue +60 -17
- package/components/form/ProjectMemberEditor.vue +3 -3
- package/components/form/ResourceQuota/NamespaceRow.vue +46 -2
- package/components/form/ResourceQuota/Project.vue +4 -0
- package/components/form/ResourceTabs/index.vue +19 -7
- package/components/form/RuleSelector.vue +1 -1
- package/components/form/Security.vue +56 -14
- package/components/form/Select.vue +52 -10
- package/components/form/SelectOrCreateAuthSecret.vue +70 -31
- package/components/form/ServiceNameSelect.vue +1 -1
- package/components/form/ServicePorts.vue +10 -2
- package/components/form/ShellInput.vue +1 -1
- package/components/form/SimpleSecretSelector.vue +2 -2
- package/components/form/Tolerations.vue +1 -1
- package/components/form/UnitInput.vue +12 -3
- package/components/form/ValueFromResource.vue +1 -1
- package/components/form/WorkloadPorts.vue +1 -1
- package/components/form/__tests__/Command.test.ts +63 -0
- package/components/form/__tests__/Error.test.ts +56 -0
- package/components/form/__tests__/MatchExpressions.test.ts +79 -0
- package/components/form/__tests__/Probe.test.ts +62 -0
- package/components/form/__tests__/Security.test.ts +55 -0
- package/components/form/__tests__/UnitInput.test.ts +31 -23
- package/components/formatter/BadgeStateFormatter.vue +1 -1
- package/components/formatter/Capitalize.vue +7 -0
- package/components/formatter/ClusterLink.vue +6 -2
- package/components/formatter/ClusterProvider.vue +36 -0
- package/components/formatter/DelayedValue.vue +43 -0
- package/components/formatter/Endpoints.vue +2 -2
- package/components/formatter/HarvesterDiskState.vue +1 -1
- package/components/formatter/HarvesterIpAddress.vue +37 -18
- package/components/formatter/HarvesterMigrationState.vue +1 -1
- package/components/formatter/HarvesterVmState.vue +1 -1
- package/components/formatter/LinkDetail.vue +11 -2
- package/components/formatter/LinkName.vue +2 -2
- package/components/formatter/LiveExpiryBadgeState.vue +1 -1
- package/components/formatter/LivePodRestarts.vue +47 -0
- package/components/formatter/MachineSummaryGraph.vue +51 -5
- package/components/formatter/PodsUsage.vue +5 -3
- package/components/formatter/Weight.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +17 -6
- package/components/nav/HarvesterUpgrade.vue +15 -5
- package/components/nav/Header.vue +15 -6
- package/components/nav/Jump.vue +1 -1
- package/components/nav/NamespaceFilter.vue +30 -10
- package/components/nav/TopLevelMenu.vue +52 -14
- package/components/nav/WindowManager/ContainerLogs.vue +14 -2
- package/components/nav/WorkspaceSwitcher.vue +1 -1
- package/components/{NovncConsole.vue → novnc/NovncConsole.vue} +0 -0
- package/components/novnc/NovncConsoleItem.vue +89 -0
- package/components/novnc/NovncConsoleWrapper.vue +243 -0
- package/config/labels-annotations.js +6 -2
- package/config/product/explorer.js +7 -3
- package/config/product/fleet.js +4 -1
- package/config/product/manager.js +5 -6
- package/config/product/settings.js +12 -1
- package/config/query-params.js +2 -0
- package/config/roles.ts +5 -0
- package/config/settings.js +60 -63
- package/config/table-headers.js +47 -18
- package/config/types.js +24 -8
- package/content/docs/en-us/whats-new.md +25 -0
- package/core/plugin.ts +12 -2
- package/creators/app/init +7 -1
- package/creators/pkg/tsconfig.json +2 -3
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/cis.cattle.io.clusterscan.vue +1 -1
- package/detail/fleet.cattle.io.bundle.vue +73 -21
- package/detail/fleet.cattle.io.gitrepo.vue +5 -4
- package/detail/harvesterhci.io.host/HarvesterHostBasic.vue +25 -4
- package/detail/harvesterhci.io.host/HarvesterHostDisk.vue +2 -2
- package/detail/harvesterhci.io.virtualmachinebackup/index.vue +1 -1
- package/detail/helm.cattle.io.projecthelmchart.vue +1 -1
- package/detail/networking.k8s.io.ingress.vue +10 -2
- package/detail/pod.vue +37 -1
- package/detail/provisioning.cattle.io.cluster.vue +102 -15
- package/detail/workload/index.vue +163 -15
- package/edit/auth/azuread.vue +146 -34
- package/edit/auth/github.vue +3 -3
- package/edit/auth/googleoauth.vue +3 -3
- package/edit/auth/ldap/config.vue +15 -7
- package/edit/auth/ldap/index.vue +2 -2
- package/edit/auth/oidc.vue +3 -3
- package/edit/auth/saml.vue +3 -3
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +1 -1
- package/edit/catalog.cattle.io.clusterrepo.vue +2 -2
- package/edit/cis.cattle.io.clusterscan.vue +4 -4
- package/edit/cis.cattle.io.clusterscanbenchmark.vue +1 -1
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -1
- package/edit/fleet.cattle.io.cluster.vue +1 -0
- package/edit/fleet.cattle.io.clustergroup.vue +1 -1
- package/edit/fleet.cattle.io.gitrepo.vue +290 -157
- package/edit/harvesterhci.io.host/HarvesterDisk.vue +4 -5
- package/edit/harvesterhci.io.host/index.vue +28 -19
- package/edit/harvesterhci.io.keypair.vue +1 -1
- package/edit/harvesterhci.io.managedchart/rancher-monitoring.vue +1 -1
- package/edit/harvesterhci.io.management.cluster.vue +1 -1
- package/edit/harvesterhci.io.networkattachmentdefinition.vue +2 -2
- package/edit/harvesterhci.io.setting/additional-ca.vue +1 -1
- package/edit/harvesterhci.io.setting/backup-target.vue +1 -1
- package/edit/harvesterhci.io.setting/http-proxy.vue +1 -1
- package/edit/harvesterhci.io.setting/index.vue +3 -3
- package/edit/harvesterhci.io.setting/overcommit-config.vue +4 -1
- package/edit/harvesterhci.io.setting/ssl-parameters.vue +1 -1
- package/edit/harvesterhci.io.setting/support-bundle-image.vue +1 -1
- package/edit/harvesterhci.io.setting/vip-pools.vue +1 -1
- package/edit/harvesterhci.io.setting/vm-force-reset-policy.vue +2 -2
- package/edit/harvesterhci.io.virtualmachinebackup.vue +2 -2
- package/edit/harvesterhci.io.virtualmachineimage.vue +2 -2
- package/edit/harvesterhci.io.virtualmachinetemplateversion.vue +26 -18
- package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
- package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +2 -2
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/AccessCredentialsUsers.vue +1 -1
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/index.vue +1 -1
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/DataTemplate.vue +1 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/index.vue +2 -1
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCpuMemory.vue +3 -1
- package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/__tests__/HarvesterEditNetwork.test.ts +41 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/base.vue +79 -36
- package/edit/kubevirt.io.virtualmachine/VirtualMachineReserved.vue +54 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue +1 -1
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/index.vue +2 -3
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditContainer.test.ts +40 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditExisting.test.ts +102 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVMImage.test.ts +117 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVolume.test.ts +74 -0
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/container.vue +59 -13
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue +72 -16
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/vmImage.vue +74 -14
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/volume.vue +35 -9
- package/edit/kubevirt.io.virtualmachine/index.vue +33 -24
- package/edit/logging-flow/index.vue +1 -1
- package/edit/logging.banzaicloud.io.output/index.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/file.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +2 -2
- package/edit/management.cattle.io.clusterroletemplatebinding.vue +2 -0
- package/edit/management.cattle.io.node.vue +71 -0
- package/edit/management.cattle.io.project.vue +28 -23
- package/edit/management.cattle.io.setting.vue +14 -3
- package/edit/management.cattle.io.user.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +4 -4
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +13 -13
- package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +18 -10
- package/edit/monitoring.coreos.com.alertmanagerconfig/tls.vue +2 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +12 -7
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +12 -7
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +20 -11
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +13 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +25 -7
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +20 -7
- package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +1 -1
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +19 -8
- package/edit/monitoring.coreos.com.receiver/auth.vue +1 -1
- package/edit/monitoring.coreos.com.receiver/index.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/tls.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/types/slack.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +1 -1
- package/edit/monitoring.coreos.com.receiver/types/webhook.vue +3 -3
- package/edit/monitoring.coreos.com.route.vue +2 -2
- package/edit/namespace.vue +0 -8
- package/edit/network.harvesterhci.io.clusternetwork/vlan.vue +1 -1
- package/edit/networking.istio.io.destinationrule/LoadBalancer.vue +2 -2
- package/edit/networking.istio.io.destinationrule/index.vue +1 -1
- package/edit/networking.k8s.io.ingress/Certificate.vue +5 -1
- package/edit/networking.k8s.io.ingress/Certificates.vue +5 -0
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +17 -2
- package/edit/networking.k8s.io.ingress/IngressClass.vue +63 -0
- package/edit/networking.k8s.io.ingress/Rule.vue +42 -6
- package/edit/networking.k8s.io.ingress/RulePath.vue +29 -5
- package/edit/networking.k8s.io.ingress/Rules.vue +11 -0
- package/edit/networking.k8s.io.ingress/index.vue +104 -15
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +1 -1
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +2 -2
- package/edit/networking.k8s.io.networkpolicy/index.vue +2 -2
- package/edit/persistentvolume/index.vue +1 -1
- package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +2 -2
- package/edit/persistentvolume/plugins/azureDisk.vue +2 -2
- package/edit/persistentvolume/plugins/azureFile.vue +2 -2
- package/edit/persistentvolume/plugins/cephfs.vue +4 -4
- package/edit/persistentvolume/plugins/cinder.vue +2 -2
- package/edit/persistentvolume/plugins/csi.vue +2 -2
- package/edit/persistentvolume/plugins/fc.vue +4 -4
- package/edit/persistentvolume/plugins/flexVolume.vue +2 -2
- package/edit/persistentvolume/plugins/flocker.vue +1 -1
- package/edit/persistentvolume/plugins/gcePersistentDisk.vue +2 -2
- package/edit/persistentvolume/plugins/glusterfs.vue +2 -2
- package/edit/persistentvolume/plugins/hostPath.vue +1 -1
- package/edit/persistentvolume/plugins/iscsi.vue +4 -4
- package/edit/persistentvolume/plugins/local.vue +1 -1
- package/edit/persistentvolume/plugins/longhorn.vue +2 -2
- package/edit/persistentvolume/plugins/nfs.vue +2 -2
- package/edit/persistentvolume/plugins/photonPersistentDisk.vue +1 -1
- package/edit/persistentvolume/plugins/portworxVolume.vue +2 -2
- package/edit/persistentvolume/plugins/quobyte.vue +2 -2
- package/edit/persistentvolume/plugins/rbd.vue +4 -4
- package/edit/persistentvolume/plugins/scaleIO.vue +2 -2
- package/edit/persistentvolume/plugins/storageos.vue +2 -2
- package/edit/persistentvolume/plugins/vsphereVolume.vue +1 -1
- package/edit/persistentvolumeclaim.vue +24 -8
- package/edit/provisioning.cattle.io.cluster/ACE.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +8 -3
- package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +15 -3
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +16 -3
- package/edit/provisioning.cattle.io.cluster/S3Config.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.tests.ts +1 -7
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -1
- package/edit/provisioning.cattle.io.cluster/index.vue +26 -7
- package/edit/provisioning.cattle.io.cluster/rke2.vue +136 -48
- package/edit/resources.cattle.io.backup.vue +26 -8
- package/edit/resources.cattle.io.restore.vue +3 -3
- package/edit/secret/basic.vue +1 -1
- package/edit/secret/index.vue +80 -2
- package/edit/secret/registry.vue +2 -2
- package/edit/secret/ssh.vue +1 -1
- package/edit/secret/tls.vue +1 -1
- package/edit/service.vue +47 -11
- package/edit/serviceaccount.vue +1 -1
- package/edit/storage.k8s.io.storageclass/index.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +7 -3
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-disk.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-file.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/cinder.vue +2 -2
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +2 -2
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/glusterfs.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/portworx-volume.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/quobyte.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/rbd.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/scaleio.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/storageos.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +1 -1
- package/edit/token.vue +3 -3
- package/edit/ui.cattle.io.navlink.vue +2 -2
- package/edit/workload/Job.vue +111 -23
- package/edit/workload/Upgrading.vue +77 -22
- package/edit/workload/__tests__/Job.test.ts +72 -0
- package/edit/workload/__tests__/Upgrading.test.ts +60 -0
- package/edit/workload/index.vue +13 -1085
- package/edit/workload/mixins/workload.js +900 -0
- package/edit/workload/storage/Mount.vue +2 -2
- package/edit/workload/storage/awsElasticBlockStore.vue +1 -1
- package/edit/workload/storage/azureDisk.vue +2 -2
- package/edit/workload/storage/azureFile.vue +1 -1
- package/edit/workload/storage/ephemeralVolume/index.vue +2 -2
- package/edit/workload/storage/gcePersistentDisk.vue +1 -1
- package/edit/workload/storage/hostPath.vue +1 -1
- package/edit/workload/storage/nfs.vue +2 -2
- package/edit/workload/storage/persistentVolumeClaim/index.vue +2 -2
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +3 -3
- package/edit/workload/storage/secret.vue +2 -2
- package/edit/workload/storage/vsphereVolume.vue +1 -1
- package/edit/workload/types/Deployment.vue +377 -0
- package/edit/workload/types/Generic.vue +295 -0
- package/layouts/default.vue +26 -7
- package/layouts/error.vue +3 -2
- package/layouts/home.vue +12 -2
- package/layouts/plain.vue +18 -2
- package/layouts/unauthenticated.vue +2 -1
- package/list/catalog.cattle.io.clusterrepo.vue +1 -1
- package/list/fleet.cattle.io.bundle.vue +1 -1
- package/list/fleet.cattle.io.cluster.vue +1 -1
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +1 -1
- package/list/harvesterhci.io.dashboard/HarvesterUpgrade.vue +9 -8
- package/list/harvesterhci.io.dashboard/UpgradeInfo.vue +40 -0
- package/list/harvesterhci.io.dashboard/index.vue +14 -36
- package/list/harvesterhci.io.host/index.vue +24 -12
- package/list/harvesterhci.io.networkattachmentdefinition.vue +1 -1
- package/list/harvesterhci.io.setting.vue +1 -1
- package/list/harvesterhci.io.virtualmachinebackup.vue +1 -1
- package/list/harvesterhci.io.virtualmachineimage.vue +36 -3
- package/list/harvesterhci.io.virtualmachinetemplateversion.vue +1 -5
- package/list/helm.cattle.io.projecthelmchart.vue +1 -1
- package/list/kubevirt.io.virtualmachine.vue +4 -2
- package/list/management.cattle.io.feature.vue +3 -3
- package/list/management.cattle.io.setting.vue +2 -2
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +1 -1
- package/list/namespace.vue +3 -1
- package/list/node.vue +10 -3
- package/list/persistentvolumeclaim.vue +42 -0
- package/list/provisioning.cattle.io.cluster.vue +22 -20
- package/list/workload.vue +31 -6
- package/machine-config/amazonec2.vue +37 -12
- package/machine-config/azure.vue +3 -3
- package/machine-config/digitalocean.vue +2 -2
- package/machine-config/generic.vue +1 -1
- package/machine-config/harvester.vue +124 -25
- package/machine-config/linode.vue +2 -2
- package/machine-config/vmwarevsphere.vue +5 -5
- package/middleware/authenticated.js +36 -6
- package/middleware/unauthenticated.js +22 -0
- package/mixins/brand.js +50 -3
- package/mixins/browser-tab-visibility.js +37 -0
- package/mixins/chart.js +36 -4
- package/mixins/{compact-input.js → compact-input.ts} +5 -3
- package/mixins/form-validation.js +122 -0
- package/mixins/harvester-vm/index.js +134 -90
- package/mixins/labeled-form-element.ts +193 -0
- package/mixins/resource-fetch.js +173 -0
- package/models/cluster.x-k8s.io.machine.js +6 -2
- package/models/etcdbackup.js +4 -0
- package/models/event.js +4 -0
- package/models/fleet.cattle.io.bundle.js +1 -1
- package/models/fleet.cattle.io.gitrepo.js +10 -0
- package/models/harvester/harvesterhci.io.virtualmachinebackup.js +5 -2
- package/models/harvester/harvesterhci.io.virtualmachineimage.js +11 -8
- package/models/harvester/harvesterhci.io.virtualmachinetemplateversion.js +11 -2
- package/models/harvester/kubevirt.io.virtualmachine.js +2 -2
- package/models/harvester/kubevirt.io.virtualmachineinstance.js +1 -1
- package/models/harvester/node.js +27 -32
- package/models/harvester/persistentvolumeclaim.js +1 -1
- package/models/management.cattle.io.cluster.js +17 -11
- package/models/management.cattle.io.clusterroletemplatebinding.js +2 -2
- package/models/management.cattle.io.globalrole.js +19 -0
- package/models/management.cattle.io.node.js +10 -11
- package/models/management.cattle.io.project.js +60 -26
- package/models/management.cattle.io.roletemplate.js +19 -0
- package/models/monitoring.coreos.com.alertmanagerconfig.js +3 -2
- package/models/monitoring.coreos.com.prometheusrule.js +9 -0
- package/models/namespace.js +9 -1
- package/models/networking.k8s.io.ingress.js +17 -5
- package/models/persistentvolumeclaim.js +47 -1
- package/models/projectroletemplatebinding.js +2 -2
- package/models/provisioning.cattle.io.cluster.js +92 -13
- package/models/rke.cattle.io.etcdsnapshot.js +4 -0
- package/models/service.js +11 -5
- package/models/storage.k8s.io.storageclass.js +14 -1
- package/models/workload.js +7 -2
- package/nuxt.config.js +27 -7
- package/package.json +10 -14
- package/pages/about.vue +15 -1
- package/pages/account/index.vue +1 -1
- package/pages/auth/login.vue +17 -5
- package/pages/auth/setup.vue +47 -9
- package/pages/c/_cluster/_product/_resource/create.vue +1 -1
- package/pages/c/_cluster/_product/members/index.vue +6 -1
- package/pages/c/_cluster/_product/projectsnamespaces.vue +113 -11
- package/pages/c/_cluster/apps/charts/chart.vue +1 -1
- package/pages/c/_cluster/apps/charts/index.vue +2 -2
- package/pages/c/_cluster/apps/charts/install.vue +197 -19
- package/pages/c/_cluster/auth/config/index.vue +1 -1
- package/pages/c/_cluster/explorer/EventsTable.vue +1 -15
- package/pages/c/_cluster/explorer/index.vue +64 -35
- package/pages/c/_cluster/explorer/tools/index.vue +1 -1
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +249 -0
- package/pages/c/_cluster/fleet/index.vue +47 -65
- package/pages/c/_cluster/harvester/airgapupgrade/index.vue +7 -4
- package/pages/c/_cluster/harvester/console/_uid/vnc.vue +7 -1
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +8 -14
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/monitoring/route-receiver/index.vue +1 -1
- package/pages/c/_cluster/settings/banners.vue +2 -2
- package/pages/c/_cluster/settings/brand.vue +62 -7
- package/pages/c/_cluster/settings/performance.vue +167 -0
- package/pages/diagnostic.vue +468 -0
- package/pages/fail-whale.vue +17 -5
- package/pages/home.vue +36 -22
- package/pages/plugins.vue +1 -1
- package/pages/prefs.vue +20 -7
- package/pages/support/index.vue +51 -9
- package/pkg/auto-import.js +1 -1
- package/pkg/dynamic-importer.lib.js +8 -0
- package/pkg/tsconfig.json +26 -9
- package/pkg/vue.config.js +8 -0
- package/plugins/console.js +29 -0
- package/plugins/dashboard-store/actions.js +171 -28
- package/plugins/dashboard-store/getters.js +13 -1
- package/plugins/dashboard-store/index.js +5 -1
- package/plugins/dashboard-store/mutations.js +72 -22
- package/plugins/dashboard-store/resource-class.js +259 -184
- package/plugins/i18n.js +9 -3
- package/plugins/steve/actions.js +16 -1
- package/plugins/steve/getters.js +9 -1
- package/plugins/steve/index.js +6 -2
- package/plugins/steve/mutations.js +100 -5
- package/plugins/steve/norman-class.js +8 -0
- package/plugins/steve/performanceTesting.js +5 -0
- package/plugins/steve/subscribe.js +144 -12
- package/plugins/steve/web-worker.steve-sub-worker.js +129 -0
- package/promptRemove/kubevirt.io.virtualmachine.vue +3 -17
- package/promptRemove/management.cattle.io.project.vue +128 -0
- package/promptRemove/pod.vue +131 -0
- package/rancher-components/BadgeState/BadgeState.spec.ts +12 -0
- package/{components → rancher-components/BadgeState}/BadgeState.vue +18 -10
- package/rancher-components/BadgeState/index.ts +1 -0
- package/{components/__tests__ → rancher-components/Banner}/Banner.test.ts +1 -1
- package/{components → rancher-components/Banner}/Banner.vue +22 -7
- package/rancher-components/Banner/index.ts +1 -0
- package/{components → rancher-components/Card}/Card.vue +58 -12
- package/rancher-components/Card/index.ts +1 -0
- package/{components/form → rancher-components/Form/Checkbox}/Checkbox.vue +118 -25
- package/rancher-components/Form/Checkbox/index.ts +1 -0
- package/{components/form/__tests__ → rancher-components/Form/LabeledInput}/LabeledInput.test.ts +13 -2
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +341 -0
- package/rancher-components/Form/LabeledInput/index.ts +1 -0
- package/{components/form → rancher-components/Form/Radio}/RadioButton.vue +50 -22
- package/{components/form → rancher-components/Form/Radio}/RadioGroup.vue +76 -28
- package/rancher-components/Form/Radio/index.ts +2 -0
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +169 -0
- package/rancher-components/Form/TextArea/index.ts +1 -0
- package/rancher-components/Form/index.ts +4 -0
- package/{components/form → rancher-components/LabeledTooltip}/LabeledTooltip.vue +32 -11
- package/rancher-components/LabeledTooltip/index.ts +1 -0
- package/scripts/build-pkg.sh +4 -0
- package/scripts/publish-shell.sh +37 -18
- package/scripts/test-plugins-build.sh +115 -0
- package/store/catalog.js +4 -0
- package/store/growl.js +6 -0
- package/store/i18n.js +18 -9
- package/store/index.js +190 -107
- package/store/prefs.js +8 -2
- package/store/resource-fetch.js +44 -0
- package/store/type-map.js +43 -7
- package/store/uiplugins.ts +1 -1
- package/utils/favicon.js +40 -0
- package/utils/object.js +26 -9
- package/utils/promise.js +20 -0
- package/utils/socket.js +10 -1
- package/utils/string.js +16 -0
- package/utils/validators/formRules/__tests__/index.test.ts +928 -0
- package/utils/validators/formRules/index.ts +447 -0
- package/utils/validators/prometheusrule.js +1 -1
- package/utils/validators/vm.js +12 -5
- package/utils/width.js +39 -0
- package/yarn-error.log +196 -0
- package/components/NovncConsoleWrapper.vue +0 -150
- package/components/form/Container.vue +0 -143
- package/components/form/LabeledInput.vue +0 -245
- package/components/form/Scheduling.vue +0 -115
- package/components/form/TextAreaAutoGrow.vue +0 -127
- package/mixins/labeled-form-element.js +0 -137
|
@@ -6,12 +6,12 @@ import { mapPref, DIFF } from '@shell/store/prefs';
|
|
|
6
6
|
import { mapFeature, MULTI_CLUSTER, LEGACY } from '@shell/store/features';
|
|
7
7
|
import { mapGetters } from 'vuex';
|
|
8
8
|
|
|
9
|
-
import Banner from '@
|
|
9
|
+
import { Banner } from '@components/Banner';
|
|
10
10
|
import ButtonGroup from '@shell/components/ButtonGroup';
|
|
11
11
|
import ChartReadme from '@shell/components/ChartReadme';
|
|
12
|
-
import Checkbox from '@
|
|
12
|
+
import { Checkbox } from '@components/Form/Checkbox';
|
|
13
13
|
import LabeledSelect from '@shell/components/form/LabeledSelect';
|
|
14
|
-
import LabeledInput from '@
|
|
14
|
+
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
15
15
|
import LazyImage from '@shell/components/LazyImage';
|
|
16
16
|
import Loading from '@shell/components/Loading';
|
|
17
17
|
import NameNsDescription from '@shell/components/form/NameNsDescription';
|
|
@@ -79,6 +79,16 @@ export default {
|
|
|
79
79
|
],
|
|
80
80
|
|
|
81
81
|
async fetch() {
|
|
82
|
+
/*
|
|
83
|
+
fetchChart is defined in shell/mixins. It first checks the URL
|
|
84
|
+
query for an app name and namespace. It uses those values to check
|
|
85
|
+
for a catalog app resource. If found, it sets the form to edit
|
|
86
|
+
mode. If not, it sets the form to create mode.
|
|
87
|
+
|
|
88
|
+
If the app and app namespace are not provided in the query,
|
|
89
|
+
it checks for target name and namespace values defined in the
|
|
90
|
+
Helm chart itself.
|
|
91
|
+
*/
|
|
82
92
|
await this.fetchChart();
|
|
83
93
|
|
|
84
94
|
this.errors = [];
|
|
@@ -93,22 +103,41 @@ export default {
|
|
|
93
103
|
id: 'server-url'
|
|
94
104
|
});
|
|
95
105
|
|
|
106
|
+
/*
|
|
107
|
+
Figure out the namespace where the chart is
|
|
108
|
+
being installed or upgraded.
|
|
109
|
+
*/
|
|
96
110
|
if ( this.existing ) {
|
|
111
|
+
/*
|
|
112
|
+
If the Helm chart is already installed,
|
|
113
|
+
use the existing namespace by default.
|
|
114
|
+
*/
|
|
115
|
+
|
|
97
116
|
this.forceNamespace = this.existing.metadata.namespace;
|
|
98
117
|
this.nameDisabled = true;
|
|
99
118
|
} else if (this.$route.query[FROM_CLUSTER] === _FLAGGED) {
|
|
119
|
+
/* For Fleet, use the fleet-default namespace. */
|
|
100
120
|
this.forceNamespace = DEFAULT_WORKSPACE;
|
|
101
121
|
} else if ( this.chart?.targetNamespace ) {
|
|
122
|
+
/* If a target namespace is defined in the chart,
|
|
123
|
+
set the target namespace as default. */
|
|
102
124
|
this.forceNamespace = this.chart.targetNamespace;
|
|
103
125
|
} else if ( this.query.appNamespace ) {
|
|
126
|
+
/* If a namespace is defined in the URL query,
|
|
127
|
+
use that namespace as default. */
|
|
104
128
|
this.forceNamespace = this.query.appNamespace;
|
|
105
129
|
} else {
|
|
106
130
|
this.forceNamespace = null;
|
|
107
131
|
}
|
|
108
132
|
|
|
133
|
+
/* Check if the app is deprecated. */
|
|
109
134
|
this.legacyApp = this.existing ? await this.existing.deployedAsLegacy() : false;
|
|
135
|
+
|
|
136
|
+
/* Check if the app is a multicluster deprecated app.
|
|
137
|
+
(Multicluster apps were replaced by Fleet.) */
|
|
110
138
|
this.mcapp = this.existing ? await this.existing.deployedAsMultiCluster() : false;
|
|
111
139
|
|
|
140
|
+
/* The form state is intialized as a chartInstallAction resource. */
|
|
112
141
|
this.value = await this.$store.dispatch('cluster/create', {
|
|
113
142
|
type: 'chartInstallAction',
|
|
114
143
|
metadata: {
|
|
@@ -117,8 +146,19 @@ export default {
|
|
|
117
146
|
}
|
|
118
147
|
});
|
|
119
148
|
|
|
149
|
+
/* Logic for when the Helm chart is not already installed */
|
|
120
150
|
if ( !this.existing) {
|
|
151
|
+
/*
|
|
152
|
+
The target name is used for Git repos for Fleet.
|
|
153
|
+
The target name indicates the name of the cluster
|
|
154
|
+
group that the chart is meant to be installed in.
|
|
155
|
+
*/
|
|
121
156
|
if ( this.chart?.targetName ) {
|
|
157
|
+
/*
|
|
158
|
+
Set the name of the chartInstallAction
|
|
159
|
+
to the name of the cluster group
|
|
160
|
+
where the chart should be installed.
|
|
161
|
+
*/
|
|
122
162
|
this.value.metadata.name = this.chart.targetName;
|
|
123
163
|
this.nameDisabled = true;
|
|
124
164
|
} else if ( this.query.appName ) {
|
|
@@ -130,11 +170,21 @@ export default {
|
|
|
130
170
|
if ( this.query.description ) {
|
|
131
171
|
this.customCmdOpts.description = this.query.description;
|
|
132
172
|
}
|
|
133
|
-
}
|
|
173
|
+
} /* End of logic for when chart is already installed */
|
|
134
174
|
|
|
175
|
+
/*
|
|
176
|
+
Logic for what to do if the user is installing
|
|
177
|
+
the Helm chart for the first time and a default
|
|
178
|
+
namespace has been set.
|
|
179
|
+
*/
|
|
135
180
|
if (this.forceNamespace && !this.existing) {
|
|
136
181
|
let ns;
|
|
137
182
|
|
|
183
|
+
/*
|
|
184
|
+
Before moving forward, check to make sure the
|
|
185
|
+
default namespace exists and the logged-in user
|
|
186
|
+
has permission to see it.
|
|
187
|
+
*/
|
|
138
188
|
try {
|
|
139
189
|
ns = await this.$store.dispatch('cluster/find', { type: NAMESPACE, id: this.forceNamespace });
|
|
140
190
|
const project = ns.metadata.annotations?.[PROJECT];
|
|
@@ -145,42 +195,96 @@ export default {
|
|
|
145
195
|
} catch {}
|
|
146
196
|
}
|
|
147
197
|
|
|
198
|
+
/* If no chart by the given app name and namespace
|
|
199
|
+
can be found, or if no version is found, do nothing. */
|
|
148
200
|
if ( !this.chart || !this.query.versionName) {
|
|
149
201
|
return;
|
|
150
202
|
}
|
|
151
203
|
|
|
152
204
|
if ( this.version && process.client ) {
|
|
205
|
+
/*
|
|
206
|
+
Check if the Helm chart has provided the name
|
|
207
|
+
of a Vue component to use for configuring
|
|
208
|
+
chart values. If so, load that component.
|
|
209
|
+
|
|
210
|
+
This will set this.valuesComponent,
|
|
211
|
+
this.componentHasTabs and this.showValuesComponent.
|
|
212
|
+
*/
|
|
153
213
|
await this.loadValuesComponent();
|
|
154
214
|
}
|
|
155
215
|
|
|
216
|
+
/*
|
|
217
|
+
Check if the Helm chart has indicated
|
|
218
|
+
that the user should fill out the chart values
|
|
219
|
+
through a wizard-style workflow. If so, load
|
|
220
|
+
the chart steps.
|
|
221
|
+
*/
|
|
156
222
|
await this.loadChartSteps();
|
|
157
223
|
|
|
224
|
+
/*
|
|
225
|
+
this.loadedVersion will only be true if you select a non-defalut
|
|
226
|
+
option from the "Version" dropdown menu in Apps & Marketplace
|
|
227
|
+
when updating a previously installed app.
|
|
228
|
+
*/
|
|
158
229
|
if ( !this.loadedVersion || this.loadedVersion !== this.version.key ) {
|
|
159
230
|
let userValues;
|
|
160
231
|
|
|
232
|
+
/*
|
|
233
|
+
When you select a version, a new chart is loaded. Then
|
|
234
|
+
Rancher anticipates that you probably want to port all of your
|
|
235
|
+
previously customized, non-default values from the old chart
|
|
236
|
+
version to the new chart version, so it applies the previous
|
|
237
|
+
chart's customization to the new chart values before
|
|
238
|
+
you see the values form on the next page in the workflow.
|
|
239
|
+
*/
|
|
161
240
|
if ( this.loadedVersion ) {
|
|
162
|
-
// If changing charts once the page is loaded, diff from the chart you were
|
|
163
|
-
// previously on to get the actual customization, then apply onto the new chart values.
|
|
164
|
-
|
|
165
241
|
if ( this.showingYaml ) {
|
|
166
242
|
this.applyYamlToValues();
|
|
167
243
|
}
|
|
168
|
-
|
|
244
|
+
/*
|
|
245
|
+
this.loadedVersionValues is taken from versionInfo,
|
|
246
|
+
which contains everything there is to know about a specific
|
|
247
|
+
version of a Helm chart, including all chart values,
|
|
248
|
+
chart metadata, a short app README and a more
|
|
249
|
+
version-specific README called the chart README.
|
|
250
|
+
|
|
251
|
+
Here we assume that any difference between the values in
|
|
252
|
+
two different Helm chart versions is a "user value," or
|
|
253
|
+
a user-selected customization.
|
|
254
|
+
*/
|
|
169
255
|
userValues = diff(this.loadedVersionValues, this.chartValues);
|
|
170
256
|
} else if ( this.existing ) {
|
|
171
|
-
|
|
257
|
+
/* For an already installed app, use the values from the previous install. */
|
|
172
258
|
userValues = clone(this.existing.spec?.values || {});
|
|
173
|
-
// For an existing app, use the values from the previous install
|
|
174
259
|
} else {
|
|
175
|
-
|
|
260
|
+
/* For an new app, start empty. */
|
|
176
261
|
userValues = {};
|
|
177
262
|
}
|
|
178
263
|
|
|
264
|
+
/*
|
|
265
|
+
Remove global values if they are identical to
|
|
266
|
+
the currently available information about the cluster
|
|
267
|
+
and Rancher settings.
|
|
268
|
+
|
|
269
|
+
Immediately before the Helm chart is installed or
|
|
270
|
+
upgraded, the global values are re-added.
|
|
271
|
+
*/
|
|
179
272
|
this.removeGlobalValuesFrom(userValues);
|
|
273
|
+
|
|
274
|
+
/*
|
|
275
|
+
The merge() method is used to merge two or more objects
|
|
276
|
+
starting with the left-most to the right-most to create a
|
|
277
|
+
parent mapping object. When two keys are the same, the
|
|
278
|
+
generated object will have value for the rightmost key.
|
|
279
|
+
In this case, any values in userValues override any
|
|
280
|
+
matching values in versionInfo.
|
|
281
|
+
*/
|
|
180
282
|
this.chartValues = merge(merge({}, this.versionInfo?.values || {}), userValues);
|
|
283
|
+
|
|
284
|
+
/* Serializes an object as a YAML document */
|
|
181
285
|
this.valuesYaml = saferDump(this.chartValues);
|
|
182
286
|
|
|
183
|
-
|
|
287
|
+
/* For YAML diff */
|
|
184
288
|
if ( !this.loadedVersion ) {
|
|
185
289
|
this.originalYamlValues = this.valuesYaml;
|
|
186
290
|
}
|
|
@@ -188,16 +292,18 @@ export default {
|
|
|
188
292
|
this.loadedVersionValues = this.versionInfo?.values || {};
|
|
189
293
|
this.loadedVersion = this.version?.key;
|
|
190
294
|
}
|
|
191
|
-
|
|
295
|
+
/* Check if chart exists and if required values exist */
|
|
192
296
|
this.updateStepOneReady();
|
|
193
297
|
|
|
194
298
|
this.preFormYamlOption = this.valuesComponent || this.hasQuestions ? VALUES_STATE.FORM : VALUES_STATE.YAML;
|
|
195
299
|
|
|
196
|
-
|
|
300
|
+
/* Look for annotation to say this app is a legacy migrated app (we look in either place for now) */
|
|
197
301
|
this.migratedApp = (this.existing?.spec?.chart?.metadata?.annotations?.[CATALOG_ANNOTATIONS.MIGRATED] === 'true');
|
|
198
302
|
},
|
|
199
303
|
|
|
200
304
|
data() {
|
|
305
|
+
/* Helm CLI options that are not persisted on the back end,
|
|
306
|
+
but are used for the final install/upgrade operation. */
|
|
201
307
|
const defaultCmdOpts = {
|
|
202
308
|
cleanupOnFail: false,
|
|
203
309
|
crds: true,
|
|
@@ -511,6 +617,7 @@ export default {
|
|
|
511
617
|
},
|
|
512
618
|
|
|
513
619
|
legacyEnabled() {
|
|
620
|
+
// Check for the legacy feature flag in the settings
|
|
514
621
|
return this.features(LEGACY);
|
|
515
622
|
},
|
|
516
623
|
|
|
@@ -623,8 +730,12 @@ export default {
|
|
|
623
730
|
},
|
|
624
731
|
|
|
625
732
|
async mounted() {
|
|
733
|
+
// Load a Vue component named in the Helm chart
|
|
734
|
+
// for editing values
|
|
626
735
|
await this.loadValuesComponent();
|
|
627
736
|
|
|
737
|
+
// Load Helm chart info used for showing
|
|
738
|
+
// wizard steps
|
|
628
739
|
await this.loadChartSteps();
|
|
629
740
|
|
|
630
741
|
window.scrollTop = 0;
|
|
@@ -650,9 +761,12 @@ export default {
|
|
|
650
761
|
},
|
|
651
762
|
|
|
652
763
|
async loadValuesComponent() {
|
|
653
|
-
// TODO: Remove RELEASE_NAME. This is only in until the component annotation is added to the OPA Gatekeeper chart
|
|
764
|
+
// TODO: Remove RELEASE_NAME. This is only in until the component annotation is added to the OPA Gatekeeper chart.
|
|
765
|
+
|
|
766
|
+
// The const component is a string, for example, 'monitoring'.
|
|
654
767
|
const component = this.version?.annotations?.[CATALOG_ANNOTATIONS.COMPONENT] || this.version?.annotations?.[CATALOG_ANNOTATIONS.RELEASE_NAME];
|
|
655
768
|
|
|
769
|
+
// Load a values component for the UI if it is named in the Helm chart.
|
|
656
770
|
if ( component ) {
|
|
657
771
|
if ( this.$store.getters['catalog/haveComponent'](component) ) {
|
|
658
772
|
this.valuesComponent = this.$store.getters['catalog/importComponent'](component);
|
|
@@ -887,7 +1001,13 @@ export default {
|
|
|
887
1001
|
return { errors: [] };
|
|
888
1002
|
},
|
|
889
1003
|
|
|
1004
|
+
/*
|
|
1005
|
+
actionInput determines what values Rancher finally sends
|
|
1006
|
+
to the backend when installing or upgrading the app. It
|
|
1007
|
+
injects Rancher-specific values into the chart values.
|
|
1008
|
+
*/
|
|
890
1009
|
actionInput(isUpgrade) {
|
|
1010
|
+
/* Default values defined in the Helm chart itself */
|
|
891
1011
|
const fromChart = this.versionInfo?.values || {};
|
|
892
1012
|
|
|
893
1013
|
const errors = [];
|
|
@@ -898,14 +1018,27 @@ export default {
|
|
|
898
1018
|
errors.push(...yamlErrors);
|
|
899
1019
|
}
|
|
900
1020
|
|
|
901
|
-
|
|
1021
|
+
/*
|
|
1022
|
+
Only save the values that differ from the chart's standard values.yaml.
|
|
1023
|
+
chartValues is created by applying the user's customized onto
|
|
1024
|
+
the default chart values.
|
|
1025
|
+
*/
|
|
902
1026
|
const values = diff(fromChart, this.chartValues);
|
|
903
1027
|
|
|
904
|
-
|
|
1028
|
+
/*
|
|
1029
|
+
Refer to the developer docs at docs/developer/helm-chart-apps.md
|
|
1030
|
+
for details on what values are injected and where they come from.
|
|
1031
|
+
*/
|
|
905
1032
|
this.addGlobalValuesTo(values);
|
|
906
1033
|
|
|
907
1034
|
const form = JSON.parse(JSON.stringify(this.value));
|
|
1035
|
+
|
|
1036
|
+
/*
|
|
1037
|
+
Migrated annotations are required to allow a deprecated legacy app to be
|
|
1038
|
+
upgraded.
|
|
1039
|
+
*/
|
|
908
1040
|
const migratedAnnotations = this.migratedApp ? { [CATALOG_ANNOTATIONS.MIGRATED]: 'true' } : {};
|
|
1041
|
+
|
|
909
1042
|
const chart = {
|
|
910
1043
|
chartName: this.chart.chartName,
|
|
911
1044
|
version: this.version?.version || this.query.versionName,
|
|
@@ -923,6 +1056,10 @@ export default {
|
|
|
923
1056
|
chart.resetValues = this.cmdOptions.resetValues;
|
|
924
1057
|
}
|
|
925
1058
|
|
|
1059
|
+
/*
|
|
1060
|
+
Configure Helm CLI options for doing the install or
|
|
1061
|
+
upgrade operation.
|
|
1062
|
+
*/
|
|
926
1063
|
const out = {
|
|
927
1064
|
charts: [chart],
|
|
928
1065
|
noHooks: this.cmdOptions.hooks === false,
|
|
@@ -932,6 +1069,10 @@ export default {
|
|
|
932
1069
|
projectId: this.project,
|
|
933
1070
|
};
|
|
934
1071
|
|
|
1072
|
+
/*
|
|
1073
|
+
Configure Helm CLI options that are specific to
|
|
1074
|
+
installs or specific to upgrades.
|
|
1075
|
+
*/
|
|
935
1076
|
if ( isUpgrade ) {
|
|
936
1077
|
out.force = this.cmdOptions.force === true;
|
|
937
1078
|
out.historyMax = this.cmdOptions.historyMax;
|
|
@@ -943,6 +1084,11 @@ export default {
|
|
|
943
1084
|
|
|
944
1085
|
const more = [];
|
|
945
1086
|
|
|
1087
|
+
/*
|
|
1088
|
+
An example value for auto is ["rancher-monitoring-crd=match"].
|
|
1089
|
+
It is an array of chart names that lets Rancher know of other
|
|
1090
|
+
charts that should be auto-installed at the same time.
|
|
1091
|
+
*/
|
|
946
1092
|
let auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL] || '').split(/\s*,\s*/).filter(x => !!x).reverse();
|
|
947
1093
|
|
|
948
1094
|
for ( const constraint of auto ) {
|
|
@@ -953,6 +1099,33 @@ export default {
|
|
|
953
1099
|
chartVersion: this.version.version,
|
|
954
1100
|
});
|
|
955
1101
|
|
|
1102
|
+
/*
|
|
1103
|
+
An example return value for "provider":
|
|
1104
|
+
[
|
|
1105
|
+
{
|
|
1106
|
+
"name": "rancher-monitoring-crd",
|
|
1107
|
+
"version": "100.1.3+up19.0.3",
|
|
1108
|
+
"description": "Installs the CRDs for rancher-monitoring.",
|
|
1109
|
+
"apiVersion": "v1",
|
|
1110
|
+
"annotations": {
|
|
1111
|
+
"catalog.cattle.io/certified": "rancher",
|
|
1112
|
+
"catalog.cattle.io/hidden": "true",
|
|
1113
|
+
"catalog.cattle.io/namespace": "cattle-monitoring-system",
|
|
1114
|
+
"catalog.cattle.io/release-name": "rancher-monitoring-crd"
|
|
1115
|
+
},
|
|
1116
|
+
"type": "application",
|
|
1117
|
+
"urls": [
|
|
1118
|
+
"https://192.168.0.18:8005/k8s/clusters/c-m-hhpg69fv/v1/catalog.cattle.io.clusterrepos/rancher-charts?chartName=rancher-monitoring-crd&link=chart&version=100.1.3%2Bup19.0.3"
|
|
1119
|
+
],
|
|
1120
|
+
"created": "2022-04-27T10:04:18.343124-07:00",
|
|
1121
|
+
"digest": "ecf07ba23a9cdaa7ffbbb14345d94ea1240b7f3b8e0ce9be4640e3e585c484e2",
|
|
1122
|
+
"key": "cluster/rancher-charts/rancher-monitoring-crd/100.1.3+up19.0.3",
|
|
1123
|
+
"repoType": "cluster",
|
|
1124
|
+
"repoName": "rancher-charts"
|
|
1125
|
+
}
|
|
1126
|
+
]
|
|
1127
|
+
*/
|
|
1128
|
+
|
|
956
1129
|
if ( provider ) {
|
|
957
1130
|
more.push(provider);
|
|
958
1131
|
} else {
|
|
@@ -976,8 +1149,12 @@ export default {
|
|
|
976
1149
|
}
|
|
977
1150
|
}
|
|
978
1151
|
|
|
979
|
-
|
|
980
|
-
|
|
1152
|
+
/*
|
|
1153
|
+
'more' contains the values for the CRD chart, which needs the same
|
|
1154
|
+
global and cattle values as the chart. It could also contain additional
|
|
1155
|
+
charts that may not be CRD charts but are also meant to be installed at
|
|
1156
|
+
the same time.
|
|
1157
|
+
*/
|
|
981
1158
|
for ( const dependency of more ) {
|
|
982
1159
|
out.charts.unshift({
|
|
983
1160
|
chartName: dependency.name,
|
|
@@ -1416,6 +1593,7 @@ export default {
|
|
|
1416
1593
|
border: $padding solid white;
|
|
1417
1594
|
border-radius: calc( 3 * var(--border-radius));
|
|
1418
1595
|
position: relative;
|
|
1596
|
+
margin-bottom: 15px
|
|
1419
1597
|
}
|
|
1420
1598
|
|
|
1421
1599
|
.logo {
|
|
@@ -4,7 +4,7 @@ import SelectIconGrid from '@shell/components/SelectIconGrid';
|
|
|
4
4
|
import { sortBy } from '@shell/utils/sort';
|
|
5
5
|
import { MODE, _EDIT } from '@shell/config/query-params';
|
|
6
6
|
import { authProvidersInfo } from '@shell/utils/auth';
|
|
7
|
-
import Banner from '@
|
|
7
|
+
import { Banner } from '@components/Banner';
|
|
8
8
|
|
|
9
9
|
export default {
|
|
10
10
|
components: { SelectIconGrid, Banner },
|
|
@@ -50,12 +50,8 @@ export default {
|
|
|
50
50
|
</script>
|
|
51
51
|
|
|
52
52
|
<template>
|
|
53
|
-
<div v-if="$fetchState.pending" class="events-loading">
|
|
54
|
-
<i class="icon icon-spin icon-spinner icon-lg" />
|
|
55
|
-
<div v-html="t('generic.loading', {}, true)" />
|
|
56
|
-
</div>
|
|
57
53
|
<SortableTable
|
|
58
|
-
|
|
54
|
+
:loading="$fetchState.pending"
|
|
59
55
|
:rows="events"
|
|
60
56
|
:headers="eventHeaders"
|
|
61
57
|
key-field="id"
|
|
@@ -76,13 +72,3 @@ export default {
|
|
|
76
72
|
</template>
|
|
77
73
|
</SortableTable>
|
|
78
74
|
</template>
|
|
79
|
-
<style lang="scss" scoped>
|
|
80
|
-
.events-loading {
|
|
81
|
-
align-items: center;
|
|
82
|
-
display: flex;
|
|
83
|
-
|
|
84
|
-
> i {
|
|
85
|
-
margin-right: 5px;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
</style>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import Loading from '@shell/components/Loading';
|
|
3
2
|
import DashboardMetrics from '@shell/components/DashboardMetrics';
|
|
4
3
|
import { mapGetters } from 'vuex';
|
|
5
|
-
import {
|
|
4
|
+
import { setPromiseResult } from '@shell/utils/promise';
|
|
6
5
|
import AlertTable from '@shell/components/AlertTable';
|
|
7
|
-
import Banner from '@
|
|
6
|
+
import { Banner } from '@components/Banner';
|
|
8
7
|
import { parseSi, createMemoryValues } from '@shell/utils/units';
|
|
9
8
|
import {
|
|
10
9
|
NAME,
|
|
@@ -12,6 +11,8 @@ import {
|
|
|
12
11
|
STATE,
|
|
13
12
|
} from '@shell/config/table-headers';
|
|
14
13
|
import {
|
|
14
|
+
ENDPOINTS,
|
|
15
|
+
EVENT,
|
|
15
16
|
NAMESPACE,
|
|
16
17
|
INGRESS,
|
|
17
18
|
MANAGEMENT,
|
|
@@ -24,7 +25,6 @@ import {
|
|
|
24
25
|
CATALOG,
|
|
25
26
|
POD,
|
|
26
27
|
} from '@shell/config/types';
|
|
27
|
-
import { findBy } from '@shell/utils/array';
|
|
28
28
|
import { mapPref, CLUSTER_TOOLS_TIP } from '@shell/store/prefs';
|
|
29
29
|
import { haveV1Monitoring, monitoringStatus } from '@shell/utils/monitoring';
|
|
30
30
|
import Tabbed from '@shell/components/Tabbed';
|
|
@@ -62,7 +62,6 @@ export default {
|
|
|
62
62
|
EtcdInfoBanner,
|
|
63
63
|
DashboardMetrics,
|
|
64
64
|
HardwareResourceGauge,
|
|
65
|
-
Loading,
|
|
66
65
|
ResourceSummary,
|
|
67
66
|
Tab,
|
|
68
67
|
Tabbed,
|
|
@@ -75,25 +74,30 @@ export default {
|
|
|
75
74
|
|
|
76
75
|
mixins: [metricPoller],
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
77
|
+
fetch() {
|
|
78
|
+
fetchClusterResources(this.$store, NODE);
|
|
79
|
+
|
|
80
|
+
setPromiseResult(
|
|
81
|
+
allDashboardsExist(this.$store, this.currentCluster.id, [CLUSTER_METRICS_DETAIL_URL, CLUSTER_METRICS_SUMMARY_URL]),
|
|
82
|
+
this,
|
|
83
|
+
'showClusterMetrics',
|
|
84
|
+
`Determine cluster metrics`
|
|
85
|
+
);
|
|
86
|
+
setPromiseResult(
|
|
87
|
+
allDashboardsExist(this.$store, this.currentCluster.id, [K8S_METRICS_DETAIL_URL, K8S_METRICS_SUMMARY_URL]),
|
|
88
|
+
this,
|
|
89
|
+
'showK8sMetrics',
|
|
90
|
+
`Determine k8s metrics`
|
|
91
|
+
);
|
|
92
|
+
setPromiseResult(
|
|
93
|
+
allDashboardsExist(this.$store, this.currentCluster.id, [ETCD_METRICS_DETAIL_URL, ETCD_METRICS_SUMMARY_URL]),
|
|
94
|
+
this,
|
|
95
|
+
'showEtcdMetrics',
|
|
96
|
+
`Determine etcd metrics`
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
if (this.currentCluster.isLocal) {
|
|
100
|
+
this.$store.dispatch('management/findAll', { type: MANAGEMENT.NODE });
|
|
97
101
|
}
|
|
98
102
|
},
|
|
99
103
|
|
|
@@ -110,8 +114,6 @@ export default {
|
|
|
110
114
|
constraints: [],
|
|
111
115
|
events: [],
|
|
112
116
|
nodeMetrics: [],
|
|
113
|
-
nodeTemplates: [],
|
|
114
|
-
nodes: [],
|
|
115
117
|
showClusterMetrics: false,
|
|
116
118
|
showK8sMetrics: false,
|
|
117
119
|
showEtcdMetrics: false,
|
|
@@ -121,14 +123,33 @@ export default {
|
|
|
121
123
|
K8S_METRICS_SUMMARY_URL,
|
|
122
124
|
ETCD_METRICS_DETAIL_URL,
|
|
123
125
|
ETCD_METRICS_SUMMARY_URL,
|
|
124
|
-
clusterCounts
|
|
126
|
+
clusterCounts,
|
|
127
|
+
selectedTab: 'cluster-events',
|
|
125
128
|
};
|
|
126
129
|
},
|
|
127
130
|
|
|
131
|
+
beforeDestroy() {
|
|
132
|
+
// Remove the data and stop watching resources that were fetched in this page
|
|
133
|
+
// Events in particular can lead to change messages having to be processed when we are no longer interested in events
|
|
134
|
+
this.$store.dispatch('cluster/forgetType', EVENT);
|
|
135
|
+
this.$store.dispatch('cluster/forgetType', NODE);
|
|
136
|
+
this.$store.dispatch('cluster/forgetType', ENDPOINTS); // Used by AlertTable to get alerts when v2 monitoring is installed
|
|
137
|
+
this.$store.dispatch('cluster/forgetType', METRIC.NODE);
|
|
138
|
+
this.$store.dispatch('cluster/forgetType', MANAGEMENT.NODE);
|
|
139
|
+
},
|
|
140
|
+
|
|
128
141
|
computed: {
|
|
129
142
|
...mapGetters(['currentCluster']),
|
|
130
143
|
...monitoringStatus(),
|
|
131
144
|
|
|
145
|
+
nodes() {
|
|
146
|
+
return this.$store.getters['cluster/all'](NODE);
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
mgmtNodes() {
|
|
150
|
+
return this.$store.getters['management/all'](MANAGEMENT.CLUSTER);
|
|
151
|
+
},
|
|
152
|
+
|
|
132
153
|
hideClusterToolsTip: mapPref(CLUSTER_TOOLS_TIP),
|
|
133
154
|
|
|
134
155
|
hasV1Monitoring() {
|
|
@@ -239,9 +260,8 @@ export default {
|
|
|
239
260
|
|
|
240
261
|
return acc;
|
|
241
262
|
}, {});
|
|
242
|
-
const managementNodes = this.$store.getters['management/all'](MANAGEMENT.NODE);
|
|
243
263
|
|
|
244
|
-
checkNodes =
|
|
264
|
+
checkNodes = this.mgmtNodes.filter((n) => {
|
|
245
265
|
const nodeName = n.metadata?.labels?.['management.cattle.io/nodename'] || n.id;
|
|
246
266
|
|
|
247
267
|
return !!nodeNames[nodeName];
|
|
@@ -297,8 +317,13 @@ export default {
|
|
|
297
317
|
hasMetricsTabs() {
|
|
298
318
|
return this.showClusterMetrics || this.showK8sMetrics || this.showEtcdMetrics;
|
|
299
319
|
},
|
|
320
|
+
|
|
300
321
|
hasBadge() {
|
|
301
322
|
return !!this.currentCluster?.badge;
|
|
323
|
+
},
|
|
324
|
+
|
|
325
|
+
hasDescription() {
|
|
326
|
+
return !!this.currentCluster?.spec?.description;
|
|
302
327
|
}
|
|
303
328
|
},
|
|
304
329
|
|
|
@@ -328,24 +353,28 @@ export default {
|
|
|
328
353
|
});
|
|
329
354
|
},
|
|
330
355
|
|
|
356
|
+
// Used by metric-poller mixin
|
|
331
357
|
async loadMetrics() {
|
|
332
358
|
this.nodeMetrics = await fetchClusterResources(this.$store, METRIC.NODE, { force: true } );
|
|
333
359
|
},
|
|
334
|
-
|
|
360
|
+
|
|
361
|
+
// Events/Alerts tab changed
|
|
362
|
+
tabChange(neu) {
|
|
363
|
+
this.selectedTab = neu?.selectedName;
|
|
364
|
+
}
|
|
335
365
|
},
|
|
336
366
|
};
|
|
337
367
|
</script>
|
|
338
368
|
|
|
339
369
|
<template>
|
|
340
|
-
<
|
|
341
|
-
<section v-else class="dashboard">
|
|
370
|
+
<section class="dashboard">
|
|
342
371
|
<header>
|
|
343
372
|
<div class="title">
|
|
344
373
|
<h1>
|
|
345
374
|
<t k="clusterIndexPage.header" />
|
|
346
375
|
</h1>
|
|
347
376
|
<div>
|
|
348
|
-
<span v-if="
|
|
377
|
+
<span v-if="hasDescription">{{ currentCluster.spec.description }}</span>
|
|
349
378
|
</div>
|
|
350
379
|
</div>
|
|
351
380
|
</header>
|
|
@@ -415,12 +444,12 @@ export default {
|
|
|
415
444
|
</div>
|
|
416
445
|
|
|
417
446
|
<div class="mt-30">
|
|
418
|
-
<Tabbed>
|
|
447
|
+
<Tabbed @changed="tabChange">
|
|
419
448
|
<Tab name="cluster-events" :label="t('clusterIndexPage.sections.events.label')" :weight="2">
|
|
420
449
|
<EventsTable />
|
|
421
450
|
</Tab>
|
|
422
451
|
<Tab v-if="hasMonitoring" name="cluster-alerts" :label="t('clusterIndexPage.sections.alerts.label')" :weight="1">
|
|
423
|
-
<AlertTable />
|
|
452
|
+
<AlertTable v-if="selectedTab === 'cluster-alerts'" />
|
|
424
453
|
</Tab>
|
|
425
454
|
</Tabbed>
|
|
426
455
|
</div>
|