* spelling: accommodate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: additional

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: address

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: array

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: async

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: attributes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: automatically

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: available

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: awesomeness

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: because

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: behaviour

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bootstrapping

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: calculated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: callback

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: codemirror

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: config

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: configurable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: constraints

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: default

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: deux

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: different

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dissimilar

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ensure

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: evaluate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: example

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: existence

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: falsy

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: getter

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: global

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: grafana

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: image

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: integer

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: manifest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: microservices

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: milli

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mismatch

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: modifier

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: namespace

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: navigation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: nullable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurred

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: package

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: param

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: permissions

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: portion

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: potentially

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: powershell

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: recipient

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: records

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: representation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: request

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: required

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: returns

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: separated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: should

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: software

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: substitute

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: support

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: their

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unknown

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: upfront

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: upgrade

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: useful

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: validator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
This commit is contained in:
Josh Soref 2022-02-11 05:09:54 -05:00 committed by GitHub
parent f0b50f0766
commit 2256ee3acf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 87 additions and 87 deletions

View File

@ -28,7 +28,7 @@
}
}
// FontAwesomness
// FontAwesomeness
$icon-li-width: math.div(30em, 14) !default;
$icon-inverse: #fff !default;

View File

@ -175,7 +175,7 @@ product:
suffix:
percent: "%"
milliCpus: mili CPUs
milliCpus: milli CPUs
cores: Cores
cpus: CPUs
ib: iB
@ -285,7 +285,7 @@ authConfig:
app:
label: Application name
value: 'Anything you like, e.g. My {vendor}'
calllback:
callback:
label: Authorization callback URL
description:
label: Application description
@ -869,7 +869,7 @@ changePassword:
label: Generated Password
newGeneratedPassword: Suggest a password
errors:
missmatchedPassword: Passwords do not match
mismatchedPassword: Passwords do not match
failedToChange: Failed to change password
failedDeleteKey: Failed to delete key
failedDeleteKeys: Failed to delete keys
@ -983,7 +983,7 @@ cluster:
registrationCommand:
label: Registration Command
linuxDetail: Run this command on each of the existing Linux machines you want to register.
windowsDetail: Run this command in Powershell on each of the existing Windows machines you want to register. Windows nodes can only be workers.
windowsDetail: Run this command in PowerShell on each of the existing Windows machines you want to register. Windows nodes can only be workers.
windowsNotReady: The cluster must be up and running with Linux etcd, control plane, and worker nodes before the registration command for adding Windows workers will display.
windowsWarning: Workload pods, including some deployed by Rancher charts, will be scheduled on both Linux and Windows nodes by default. Edit NodeSelector in the chart to direct them to be placed onto a compatible node.
insecure: "Insecure: Select this to skip TLS verification if your server has a self-signed certificate."
@ -1169,7 +1169,7 @@ cluster:
availabilitySet:
label: Availability Set (unmanaged)
dns:
help: A unique DNS label for the public IP adddress.
help: A unique DNS label for the public IP address.
label: DNS Label
environment:
label: Environment
@ -1373,7 +1373,7 @@ cluster:
addOns:
additionalManifest:
title: Additional Manifest
tooltip: 'Additional Kubernetes Manifet YAML to be applied to the cluster on startup.'
tooltip: 'Additional Kubernetes Manifest YAML to be applied to the cluster on startup.'
advanced:
argInfo:
title: Additional Kubelet Args
@ -1660,7 +1660,7 @@ clusterIndexPage:
buttonText: Configure Gatekeeper
disabled: OPA Gatekeeper is not configured.
label: OPA Gatekeeper Constraint Violations
noRows: There are no contraints with violations to show.
noRows: There are no constraints with violations to show.
nodes:
label: Unhealthy Nodes
noRows: There are no unhealthy nodes to show.
@ -2496,10 +2496,10 @@ login:
serverError:
authFailedCreds: "Logging in failed: Check credentials, or your account may not be authorized to log in."
authFailed: "Logging in failed: Your account may not be authorized to log in."
unknown: "An unknown error occured while attempting to login. Please contact your system administrator."
unknown: "An unknown error occurred while attempting to login. Please contact your system administrator."
invalidSamlAttrs: "Invalid saml attributes"
noResponse: "No response received"
error: An error occured logging in. Please try again.
error: An error occurred logging in. Please try again.
clientError: Invalid username or password. Please try again.
useLocal: Use a local user
loginWithProvider: Log in with {provider}
@ -2556,7 +2556,7 @@ monitoring:
tip: 'Adds labels to the ClusterRoles deployed by the Monitoring chart to <a target="_blank" rel="noopener nofollow noreferrer" href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles"> aggregate to the corresponding default k8s admin, edit, and view ClusterRoles.</a>'
alerting:
config:
label: Alert Manager Cofig
label: Alert Manager Config
enable:
label: Deploy Alertmanager
secrets:
@ -3282,7 +3282,7 @@ probe:
port:
label: Check Port
placeholder: e.g. 80
placeholderDuex: e.g. 25
placeholderDeux: e.g. 25
initialDelay:
label: Initial Delay
placeholder: 'Default: 0'
@ -4455,7 +4455,7 @@ validation:
This screen has been updated to reflect the current values on the cluster. Review and reapply the changes you wanted to make, then Save again.
Conflicting {fieldCount, plural, =1 {field} other {fields}}: {fields}
custom:
missing: 'No validtor exists for { validatorName }! Does the validtor exist in custom-validtors? Is the name spelled correctly?'
missing: 'No validator exists for { validatorName }! Does the validator exist in custom-validators? Is the name spelled correctly?'
dns:
doubleHyphen: '"{key}" Cannot contain two or more consecutive hyphens'
hostname:
@ -4535,10 +4535,10 @@ validation:
name:
required: 'Port Rule [{position}] - Name is required.'
nodePort:
requriedInt: 'Port Rule [{position}] - Node Port must be interger values if included.'
requiredInt: 'Port Rule [{position}] - Node Port must be integer values if included.'
port:
required: 'Port Rule [{position}] - Port is required.'
requriedInt: 'Port Rule [{position}] - Port must be interger values if included.'
requiredInt: 'Port Rule [{position}] - Port must be integer values if included.'
targetPort:
between: 'Port Rule [{position}] - Target Port must be between 1 and 65535'
iana: 'Port Rule [{position}] - Target Port must be an IANA Service Name or Integer'
@ -5740,7 +5740,7 @@ typeDescription:
cis.cattle.io.clusterscanprofile: A profile is the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark.
cis.cattle.io.clusterscan: A scan is created to trigger a CIS scan on the cluster based on the defined profile. A report is created after the scan is completed.
cis.cattle.io.clusterscanreport: A report is the result of a CIS scan of the cluster.
management.cattle.io.feature: Feature Flags allow certain {vendor} features to be toggled on and off. Features that are off by default shoud be considered experimental functionality.
management.cattle.io.feature: Feature Flags allow certain {vendor} features to be toggled on and off. Features that are off by default should be considered experimental functionality.
cluster.x-k8s.io.machine: A Machine encapsulates the configuration of a Kubernetes Node. Use this view to see what happens after updating a cluster.
cluster.x-k8s.io.machinedeployment: A Machine Deployment orchestrates deployments via templates over a collection of Machine Sets (similar to a Deployment). Use this view to see what happens after updating a cluster.
cluster.x-k8s.io.machineset: A Machine Set ensures the desired number of Machine resources are up and running at all times (similar to a ReplicaSet). Use this view to see what happens after updating a cluster.
@ -5759,7 +5759,7 @@ typeDescription:
catalog.cattle.io.app: An installed application is a Helm 3 chart that was installed either via our charts or through the Helm CLI.
logging.banzaicloud.io.clusterflow: Logs from the cluster will be collected and logged to the selected Cluster Output.
logging.banzaicloud.io.clusteroutput: A cluster output defines which logging providers that logs can be sent to and is only effective when deployed in the namespace that the logging operator is in.
logging.banzaicloud.io.flow: A flow defines which logs to collect and filter as well as which output to send the logs. The flow is a namespaced resource, which means logs will only be collected from the namepsace that the flow is deployed in.
logging.banzaicloud.io.flow: A flow defines which logs to collect and filter as well as which output to send the logs. The flow is a namespaced resource, which means logs will only be collected from the namespace that the flow is deployed in.
logging.banzaicloud.io.output: An output defines which logging providers that logs can be sent to. The output needs to be in the same namespace as the flow that is using it.
group.principal: Assigning global roles to a group only works with external auth providers that support groups. Local authorization does not support groups.
@ -6177,7 +6177,7 @@ featureFlags:
label: Feature Flags
warning: |-
Feature flags allow {vendor} to gate certain features behind flags.
Features that are off by defult shoud be considered experimental functionality.
Features that are off by default should be considered experimental functionality.
Some features require a restart of the {vendor} server to change.
This will result in a short outage of the API and UI, but not affect running clusters or workloads.
promptActivate: Please confirm that you want to activate the feature flag "{flag}"
@ -6258,7 +6258,7 @@ resourceQuota:
projectLimit: Project Limit
projectResourceAvailability: Project Resource Availability
resourceType: Resource Type
helpText: Configure how much of the resources the namesapce as a whole can consume.
helpText: Configure how much of the resources the namespace as a whole can consume.
helpTextDetail: The amount of resources the namespace as a whole can consume.
configMaps: Config Maps
limitsCpu: CPU Limit

View File

@ -179,7 +179,7 @@ product:
suffix:
percent: "%"
milliCpus: mili CPU
milliCpus: milli CPU
cores: 核心
cpus: CPU
ib: iB
@ -289,7 +289,7 @@ authConfig:
app:
label: 应用名称
value: '输入一个应用名称,例如:我的 {vendor}'
calllback:
callback:
label: 授权回调 URL
description:
label: 应用描述
@ -880,7 +880,7 @@ changePassword:
label: 生成的密码
newGeneratedPassword: 推荐密码
errors:
missmatchedPassword: 前后两次输入的密码不匹配
mismatchedPassword: 前后两次输入的密码不匹配
failedToChange: 无法修改密码
failedDeleteKey: 无法删除单个 API 密钥
failedDeleteKeys: 无法删除多个 API 密钥
@ -994,7 +994,7 @@ cluster:
registrationCommand:
label: 注册命令
linuxDetail: 在每台要注册的 Linux 机器上运行此命令。
windowsDetail: 在每台要注册的 Windows 机器中的 Powershell 上运行此命令。Windows 节点只能充当 worker。
windowsDetail: 在每台要注册的 Windows 机器中的 PowerShell 上运行此命令。Windows 节点只能充当 worker。
windowsNotReady: 在用于添加 Windows worker 的注册命令显示之前,集群必须已启动并运行 Linux ETCDControl Plane以及 worker 节点。
windowsWarning: 工作负载 Pod包括由 Rancher Chart 部署的 Pod将默认调度到 Linux 和 Windows 节点上。编辑 Chart 中的 NodeSelector 以将它们放置到兼容的节点上。
insecure: "不安全:如果你的服务器具有自签名证书,选择此项以跳过 TLS 验证。"
@ -3280,7 +3280,7 @@ probe:
port:
label: 检查端口
placeholder: 例如80
placeholderDuex: 例如25
placeholderDeux: 例如25
initialDelay:
label: 初始延迟
placeholder: '默认值0'
@ -4557,10 +4557,10 @@ validation:
name:
required: '端口规则 [{position}] - 端口名称是必填项。'
nodePort:
requriedInt: '端口规则 [{position}] - 如果包含节点端口,节点端口必须是整数。'
requiredInt: '端口规则 [{position}] - 如果包含节点端口,节点端口必须是整数。'
port:
required: '端口规则 [{position}] - 端口是必填项,'
requriedInt: '端口规则 [{position}] - 如果包含端口,端口必须是整数。'
requiredInt: '端口规则 [{position}] - 如果包含端口,端口必须是整数。'
targetPort:
between: '端口规则 [{position}] - 目标端口的取值范围是1-65535'
iana: '端口规则 [{position}] - 目标端口必须是 IANA 服务名称或整数'

View File

@ -112,8 +112,8 @@ export default {
},
watch: {
// This method is not that disimilar to persistentStorageType in Grafan config
// The reason for the divergence is that Grafna has a subkey on the chart
// This method is not that dissimilar to persistentStorageType in Grafana config
// The reason for the divergence is that Grafana has a subkey on the chart
// where these keys are at the root of the chart. Vue complains about calling
// this.$set(this, 'value', obj) as we need to do here to reset the values in bulk.
// So rather than call each set on each line individually I give you this.

View File

@ -12,7 +12,7 @@ const WINDOW_MANAGER = 'windowmanager';
// Pages that we should intercept when loaded in the IFRAME and instead
// navigate to a page in Cluster Dashboard
// exmample if the Ember clusters page that is navigated to when the user presses cancel on some pages
// example if the Ember clusters page that is navigated to when the user presses cancel on some pages
// we intercept this and go the the vue Clusters page instead
const INTERCEPTS = {
'global-admin.clusters.index': {
@ -220,7 +220,7 @@ export default {
this.loaded = false;
this.emberCheck = this.$axios.CancelToken.source();
// Make a head requst to a known asset of the Ember UI
// Make a head request to a known asset of the Ember UI
const pageUrl = `${ window.location.origin }/assets/images/logos/rke.svg`;
const response = await this.$axios.head(pageUrl, {
timeout: PAGE_CHECK_TIMEOUT,

View File

@ -77,7 +77,7 @@ export default {
let name = r[`${ this.direction }Id`];
// Skip things like toType/toNamspace+selector for now
// Skip things like toType/toNamespace+selector for now
if ( !name ) {
continue;
}

View File

@ -56,7 +56,7 @@ export const getters = {
}
// Go through all the selected items and add the actions (which were already identified above)
// as availalable for some (or all) of the selected nodes
// as available for some (or all) of the selected nodes
for ( const node of selected ) {
if (node.availableActions) {
for ( const act of node.availableActions ) {

View File

@ -8,7 +8,7 @@ import GraphCircle from '@/components/graph/Circle';
import Banner from '@/components/Banner';
export default {
name: 'SuppportBundle',
name: 'SupportBundle',
components: {
LabeledInput,

View File

@ -179,7 +179,7 @@ export default {
passwordsMatch() {
const match = this.passwordNew === this.passwordConfirm;
this.errorMessages = this.passwordConfirmBlurred && !match ? [this.t('changePassword.errors.missmatchedPassword')] : [];
this.errorMessages = this.passwordConfirmBlurred && !match ? [this.t('changePassword.errors.mismatchedPassword')] : [];
return match;
},
@ -194,7 +194,7 @@ export default {
}
if (this.isRandomGenerated) {
// If we're not changing current user... and password is randomly generated... there'll be no new/confirm missmatch
// If we're not changing current user... and password is randomly generated... there'll be no new/confirm mismatch
return true;
}
@ -214,7 +214,7 @@ export default {
const isValid = this.isValid();
if (isValid) {
// Covers the case where we don't re-evaludate the error messages (don't need to at the time)
// Covers the case where we don't re-evaluate the error messages (don't need to at the time)
this.errorMessages = [];
}

View File

@ -153,7 +153,7 @@ export default {
},
// For asMap=false, preserve (copy) these keys from the original value into the emitted value.
// Also usefule for valueFrom as above.
// Also useful for valueFrom as above.
preserveKeys: {
type: Array,
default: null,

View File

@ -191,7 +191,7 @@ export default {
max="65535"
:mode="mode"
:label="t('probe.httpGet.port.label')"
:placeholder="t('probe.httpGet.port.placeholderDuex')"
:placeholder="t('probe.httpGet.port.placeholderDeux')"
/>
<div class="spacer-small" />
</div>

View File

@ -393,7 +393,7 @@ export default {
privateField = 'password';
break;
default:
throw new Error('Uknown type');
throw new Error('Unknown type');
}
secret._type = type;

View File

@ -11,7 +11,7 @@ export default {
}
},
/*
userValue is a string respresentation of args array, with spaces between each array item and single quotes around any items with whitespace
userValue is a string representation of args array, with spaces between each array item and single quotes around any items with whitespace
value input of ["-c", "sleep 600"]
is displayed as: "-c 'sleep 600'"

View File

@ -8,7 +8,7 @@ export default {
props: {
// Convert output to string
// Output will also be a string regardless of this prop if outputModifer = true
// Output will also be a string regardless of this prop if outputModifier = true
outputAs: {
type: String,
default: 'number',

View File

@ -104,7 +104,7 @@ export default {
// If the drop down content appears outside of the window then move it to be above the trigger
// Do this is three steps
// expanded: false & expanded-checked = false - Content does not appear in DOM
// expanded: true & expanded-checked = false - Content appears in DOM (so it's location can be calcualated to be in or out of an area) but isn't visible (user doesn't see content blip from below to above trigger)
// expanded: true & expanded-checked = false - Content appears in DOM (so it's location can be calculated to be in or out of an area) but isn't visible (user doesn't see content blip from below to above trigger)
// expanded: true & expanded-checked = true - Content appears in DOM and is visible (it's final location is known so user can see)
setTimeout(() => { // There be beasts without this (classes don't get applied... so drop down never gets shown)
const dropdown = document.getElementById(this.id);
@ -115,7 +115,7 @@ export default {
return;
}
// Ensire drop down will be inside of the window, otherwise show above the trigger
// Ensure drop down will be inside of the window, otherwise show above the trigger
const bounding = dropdown.getBoundingClientRect();
const insideWindow = this.insideBounds(bounding, {
top: 0,

View File

@ -166,7 +166,7 @@ export default {
},
methods: {
// Cluster list number of items shown is configurbale via user preference
// Cluster list number of items shown is configurable via user preference
setClusterListHeight(maxToShow) {
const el = this.$refs.clusterList;
const max = Math.min(maxToShow, this.clusters.length);

View File

@ -91,7 +91,7 @@ export function init(store) {
},
{
name: 'releaseNamespace',
label: 'Tgt Namepsace',
label: 'Tgt Namespace',
sort: 'status.namespace',
value: 'status.namespace',
labelKey: 'catalog.operation.tableHeaders.releaseNamespace',

View File

@ -315,7 +315,7 @@ export function init(store) {
delimiter: { type: 'string' },
delimiter_pattern: { type: 'string' },
label_delimiter: { type: 'string' },
multiline: { type: 'arrray[string]' },
multiline: { type: 'array[string]' },
patterns: { type: `array[${ LOGGING.SPOOFED.SINGLEPARSESECTION }]` },
tracing_annotation_prefix: { type: 'string' },
source_host_key_name: { type: 'string' },

View File

@ -1,5 +1,5 @@
// --------------------------------------
// 1. Provided by Steve and always potentialy available
// 1. Provided by Steve and always potentially available
// --------------------------------------
// Steve-specific virtual types

View File

@ -13,7 +13,7 @@ declare global {
}
// TODO handle redirection errors better?
// we see a lot of 'error nagivation cancelled' uncaught exceptions that don't actually break anything; ignore them here
// we see a lot of 'error navigation cancelled' uncaught exceptions that don't actually break anything; ignore them here
Cypress.on('uncaught:exception', (err, runnable) => {
// returning false here prevents Cypress from failing the test
if (err.message.includes('navigation guard')) {

View File

@ -27,7 +27,7 @@ export default {
this.canSeeRoleTemplates = !!this.$store.getters[`management/canList`](MANAGEMENT.ROLE_TEMPLATE);
if (this.canSeeRoleTemplates) {
// Upfront fetch, avoid aysnc computes
// Upfront fetch, avoid async computes
await Promise.all([
await this.$store.dispatch('rancher/find', { type: NORMAN.USER, id: this.value.id }),
await this.$store.dispatch('management/findAll', { type: MANAGEMENT.ROLE_TEMPLATE }),
@ -160,7 +160,7 @@ export default {
return out;
} catch (e) {
// Swallow the error. It's probably due to the user not having the correct permissions to read global roles
console.error('Failed to fetch gobal role bindings: ', e); // eslint-disable-line no-console
console.error('Failed to fetch global role bindings: ', e); // eslint-disable-line no-console
}
},
@ -168,7 +168,7 @@ export default {
const templateBindings = this.$store.getters['management/all'](MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING);
const userTemplateBindings = templateBindings.filter(binding => binding.userName === userId);
// Upront load clusters
// Upfront load clusters
userTemplateBindings.map(b => this.$store.dispatch('management/find', { type: MANAGEMENT.CLUSTER, id: b.clusterName }));
return userTemplateBindings;
@ -184,7 +184,7 @@ export default {
return userTemplateBindings;
},
// Global Permisions Helpers (brought over from ember)
// Global Permissions Helpers (brought over from ember)
hasPermission(globalRoleRules, permission) {
return globalRoleRules.find((gRule) => {
return ((gRule.apiGroups || []).includes('*') || (gRule.apiGroups || []).includes(permission.apiGroup)) &&

View File

@ -40,7 +40,7 @@ To gain familiarity with building and running container images, it may help to g
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
While it is possible to build a Kubernetes cluster on a single node managing a simple software application, that is not really what Kubernetes is intended for. Kubernetes is a complex solution intended to solve complex problems, and it is recommended for users who are running sofware applications that consist of at least twelve to fourteen microservices. When we say microservcices, we mean that the software is so complex that it needed to be divided into multiple independent parts that run in separate containers. If your software application can run in a single container, you probably don't need Kubernetes because it would be easier to manage it manually than to introduce the full complexity of Kubernetes to manage that container.
While it is possible to build a Kubernetes cluster on a single node managing a simple software application, that is not really what Kubernetes is intended for. Kubernetes is a complex solution intended to solve complex problems, and it is recommended for users who are running software applications that consist of at least twelve to fourteen microservices. When we say microservices, we mean that the software is so complex that it needed to be divided into multiple independent parts that run in separate containers. If your software application can run in a single container, you probably don't need Kubernetes because it would be easier to manage it manually than to introduce the full complexity of Kubernetes to manage that container.
Kubernetes is too complex to document it all here, but a good starting point would be to go through the tutorials in the official [Kubernetes documentation.](https://kubernetes.io/docs/tutorials/) Minikube and K3d are examples of tools that let you play with Kubernetes in a sandbox environment for development and testing purposes.

View File

@ -80,7 +80,7 @@ See the [Running For Development](../../../README.md#running-for-development) se
### Debugging the Dashboard
#### SSR vs SPA
It's important to understand the difference between SSR and SPA modes described in the [Server-Side-Rendering (SSR)](../../../README.md#server-side-rendering-ssr) section. When running in the default SSR mode you will not be able to step through some methods such as Vue component's `async fetch`. It is therefore advised to switch to SPA mode before attempting to step through the code (see linked guide.. either start with `--spa` or load page with url parm `?spa` / `&spa`).
It's important to understand the difference between SSR and SPA modes described in the [Server-Side-Rendering (SSR)](../../../README.md#server-side-rendering-ssr) section. When running in the default SSR mode you will not be able to step through some methods such as Vue component's `async fetch`. It is therefore advised to switch to SPA mode before attempting to step through the code (see linked guide.. either start with `--spa` or load page with url param `?spa` / `&spa`).
SSR adds additional complexity for the store and some component functions. More on this can be found in the `Resource` section of Development guide.

View File

@ -85,4 +85,4 @@ But normally you want to make a request using a Cloud Credential as the authoriz
If you have several different API calls to make or expensive information that can be cached after it's retrieved once, consider making a `store` with getters and actions to handle making your API calls and managing the caching. Most of the standard built-in drivers have these.
For more complicated providers (e.g. AWS) you can also consider importing their Javascript SDK and using their client to make calls. But unless there is an extension point to manipulate the request before they send it, you'll probably have to monkey patch their client to get the `X-Api-CattleAuth-Header` injected and the reqeust sent through the proxy instead of direct to them. The SDK should also be dynamically `import('…')`ed as needed at runtime so it's not loaded all the time. Regular `import … as …;` at the top of the file will become part of the basic app bundle js that's always loaded and has to be downloaded before the page can render. `store/aws.js` has examples of all of this.
For more complicated providers (e.g. AWS) you can also consider importing their Javascript SDK and using their client to make calls. But unless there is an extension point to manipulate the request before they send it, you'll probably have to monkey patch their client to get the `X-Api-CattleAuth-Header` injected and the request sent through the proxy instead of direct to them. The SDK should also be dynamically `import('…')`ed as needed at runtime so it's not loaded all the time. Regular `import … as …;` at the top of the file will become part of the basic app bundle js that's always loaded and has to be downloaded before the page can render. `store/aws.js` has examples of all of this.

View File

@ -185,7 +185,7 @@ export default {
<li><b>{{ t(`authConfig.${NAME}.form.app.label`) }}</b>: <span v-html="t(`authConfig.${NAME}.form.app.value`, tArgs, true)" /></li>
<li><b>{{ t(`authConfig.${NAME}.form.homepage.label`) }}</b>: {{ serverUrl }} <CopyToClipboard label-as="tooltip" :text="serverUrl" class="icon-btn" action-color="bg-transparent" /></li>
<li><b>{{ t(`authConfig.${NAME}.form.description.label`) }}</b>: <span v-html="t(`authConfig.${NAME}.form.description.value`, tArgs, true)" /></li>
<li><b>{{ t(`authConfig.${NAME}.form.calllback.label`) }}</b>: {{ serverUrl }} <CopyToClipboard :text="serverUrl" label-as="tooltip" class="icon-btn" action-color="bg-transparent" /></li>
<li><b>{{ t(`authConfig.${NAME}.form.callback.label`) }}</b>: {{ serverUrl }} <CopyToClipboard :text="serverUrl" label-as="tooltip" class="icon-btn" action-color="bg-transparent" /></li>
</ul>
</li>
</ul>

View File

@ -66,7 +66,7 @@ export default {
const expectedCurrentDefault = neu ? DEFAULT_NON_TLS_PORT : DEFAULT_TLS_PORT;
const newDefault = neu ? DEFAULT_TLS_PORT : DEFAULT_NON_TLS_PORT;
// Note: The defualt port value is a number
// Note: The default port value is a number
// If the user edits this value, the type will be a string
// Thus, we will only change the value when the user toggles the TLS flag if they have
// NOT edited the port value in any way

View File

@ -41,7 +41,7 @@ export default {
<LabeledSelect
:label="t('gatekeeperConstraint.tab.namespaces.sub.scope.title')"
:hover-tooltip="true"
tooltip="Determines if cluster-scoped and/or namesapced-scoped resources are selected."
tooltip="Determines if cluster-scoped and/or namespaced-scoped resources are selected."
:value="value"
:mode="mode"
:options="SCOPE_OPTIONS"

View File

@ -35,7 +35,7 @@ export default {
</div>
<div class="row mb-20">
<div class="col span-6">
<LabeledInput v-model="value.to" :mode="mode" label="Default Recepient Address" placeholder="e.g. admin@example.com" />
<LabeledInput v-model="value.to" :mode="mode" label="Default Recipient Address" placeholder="e.g. admin@example.com" />
</div>
<div class="col span-6">
<Checkbox v-model="value.send_resolved" :mode="mode" class="mt-20" label="Enable send resolved alerts" />

View File

@ -5,7 +5,7 @@ import { mapGetters } from 'vuex';
export default {
components: { LabeledInput },
props: {
// volumeAttribtutes object
// volumeAttributes object
value: {
type: Object,
default: () => {

View File

@ -6,7 +6,7 @@ import { mapGetters } from 'vuex';
export default {
components: { LabeledInput, RadioGroup },
props: {
// volumeAttribtutes object
// volumeAttributes object
value: {
type: Object,
default: () => {

View File

@ -68,7 +68,7 @@ export default class CatalogApp extends SteveModel {
// object = version available to upgrade to
if ( this.spec?.chart?.metadata?.annotations?.[FLEET.BUNDLE_ID] ) {
// Things managed by fleet shouldn't show ugrade available even if there might be.
// Things managed by fleet shouldn't show upgrade available even if there might be.
return false;
}

View File

@ -11,7 +11,7 @@ import SteveModel from '@/plugins/steve/steve-class';
import Vue from 'vue';
const OBSCURE_NAMESPACE_PREFIX = [
'c-', // cluster namesapce
'c-', // cluster namespace
'p-', // project namespace
'user-', // user namespace
'local', // local namespace

View File

@ -15,7 +15,7 @@ export default class extends SteveModel {
const constraints = this.constraints;
if ( constraints.length > 0 ) {
return `There are still constaints using this template. You cannot delete this template while it's in use.`;
return `There are still constraints using this template. You cannot delete this template while it's in use.`;
}
return null;

View File

@ -170,7 +170,7 @@ module.exports = {
}
}
// And substitue our own
// And substitute our own
config.module.rules.unshift({
test: /\.(png|jpe?g|gif|svg|webp)$/,
use: [

View File

@ -12,7 +12,7 @@ export default {
async fetch() {
if ( this.$store.getters['management/schemaFor'](SECRET) ) {
// Having secrets allows showing the public poirtion of more types but not all users can see them.
// Having secrets allows showing the public portion of more types but not all users can see them.
await this.$store.dispatch('management/findAll', { type: SECRET });
}

View File

@ -1,4 +1,4 @@
import jsyaml from 'js-yaml';
// Codemirrror yaml plugin expects to find it in window/globals.
// CodeMirror yaml plugin expects to find it in window/globals.
window.jsyaml = jsyaml;

View File

@ -362,10 +362,10 @@ export default {
// opt:
// filter: Filter by fields, e.g. {field: value, anotherField: anotherValue} (default: none)
// limit: Number of reqords to return per page (default: 1000)
// limit: Number of records to return per page (default: 1000)
// sortBy: Sort by field
// sortOrder: asc or desc
// url: Use this specific URL instead of looking up the URL for the type/id. This should only be used for bootstraping schemas on startup.
// url: Use this specific URL instead of looking up the URL for the type/id. This should only be used for bootstrapping schemas on startup.
// @TODO depaginate: If the response is paginated, retrieve all the pages. (default: true)
async find(ctx, { type, id, opt }) {
const { getters, dispatch } = ctx;

View File

@ -286,15 +286,15 @@ export default class Resource {
get customValidationRules() {
return [
/**
* Essentially a fake schema object with additonal params to extend validation
* Essentially a fake schema object with additional params to extend validation
*
* @param {nullable} Value is nullabel
* @param {nullable} Value is nullable
* @param {path} Path on the resource to the value to validate
* @param {required} Value required
* @param {requiredIf} Value required if value at path not empty
* @param {translationKey} Human readable display key for param in path e.g. metadata.name === Name
* @param {type} Type of field to validate
* @param {validators} array of strings where item is name of exported validator function in custom-validtors, args can be passed by prepending args seperated by colon. e.g maxLength:63
* @param {validators} array of strings where item is name of exported validator function in custom-validators, args can be passed by prepending args separated by colon. e.g maxLength:63
*/
/* {
nullable: false,

View File

@ -163,7 +163,7 @@ export const actions = {
// Group loads into one loadMulti when possible
toLoad.push(body);
} else {
// When we hit a differet kind of event, process all the previous loads, then the other event.
// When we hit a different kind of event, process all the previous loads, then the other event.
if ( toLoad.length ) {
await dispatch('loadMulti', toLoad);
toLoad = [];

View File

@ -1,6 +1,6 @@
#!/usr/bin/env node
// This script will add or remove the extra dependencies require for Storybook to the pacjage.json file
// This script will add or remove the extra dependencies require for Storybook to the package.json file
// It will perform a `yarn install` if the package.json file was updated
// Storybook adds a bit of weight to the yarn install process, so we only do it if we are using Storybook

View File

@ -20,7 +20,7 @@ import { NAME as VIRTUAL } from '@/config/product/harvester';
import { BACK_TO } from '@/config/local-storage';
// Disables strict mode for all store instances to prevent warning about changing state outside of mutations
// becaues it's more efficient to do that sometimes.
// because it's more efficient to do that sometimes.
export const strict = false;
export const BLANK_CLUSTER = '_';

View File

@ -106,7 +106,7 @@ const driverToCloudProviderMap = {
harvester: 'harvester',
};
// Dynamically loaded drivers can call this eventually to register thier options
// Dynamically loaded drivers can call this eventually to register their options
export function configureCredential(name, opt) {
credentialOptions[name] = opt;
}

View File

@ -52,7 +52,7 @@
// spoofedType(obj) Create a fake type that can be treated like a normal type
//
// basicType( Mark type(s) as always shown in the top of the nav
// type(s), -- Type name or arrry of type names
// type(s), -- Type name or array of type names
// group -- Group to show the type(s) under; false-y for top-level.
// )
// basicType( Mark all types in group as always shown in the top of the nav
@ -544,7 +544,7 @@ export const getters = {
const labelDisplay = highlightLabel(label, icon);
if ( !labelDisplay ) {
// Search happens in highlight and retuns null if not found
// Search happens in highlight and returns null if not found
continue;
}
@ -955,7 +955,7 @@ export const getters = {
// Note: you can't refactor these into one function that does `@/${kind}/${type}`,
// because babel needs some hardcoded idea where to look for the dependency.
//
// Note 2: Yes these are editing state in a gettter for caching... it's ok, probably.
// Note 2: Yes these are editing state in a getter for caching... it's ok, probably.
// ------------------------------------
hasCustomList(state, getters) {
return (rawType) => {
@ -1366,7 +1366,7 @@ export const mutations = {
// setGroupDefaultType({group: 'core', defaultType: 'name'});
// By default when a group is clicked, the first item is selected - this allows
// this behvaiour to be changed and a named child type can be chosen
// this behaviour to be changed and a named child type can be chosen
// These operate on group names *after* mapping but *before* translation
setGroupDefaultType(state, { group, groups, defaultType }) {
if ( !groups ) {
@ -1690,7 +1690,7 @@ export function project(getters) {
return project;
}
// Convert the project namespaces into a map so we can check existtence easily
// Convert the project namespaces into a map so we can check existence easily
const prjNamespaceMap = project.namespaces.reduce((m, ns) => {
m[ns.metadata.name] = true;

View File

@ -7,7 +7,7 @@ If you run any of the targets:
- yarn storybook
- yarn build-storybook
the dependencies will be added to the `package.json` file and updated automactically.
the dependencies will be added to the `package.json` file and updated automatically.
You can manually install them with the target:

View File

@ -145,7 +145,7 @@ test('filterBy', (t) => {
t.deepEqual(out, [obj3], 'Finds items with string truthiness');
out = filterBy(ary, 'bar', false);
t.deepEqual(out, [obj2], 'Finds items with falsey values');
t.deepEqual(out, [obj2], 'Finds items with falsy values');
out = filterBy(ary, 'foo', 'bar');
t.deepEqual(out, [obj1], 'Finds items with string values');
@ -175,7 +175,7 @@ test('findBy', (t) => {
t.is(out, obj3, 'Finds items with string truthiness');
out = findBy(ary, 'bar', false);
t.is(out, obj2, 'Finds items with falsey values');
t.is(out, obj2, 'Finds items with falsy values');
out = findBy(ary, 'foo', 'bar');
t.is(out, obj1, 'Finds items with string values');

View File

@ -81,7 +81,7 @@ export function createYaml(schemas, type, data, processAlwaysAdd = true, depth =
if ( depth === 0 ) {
const attr = schema.attributes || {};
// Default to data.apiVersion/kind to accomadate spoofed types that aggregate multiple types
// Default to data.apiVersion/kind to accommodate spoofed types that aggregate multiple types
data.apiVersion = (attr.group ? `${ attr.group }/${ attr.version }` : attr.version) || data.apiVersion;
data.kind = attr.kind || data.kind;
}

View File

@ -66,7 +66,7 @@ export async function haveV1MonitoringWorkloads(store) {
// Other ways we check for monitoring:
// (1) Using counts (requires RBAC permissinons)
// (1) Using counts (requires RBAC permissions)
// return !!this.clusterCounts?.[0]?.counts?.[CATALOG.APP]?.namespaces?.['cattle-monitoring-system'];
// (2) Retrieving all workloads and looking for containers with a given image

View File

@ -125,7 +125,7 @@ export function vmDisks(spec, getters, errors, validatorArgs, displayKey, value)
const { type, typeValue } = getVolumeType(V, _volumeClaimTemplates);
const prefix = V.name || idx + 1;
if (type === SOURCE_TYPE.IMAGE || type === SOURCE_TYPE.ATTACH_VOLUME) { // root iamge
if (type === SOURCE_TYPE.IMAGE || type === SOURCE_TYPE.ATTACH_VOLUME) { // root image
// const message = getters['i18n/t']('harvester.validation.vm.volume.needImageOrExisting');
hasImageVolumeOrExistingVolume = true;
// errors.push(message);