ui/lib/shared/addon/utils/constants.js

1036 lines
27 KiB
JavaScript

const KIND_USER = 'user'; const KIND_CATALOG = 'catalog';
const KIND_SYSTEM = 'system';
const KIND_SYSTEM_CATALOG = 'system-catalog';
const KIND_LEGACY_KUBERNETES = 'kubernetes';
const KIND_KUBERNETES = 'k8s';
const KIND_INFRA = 'infra';
const KIND_NOT_ORCHESTRATION = 'cattle';
var C = {
CATALOG: {
LIBRARY_KEY: 'library',
LIBRARY_VALUE: 'https://git.rancher.io/charts',
SYSTEM_LIBRARY_KEY: 'system-library',
SYSTEM_LIBRARY_VALUE: 'https://git.rancher.io/system-charts',
HELM_STABLE_KEY: 'helm',
HELM_STABLE_VALUE: 'https://kubernetes-charts.storage.googleapis.com/',
HELM_INCUBATOR_KEY: 'helm-incubator',
HELM_INCUBATOR_VALUE: 'https://kubernetes-charts-incubator.storage.googleapis.com/',
HELM_3_LIBRARY_KEY: 'helm3-library',
HELM_3_LIBRARY_VALUE: 'https://git.rancher.io/helm3-charts',
HELM_VERSION_2: 'rancher-helm',
HELM_VERSION_3: 'helm_v3',
HELM_VERSION_3_SHORT: 'v3',
ALIBABA_APP_HUB_KEY: 'alibaba-app-hub',
ALIBABA_APP_HUB_VALUE: 'https://apphub.aliyuncs.com',
DEFAULT_BRANCH: 'master',
LIBRARY_BRANCH: 'v2.0-development', // @TODO-2.0 '${RELEASE}',
COMMUNITY_BRANCH: 'v2.0-development', // @TODO-2.0 '${RELEASE}',
},
COOKIE: {
TOKEN: 'token',
CSRF: 'CSRF',
LANG: 'LANG',
USERNAME: 'R_USERNAME',
ACTIVEDIRECTORY_USERNAME: 'ACTIVEDIRECTORY_USERNAME',
REDIRECTED: 'R_REDIRECTED',
THEME: 'R_THEME',
},
EXTERNAL_ID: {
KIND_SEPARATOR: '://',
GROUP_SEPARATOR: ':',
BASE_SEPARATOR: '*',
ID_SEPARATOR: ':',
KIND_ALL: 'containers',
KIND_USER,
KIND_CATALOG,
KIND_SYSTEM,
KIND_SYSTEM_CATALOG,
KIND_LEGACY_KUBERNETES,
KIND_KUBERNETES,
KIND_INFRA,
KIND_NOT_ORCHESTRATION,
KIND_ORCHESTRATION: [
KIND_KUBERNETES,
],
UPGRADEABLE: [
KIND_CATALOG,
KIND_SYSTEM_CATALOG
],
SYSTEM_KINDS: [
KIND_SYSTEM,
KIND_SYSTEM_CATALOG,
],
SHOW_AS_SYSTEM: [
KIND_SYSTEM,
KIND_INFRA,
KIND_NOT_ORCHESTRATION,
],
SYSTEM_CATEGORIES: [
'Rancher services'
],
CATALOG_DEFAULT_GROUP: 'library',
},
EXT_REFERENCES: {
CN_FORUM: 'https://forums.cnrancher.com/',
FORUM: 'https://forums.rancher.com',
COMPANY: 'https://rancher.com',
GITHUB: 'https://github.com/rancher/rancher',
DOCS: 'https://rancher.com/docs/rancher',
SLACK: 'https://slack.rancher.io',
EULA: 'https://rancher.com/eula',
},
HEADER: {
ACCOUNT_ID: 'X-Api-Account-Id',
ACTIONS: 'X-Api-Action-Links',
ACTIONS_VALUE: 'actionLinks',
CSRF: 'X-Api-Csrf',
NO_CHALLENGE: 'X-Api-No-Challenge',
NO_CHALLENGE_VALUE: 'true',
PROJECT_ID: 'X-Api-Project-Id',
RANCHER_VERSION: 'X-Rancher-Version',
},
KEY: {
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
ESCAPE: 27,
CR: 13,
LF: 10,
TAB: 9,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
HOME: 35,
END: 36,
},
LABEL: {
SYSTEM_PREFIX: 'io.rancher.',
// Container
DNS: 'io.rancher.container.dns',
HOSTNAME_OVERRIDE: 'io.rancher.container.hostname_override',
HOSTNAME_OVERRIDE_VALUE: 'container_name',
PULL_IMAGE: 'io.rancher.container.pull_image',
PULL_IMAGE_VALUE: 'always',
REQUESTED_IP: 'io.rancher.container.requested_ip',
SERVICE_NAME: 'io.rancher.stack_service.name',
START_ONCE: 'io.rancher.container.start_once',
STACK_NAME: 'io.rancher.stack.name',
STACK_UUID: 'io.rancher.stack.uuid',
SYSTEM_TYPE: 'io.rancher.container.system',
PER_HOST_SUBNET: 'io.rancher.network.per_host_subnet.subnet',
// Catalog
CERTIFIED: 'io.rancher.certified',
CERTIFIED_PARTNER: 'partner',
CERTIFIED_RANCHER: 'rancher',
CERTIFIED_RANCHER_EXPERIMENTAL: 'experimental',
// Host
DOCKER_VERSION: 'io.rancher.host.docker_version',
KERNEL_VERSION: 'io.rancher.host.linux_kernel_version',
KVM: 'io.rancher.host.kvm',
SCHED_IPS: 'io.rancher.scheduler.ips',
REQUIRE_ANY: 'io.rancher.scheduler.require_any',
// Kubernetes
K8S_DASHBOARD: 'io.rancher.k8s.kubernetes-dashboard',
K8S_KUBECTL: 'io.rancher.k8s.kubectld',
K8S_TOKEN: 'io.rancher.k8s.token',
K8S_POD_NAME: 'io.kubernetes.pod.name',
K8S_POD_NAMESPACE: 'io.kubernetes.pod.namespace',
// Scheduling
AFFINITY_PREFIX: 'io.rancher.scheduler.affinity:',
SCHED_CONTAINER: 'io.rancher.scheduler.affinity:container',
SCHED_CONTAINER_LABEL: 'io.rancher.scheduler.affinity:container_label',
SCHED_GLOBAL: 'io.rancher.scheduler.global',
SCHED_HOST_LABEL: 'io.rancher.scheduler.affinity:host_label',
// Service
DEPLOYMENT_UNIT: 'io.rancher.service.deployment.unit',
HASH: 'io.rancher.service.hash',
LAUNCH_CONFIG: 'io.rancher.service.launch.config',
LAUNCH_CONFIG_PRIMARY: 'io.rancher.service.primary.launch.config',
BALANCER_TARGET: 'io.rancher.lb_service.target',
DEPLOYMENT_REVISION: 'deployment.kubernetes.io/revision',
CREATOR_ID: 'field.cattle.io/creatorId',
TIMESTAMP: 'cattle.io/timestamp',
// EKS Cluster session token
EKS_SESSION_TOKEN: 'clusterstatus.management.cattle.io/temporary-security-credentials',
// node driver special fields
UI_HINTS: 'io.cattle.nodedriver/ui-field-hints',
K3S_NODE_ARGS: 'k3s.io/node-args',
K3S_NODE_CONFIG_HASH: 'k3s.io/node-config-hash',
K3S_NODE_ENV: 'k3s.io/node-env',
NODE_INSTANCE_TYPE: 'node.kubernetes.io/instance-type',
},
LANGUAGE: {
DEFAULT: 'en-us',
FORMAT_RELATIVE_TIMEOUT: 1000,
DOCS: ['en'],
},
WEBSOCKET: { SUBSCRIBE_DISCONNECTED_TIMEOUT: 30000 },
PREFS: {
ACCESS_WARNING: 'access-warning',
BODY_BACKGROUND: 'body-background',
CLUSTER_DEFAULT: 'default-cluster-id',
CONTAINER_VIEW: 'container-view',
COLLAPSED_CATALOGS: 'collapsed-catalogs',
FEEDBACK: 'feedback',
HOST_VIEW: 'host-view',
I_HATE_SPINNERS: 'ihatespinners',
LANGUAGE: 'language',
LAST_IMAGE_PULL_POLICY: 'last-image-pull-policy',
TARGET_OS: 'target-os',
LAST_NAMESPACE: 'last-namespace',
LAST_SCALE_MODE: 'last-scale-mode',
PERIOD: 'period',
PROJECT_DEFAULT: 'default-project-id',
PUSH_TO_REPO: 'push-to-repo',
RECENT_CLUSTERS: 'recent-clusters',
SORT_STACKS_BY: 'sort-stacks-by',
TABLE_COUNT: 'table-count',
THEME: 'theme',
WRAP_LINES: 'wrap-lines',
LANDING: 'landing',
SEEN_WHATS_NEW: 'seen-whats-new',
CLOSED_BANNER: 'closed-banner',
},
PROJECT: {
TYPE_RANCHER: 'local',
TYPE_ACTIVE_DIRECTORY_USER: 'activedirectory_user',
TYPE_ACTIVE_DIRECTORY_GROUP: 'activedirectory_group',
TYPE_AZURE_USER: 'azuread_user',
TYPE_AZURE_GROUP: 'azuread_group',
TYPE_GITHUB_USER: 'github_user',
TYPE_GITHUB_TEAM: 'github_team',
TYPE_GITHUB_ORG: 'github_org',
TYPE_KEYCLOAK_USER: 'keycloak_user',
TYPE_KEYCLOAK_GROUP: 'keycloak_group',
TYPE_LDAP_USER: 'ldap_user',
TYPE_LDAP_GROUP: 'ldap_group',
TYPE_OPENLDAP_USER: 'openldap_user',
TYPE_OPENLDAP_GROUP: 'openldap_group',
TYPE_SHIBBOLETH_USER: 'shibboleth_user',
TYPE_SHIBBOLETH_GROUP: 'shibboleth_group',
TYPE_PING_USER: 'ping_user',
TYPE_PING_GROUP: 'ping_group',
TYPE_ADFS_USER: 'adfs_user',
TYPE_ADFS_GROUP: 'adfs_group',
TYPE_OKTA_USER: 'okta_user',
TYPE_OKTA_GROUP: 'okta_group',
TYPE_FREEIPA_USER: 'freeipa_user',
TYPE_FREEIPA_GROUP: 'freeipa_group',
TYPE_GOOGLE_USER: 'googleoauth_user',
TYPE_GOOGLE_GROUP: 'googleoauth_group',
TYPE_GOOGLE_ORG: 'googleoauth_org',
PERSON: 'person',
TEAM: 'team',
ORG: 'org',
ROLE_MEMBER: 'member',
ROLE_OWNER: 'owner',
SUPPORTS_NETWORK_POLICY: [
'ipsec',
'vxlan',
]
},
SCHED_TOLERATION_OPERATOR: [
{
value: 'Equal',
label: 'Equals'
},
{
value: 'Exists',
label: 'Exists'
}
],
SCHED_TOLERATION_EFFECT: [
{
value: 'NoSchedule',
label: 'NoSchedule'
},
{
value: 'NoExecute',
label: 'NoExecute'
},
{
value: 'PreferNoSchedule',
label: 'PreferNoSchedule'
},
],
VOLUME_NODE_SELECTOR_OPERATOR: [
{
value: 'Exists',
label: 'formScheduling.nodeSelector.operator.exists',
},
{
value: 'DoesNotExist',
label: 'formScheduling.nodeSelector.operator.notExists',
},
{
value: 'In',
label: 'formScheduling.nodeSelector.operator.in',
},
{
value: 'NotIn',
label: 'formScheduling.nodeSelector.operator.notIn',
},
],
SCHED_NODE_SELECTOR_OPERATOR: [
{
value: '=',
label: 'formScheduling.nodeSelector.operator.eq',
},
{
value: '!=',
label: 'formScheduling.nodeSelector.operator.ne',
},
{
value: 'Exists',
label: 'formScheduling.nodeSelector.operator.exists',
},
{
value: 'DoesNotExist',
label: 'formScheduling.nodeSelector.operator.notExists',
},
{
value: 'In',
label: 'formScheduling.nodeSelector.operator.in',
},
{
value: 'NotIn',
label: 'formScheduling.nodeSelector.operator.notIn',
},
{
value: '<',
label: 'formScheduling.nodeSelector.operator.lt',
},
{
value: '>',
label: 'formScheduling.nodeSelector.operator.gt',
},
],
PROJECT_TEMPLATE: { DEFAULT: 'cattle', },
RULE_VERBS: [
'create',
'delete',
// 'deletecollection',
'get',
'list',
'patch',
'update',
'watch',
],
BASIC_POD_SECURITY_POLICIES: [
'allowPrivilegeEscalation',
'defaultAllowPrivilegeEscalation',
'hostIPC',
'hostNetwork',
'hostPID',
'privileged',
'readOnlyRootFilesystem'
],
VOLUME_POLICIES: [
'azureFile',
'azureDisk',
'flocker',
'flexVolume',
'hostPath',
'emptyDir',
'gcePersistentDisk',
'awsElasticBlockStore',
'gitRepo',
'secret',
'nfs',
'iscsi',
'glusterfs',
'persistentVolumeClaim',
'rbd',
'cinder',
'cephFS',
'downwardAPI',
'fc',
'configMap',
'vsphereVolume',
'quobyte',
'photonPersistentDisk',
'projected',
'portworxVolume',
'scaleIO',
'storageos',
'*',
],
BASIC_ROLE_TEMPLATE_ROLES: [
'cluster-owner',
'cluster-member',
'project-owner',
'project-member'
],
ROLE_RULES: [
'Apps',
'AuthConfigs',
'Catalogs',
'ClusterAlerts',
'ClusterComposeConfigs',
'ClusterEvents',
'ClusterLoggings',
'ClusterPipelines',
'ClusterRegistrationTokens',
'ClusterRoleTemplateBindings',
'CertificateSigningRequests',
'ClusterRoleBindings',
'ClusterRoles',
'Clusters',
'ComponentStatuses',
'ConfigMaps',
'ControllerRevisions',
'CronJobs',
'DaemonSets',
'Deployments',
'Endpoints',
'Events',
'GlobalComposeConfigs',
'GlobalRoleBindings',
'GlobalRoles',
'GroupMembers',
'Groups',
'HorizontalPodAutoscalers',
'Ingresses',
'Jobs',
'LimitRanges',
'ListenConfigs',
'Namespaces',
'NetworkPolicies',
'NodeDrivers',
'NodePools',
'NodeTemplates',
'Nodes',
'Notifiers',
'PersistentVolumeClaims',
'PersistentVolumes',
'PodDisruptionBudgets',
'PodPreset',
'PodSecurityPolicies',
'PodTemplates',
'Pods',
'PipelineExecutionLogs',
'PipelineExecutions',
'Pipelines',
'PodSecurityPolicyTemplateProjectBindings',
'PodSecurityPolicyTemplates',
'Preferences',
'Principals',
'ProjectAlerts',
'ProjectLoggings',
'ProjectNetworkPolicies',
'ProjectRoleTemplateBindings',
'Projects',
'ReplicaSets',
'ReplicationControllers',
'ResourceQuotas',
'RoleBindings',
'Roles',
'RoleTemplates',
'Secrets',
'ServiceAccounts',
'Services',
'StatefulSets',
'StorageClasses',
'Settings',
'SourceCodeCredentials',
'SourceCodeRepositories',
'TemplateVersions',
'Templates',
'Tokens',
'Users',
],
// Ephemeral but same but across all browser tabs
SESSION: {
// @TODO-2.0 remove most of these
BACK_TO: 'backTo',
CONTAINER_ROUTE: 'containerSubRoute',
ISTIO_ROUTE: 'istioSubRoute',
PROJECT_ROUTE: 'projectRoute',
CLUSTER_ROUTE: 'clusterRoute',
GITHUB_CACHE: 'githubCache',
GITHUB_ORGS: 'orgs',
GITHUB_TEAMS: 'teams',
IDENTITY: 'userIdentity',
IDENTITY_TYPE: 'userType',
LANGUAGE: 'language',
LOGIN_LANGUAGE: 'loginLanguage',
USER_ID: 'user',
USER_TYPE: 'userType',
DESCRIPTION: 'UI Session',
TTL: 16 * 60 * 60 * 1000,
},
SETTING: {
IMAGE_RANCHER: 'server-image',
VERSION_RANCHER: 'server-version',
VERSION_COMPOSE: 'compose-version',
VERSION_CLI: 'cli-version',
VERSION_MACHINE: 'machine-version',
VERSION_HELM: 'helm-version',
VERSIONS_K8S: 'k8s-version-to-images',
VERSION_RKE_K8S_DEFAULT: 'k8s-version',
VERSION_K8S_SUPPORTED_RANGE: 'ui-k8s-supported-versions-range',
VERSION_SYSTEM_K8S_DEFAULT_RANGE: 'ui-k8s-default-version-range',
CLI_URL: {
DARWIN: 'cli-url-darwin',
WINDOWS: 'cli-url-windows',
LINUX: 'cli-url-linux',
},
API_HOST: 'api-host',
CA_CERTS: 'cacerts',
HIDE_LOCAL_CLUSTER: 'hide-local-cluster',
// CLUSTER_DEFAULTS: 'cluster-defaults',
AUTH_TOKEN_MAX_TTL_MINUTES: 'auth-token-max-ttl-minutes',
ENGINE_URL: 'engine-install-url',
ENGINE_ISO_URL: 'engine-iso-url',
FIRST_LOGIN: 'first-login',
INGRESS_IP_DOMAIN: 'ingress-ip-domain',
PL: 'ui-pl',
PL_RANCHER_VALUE: 'rancher',
UI_BANNERS: 'ui-banners',
UI_ISSUES: 'ui-issues',
SUPPORTED_DOCKER: 'engine-supported-range',
NEWEST_DOCKER: 'engine-newest-version',
SERVER_URL: 'server-url',
RKE_METADATA_CONFIG: 'rke-metadata-config',
TELEMETRY: 'telemetry-opt',
EULA_AGREED: 'eula-agreed',
AUTH_USER_INFO_MAX_AGE_SECONDS: 'auth-user-info-max-age-seconds',
AUTH_USER_SESSION_TTL_MINUTES: 'auth-user-session-ttl-minutes',
AUTH_USER_INFO_RESYNC_CRON: 'auth-user-info-resync-cron',
AUTH_LOCAL_VALIDATE_DESC: 'auth-password-requirements-description',
FEEDBACK_FORM: 'ui-feedback-form',
CLUSTER_TEMPLATE_ENFORCEMENT: 'cluster-template-enforcement',
UI_DEFAULT_LANDING: 'ui-default-landing',
},
TABLES: { DEFAULT_COUNT: 50 },
THEME: {
AUTO_UPDATE_TIMER: 30 * 60 * 1000,
START_HOUR: 7,
END_HOUR: 18,
DEFAULT: 'ui-light',
},
USER: {
TYPE_NORMAL: 'user',
TYPE_ADMIN: 'admin',
BASIC_BEARER: 'x-api-bearer',
},
WHATS_NEW_VERSION: '2.5.0',
};
C.SETTING.ALLOWED = {
[C.SETTING.CA_CERTS]: { kind: 'multiline' },
// [C.SETTING.CLUSTER_DEFAULTS]: { kind: 'json' },
[C.SETTING.ENGINE_URL]: {},
[C.SETTING.ENGINE_ISO_URL]: {},
[C.SETTING.PL]: {},
[C.SETTING.UI_ISSUES]: {},
[C.SETTING.INGRESS_IP_DOMAIN]: {},
[C.SETTING.AUTH_USER_INFO_MAX_AGE_SECONDS]: {},
[C.SETTING.AUTH_USER_SESSION_TTL_MINUTES]: {},
[C.SETTING.AUTH_TOKEN_MAX_TTL_MINUTES]: {},
[C.SETTING.AUTH_USER_INFO_RESYNC_CRON]: {},
[C.SETTING.SERVER_URL]: { kind: 'url' },
[C.SETTING.RKE_METADATA_CONFIG]: { kind: 'json' },
[C.SETTING.UI_BANNERS]: { kind: 'json' },
'system-default-registry': {},
'ui-index': {},
'ui-dashboard-index': {},
'ui-offline-preferred': {},
[C.SETTING.CLUSTER_TEMPLATE_ENFORCEMENT]: { kind: 'boolean' },
[C.SETTING.UI_DEFAULT_LANDING]: {
kind: 'enum-map',
options: {
ember: 'Cluster Manager',
vue: 'Cluster Explorer'
},
},
[C.SETTING.TELEMETRY]: {
kind: 'enum',
options: ['prompt', 'in', 'out']
},
};
C.LABELS_TO_IGNORE = [
C.LABEL.HASH,
];
C.LABEL_ISTIO_RULE = 'io.rancher.istio';
// Excluded explicitly in form-labels-annotations so the label can be edited on a node resource
C.LABEL_CATTLE_CLUSTER_AGENT = 'cattle.io/cluster-agent';
C.READONLY_TAINT_PREFIX = [
'node-role.kubernetes.io/',
'node.kubernetes.io/',
'node.cloudprovider.kubernetes.io/'
];
C.LABEL_PREFIX_TO_IGNORE = [
'io.cattle.lifecycle.',
'beta.kubernetes.io/',
'failure-domain.beta.kubernetes.io/',
'node-role.kubernetes.io/',
'kubernetes.io/',
'cattle.io/',
'authz.management.cattle.io',
'rke.cattle.io',
'field.cattle.io',
'workload.user.cattle.io/',
'k3s.io',
'node.kubernetes.io',
];
C.ANNOTATIONS_TO_IGNORE_CONTAINS = [
'coreos.com/',
'cattle.io/',
'k3s.io',
]
C.ANNOTATIONS_TO_IGNORE_PREFIX = [
'kubernetes.io/',
'beta.kubernetes.io/',
'node.alpha.kubernetes.io/',
'volumes.kubernetes.io/',
'k3s.io',
]
C.GRAY_OUT_ETCD_STATUS_PROVIDERS = [
'k3s'
];
C.GRAY_OUT_SCHEDULER_STATUS_PROVIDERS = [
'azureaks',
'tencenttke',
'linodelke'
];
C.SYSTEM_LABELS_WITH_CONTROL = [
C.LABEL.SCHED_GLOBAL,
C.LABEL.HOSTNAME_OVERRIDE,
C.LABEL.DNS,
C.LABEL.START_ONCE,
C.LABEL.REQUESTED_IP,
C.LABEL.PULL_IMAGE,
C.LABEL.REQUIRE_ANY,
C.LABEL.SCHED_IPS,
C.LABEL.DOCKER_VERSION,
C.LABEL.KERNEL_VERSION,
C.LABEL.KVM,
];
C.ACTIVEISH_STATES = [
'running',
'active',
'healthy',
'initializing',
'locked',
'reinitializing',
'degraded',
'unhealthy',
'upgrading',
'updating',
'upgraded',
'draining',
'drained',
'cordoned'
];
C.READY_STATES = [
'healthy',
];
C.REMOVEDISH_STATES = [
'removed',
// 'removing',
'purging',
'purged'
];
C.DISCONNECTED_STATES = [
'disconnected',
'reconnecting',
'unavailable',
];
C.INITIALIZING_STATES = [
'initializing',
'reinitializing'
];
// This is populated by each app/components/schema/*
C.SUPPORTED_SCHEMA_INPUTS = [
'boolean',
'certificate',
'date',
'enum',
'float',
'host',
'hostname',
'int',
'multiline',
'istiohost',
'password',
'pvc',
'service',
'storageclass',
'string',
'masked',
'secret',
'base64',
];
C.RESOURCE_QUOTAS = [
'limitsCpu',
'requestsCpu',
'limitsMemory',
'requestsMemory',
'requestsStorage',
'servicesLoadBalancers',
'servicesNodePorts',
'pods',
'services',
'configMaps',
'persistentVolumeClaims',
'replicationControllers',
'secrets',
];
C.AZURE_AD = {
STANDARD: {
KEY: 'standard',
ENDPOINT: 'https://login.microsoftonline.com/',
GRAPH_ENDPOINT: 'https://graph.windows.net/'
},
CHINA: {
KEY: 'china',
ENDPOINT: 'https://login.chinacloudapi.cn/',
GRAPH_ENDPOINT: 'https://graph.chinacloudapi.cn/'
},
CUSTOM: { KEY: 'custom' }
};
C.AZURE_DEFAULTS = [
'aadClientCertPassword',
'aadClientCertPath',
'aadClientId',
'aadClientSecret',
'cloud',
'cloudProviderBackoff',
'cloudProviderBackoffDuration',
'cloudProviderBackoffExponent',
'cloudProviderBackoffJitter',
'cloudProviderBackoffRetries',
'cloudProviderRateLimit',
'cloudProviderRateLimitBucket',
'cloudProviderRateLimitQPS',
'loadBalancerSku',
'location',
'maximumLoadBalancerRuleCount',
'primaryAvailabilitySetName',
'primaryScaleSetName',
'resourceGroup',
'routeTableName',
'securityGroupName',
'subnetName',
'subscriptionId',
'tenantId',
'useInstanceMetadata',
'useManagedIdentityExtension',
'vmType',
'vnetName',
'vnetResourceGroup',
];
C.VOLUME_TYPES = {
BIND_MOUNT: 'bindMount',
TMPFS: 'tmpfs',
SECRET: 'secret',
CERTIFICATE: 'certificate',
CONFIG_MAP: 'configmap',
CUSTOM_LOG_PATH: 'customLogPath'
}
C.NOTIFIER_TABLE_LABEL = {
SLACK: 'Default Channel',
PAGERDUTY: 'Service Key',
SMTP: 'Default Recipient Address',
WEBHOOK: 'URL',
DEFAULT: 'Notifier',
WECHAT: 'Default Recipient',
}
C.CONDITION = {
SUCCESS: 'Success',
CHANGED: 'Changed',
FAILED: 'Failed',
}
C.ALERTING_COMPARISON = {
EQUAL: 'equal',
NOT_EQUAL: 'not-equal',
GREATER_THAN: 'greater-than',
LESS_THAN: 'less-than',
GREATER_OR_EQUAL: 'greater-or-equal',
LESS_OR_EQUAL: 'less-or-equal',
HAS_VALUE: 'has-value',
}
C.ALERT_DURATION = [{
label: '1 second',
value: '1s',
}, {
label: '10 seconds',
value: '10s',
}, {
label: '30 seconds',
value: '30s',
}, {
label: '1 minute',
value: '1m',
}, {
label: '2 minutes',
value: '2m',
}, {
label: '3 minutes',
value: '3m',
}, {
label: '4 minutes',
value: '4m',
}, {
label: '5 minutes',
value: '5m',
}, {
label: '10 minutes',
value: '10m',
}, {
label: '15 minutes',
value: '15m',
}, {
label: '20 minutes',
value: '20m',
}, {
label: '30 minutes',
value: '30m',
}, {
label: '1 hour',
value: '1h',
}, {
label: '2 hours',
value: '2h',
}, {
label: '3 hours',
value: '3h',
}, {
label: '6 hours',
value: '6h',
}, {
label: '7 hours',
value: '7h',
}, {
label: '12 hours',
value: '12h',
}, {
label: '13 hours',
value: '13h',
}, {
label: '24 hours',
value: '1d',
}]
C.LOGGING_TPYE_TO_CONFIG = {
elasticsearch: 'elasticsearch',
splunk_hec: 'splunk',
remote_syslog: 'syslog',
kafka_buffered: 'kafka',
forward: 'fluentForwarder',
}
C.POSTGRESQL_SSL_MODE = [
'disable',
'allow',
'prefer',
'require',
'verify-ca',
'verify-full',
]
C.NETWORK_CONFIG_DEFAULTS = {
BACKEND_PORT: '4789',
BACKEND_VNI: '4096',
CALICO: 'calico',
CANAL: 'canal',
DEFAULT_BACKEND_TYPE: 'vxlan',
FLANNEL: 'flannel',
VXLAN: 'vxlan',
WEAVE: 'weave',
}
C.CLUSTER_TEMPLATE_ROLES = {
OWNER: 'owner',
READ_ONLY: 'read-only',
}
C.NETWORK_QUESTIONS = {
PLUGIN: 'rancherKubernetesEngineConfig.network.plugin',
WEAVE_NETWORK_PROVIDER: 'rancherKubernetesEngineConfig.network.weaveNetworkProvider',
WEAVE_PASSWORD: 'rancherKubernetesEngineConfig.network.weaveNetworkProvider.password',
}
// these fields are filtered when launching a cluster with a template because they have UI components
C.CLUSTER_TEMPLATE_IGNORED_OVERRIDES = [
'defaultPodSecurityPolicyTemplateId',
'dockerRootDir',
'enableNetworkPolicy',
'windowsPreferedCluster',
'localClusterAuthEndpoint.caCerts',
'localClusterAuthEndpoint.enabled',
'localClusterAuthEndpoint.fqdn',
'rancherKubernetesEngineConfig.ignoreDockerVersion',
'rancherKubernetesEngineConfig.ingress.provider',
'rancherKubernetesEngineConfig.kubernetesVersion',
'rancherKubernetesEngineConfig.monitoring.provider',
'rancherKubernetesEngineConfig.network.options',
'rancherKubernetesEngineConfig.network.options.flannel_backend_port',
'rancherKubernetesEngineConfig.network.options.flannel_backend_type',
'rancherKubernetesEngineConfig.network.options.flannel_backend_vni',
'rancherKubernetesEngineConfig.network.plugin',
'rancherKubernetesEngineConfig.network.weaveNetworkProvider',
'rancherKubernetesEngineConfig.privateRegistries[0].url',
'rancherKubernetesEngineConfig.privateRegistries[0].user',
'rancherKubernetesEngineConfig.privateRegistries[0].password',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.enabled',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.intervalHours',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.retention',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.accessKey',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.bucketName',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.endpoint',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.region',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.secretKey',
'rancherKubernetesEngineConfig.services.etcd.backupConfig.s3BackupConfig.folder',
'rancherKubernetesEngineConfig.services.kubeApi.podSecurityPolicy',
'rancherKubernetesEngineConfig.services.kubeApi.serviceNodePortRange',
]
C.CAN_SHELL_STATES = [
'running',
'notready'
]
C.SYSTEM_CHART_APPS = [
'cluster-monitoring',
'project-monitoring',
'cluster-alerting',
'rancher-logging',
'cluster-istio',
'monitoring-operator',
]
C.RESOURCE_TYPES = {
NAMESPACE: 'namespace',
PROJECT: 'project',
CLUSTER: 'cluster'
};
C.FEATURES = {
UNSUPPORTED_STORAGE_DRIVERS: 'unsupported-storage-drivers',
ISTIO_VIRTUAL_SERVICE_UI: 'istio-virtual-service-ui',
DASHBOARD: 'dashboard',
LEGACY: 'legacy'
}
C.NODES = { MASTER_NODE: 'node-role.kubernetes.io/master' };
C.STORAGE = {
LONGHORN_PROVISIONER_KEY: 'driver.longhorn.io',
LONGHORN_CATALOG_TEMPLATE_ID: 'cattle-global-data:library-longhorn',
LONGHORN_CATALOG_ITEM_DEFAULT_NAME: 'longhorn-system',
};
C.LOGGING_FILE_TO_FORM = {
ELASTICSEARCH: {
hosts: 'endpoint',
user: 'authUsername',
password: 'authPassword',
logstash_prefix: 'indexPrefix',
logstash_dateformat: 'dateFormat',
},
SPLUNK: {
host: '',
port: '',
token: 'token',
sourcetype: 'source',
default_index: 'index',
},
KAFKA: {
zookeeper: 'zookeeperEndpoint',
default_topic: 'topic',
brokers: 'brokers',
},
SYSLOG: {
host: '',
port: '',
protocol: 'protocol',
program: 'program',
token: 'token',
severity: 'severity',
},
FLUENTD: {
host: '',
port: '',
shared_key: 'sharedKey',
username: 'username',
password: 'password',
weight: 'weight',
standby: 'standby',
name: 'hostname',
}
}
export default C;