@openshift-assisted/ui-lib
Version:
React component library for the Assisted Installer UI
327 lines • 17.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.singleClusterOperators = exports.OPERATOR_NAME_METALLB = exports.OPERATOR_NAME_OADP = exports.OPERATOR_NAME_NUMA_RESOURCES = exports.OPERATOR_NAME_CLUSTER_OBSERVABILITY = exports.OPERATOR_NAME_KUBE_DESCHEDULER = exports.OPERATOR_NAME_NODE_MAINTENANCE = exports.OPERATOR_NAME_FENCE_AGENTS_REMEDIATION = exports.OPERATOR_NAME_SELF_NODE_REMEDIATION = exports.OPERATOR_NAME_NODE_HEALTHCHECK = exports.OPERATOR_NAME_KMM = exports.OPERATOR_NAME_AMD_GPU = exports.OPERATOR_NAME_AUTHORINO = exports.OPERATOR_NAME_NMSTATE = exports.OPERATOR_NAME_OSC = exports.OPERATOR_NAME_OPENSHIFT_AI = exports.OPERATOR_NAME_SERVERLESS = exports.OPERATOR_NAME_SERVICEMESH = exports.OPERATOR_NAME_PIPELINES = exports.OPERATOR_NAME_NVIDIA_GPU = exports.OPERATOR_NAME_NODE_FEATURE_DISCOVERY = exports.OPERATOR_NAME_MTV = exports.OPERATOR_NAME_MCE = exports.OPERATOR_NAME_LVM = exports.OPERATOR_NAME_ODF = exports.OPERATOR_NAME_LSO = exports.OPERATOR_NAME_CNV = exports.diskRoleLabels = exports.PREFIX_MAX_RESTRICTION = exports.DUAL_STACK = exports.IPV4_STACK = exports.NETWORK_TYPE_SDN = exports.NETWORK_TYPE_OVN = exports.NO_SUBNET_SET = exports.MS_PER_DAY = exports.TIME_ZERO = exports.EVENT_SEVERITIES = exports.getAssistedUiLibVersion = exports.CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6 = exports.CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4 = exports.clusterValidationGroupLabels = exports.clusterValidationLabels = exports.hostValidationFailureHints = exports.hostValidationLabels = exports.hostValidationGroupLabels = exports.clusterFieldLabels = exports.clusterStatusLabels = exports.hostRoles = exports.REDUCED_POLLING_INTERVAL = exports.DEFAULT_POLLING_INTERVAL = void 0;
exports.AI_CISCO_INTERSIGHT_TAG = exports.AI_ASSISTED_MIGRATION_TAG = exports.AI_UI_TAG = exports.singleClusterBundles = void 0;
const tslib_1 = require("tslib");
const package_json_1 = tslib_1.__importDefault(require("@openshift-assisted/ui-lib/package.json"));
const axiosClient_1 = require("../api/axiosClient");
exports.DEFAULT_POLLING_INTERVAL = 10 * 1000;
exports.REDUCED_POLLING_INTERVAL = 10 * 1000 * 6;
const hostRoles = (t) => [
{
value: 'auto-assign',
label: t('ai:Auto-assign'),
description: t('ai:A role will be chosen automatically based on detected hardware and network latency.'),
},
{
value: 'master',
label: t('ai:Control plane node'),
description: t('ai:Runs the control plane components of OpenShift, including the API server.'),
},
{
value: 'worker',
label: t('ai:Worker', { count: 1 }),
description: t('ai:Runs application workloads. Connect at least 5 hosts to enable dedicated workers.'),
},
...(axiosClient_1.isInOcm
? [
{
value: 'arbiter',
label: t('ai:Arbiter'),
description: t('ai:Prevents split-brain scenarios and maintains quorum.'),
},
]
: []),
];
exports.hostRoles = hostRoles;
const clusterStatusLabels = (t) => ({
'pending-for-input': t('ai:Draft'),
insufficient: t('ai:Draft'),
ready: t('ai:Draft'),
'preparing-for-installation': t('ai:Preparing for installation'),
installing: t('ai:Installing'),
'installing-pending-user-action': t('ai:Installing (pending action)'),
finalizing: t('ai:Finalizing'),
cancelled: t('ai:Installation cancelled'),
error: t('ai:Error'),
installed: t('ai:Installed'),
'adding-hosts': t('ai:Adding hosts'),
});
exports.clusterStatusLabels = clusterStatusLabels;
const clusterFieldLabels = (t) => ({
name: t('ai:Cluster name'),
baseDnsDomain: t('ai:Base domain'),
clusterNetworkCidr: t('ai:Cluster network CIDR'),
clusterNetworkHostPrefix: t('ai:Cluster network host prefix'),
serviceNetworkCidr: t('ai:Service network CIDR'),
apiVips: t('ai:API IP'),
ingressVips: t('ai:Ingress IP'),
pullSecret: t('ai:Pull secret'),
sshPublicKey: t('ai:SSH public key'),
diskEncryptionTangServers: t("ai:Tang servers' URLs or thumbprints"),
selectedHostIds: t('ai:Hosts selection'),
httpProxy: t('ai:HTTP proxy'),
httpsProxy: t('ai:HTTPS proxy'),
noProxy: t('ai:No proxy'),
machineNetworks: t('ai:Machine networks'),
clusterNetworks: t('ai:Cluster networks'),
serviceNetworks: t('ai:Service networks'),
});
exports.clusterFieldLabels = clusterFieldLabels;
const hostValidationGroupLabels = (t) => ({
hardware: t('ai:Hardware'),
network: t('ai:Network'),
operators: t('ai:Operators'),
infrastructure: t('ai:Infrastructure'),
});
exports.hostValidationGroupLabels = hostValidationGroupLabels;
const hostValidationLabels = (t) => ({
'compatible-with-cluster-platform': t('ai:Compatible with cluster platform'),
'has-default-route': t('ai:Default route to host'),
'sufficient-network-latency-requirement-for-role': t('ai:Network latency'),
'sufficient-packet-loss-requirement-for-role': t('ai:Packet loss'),
'has-inventory': t('ai:Hardware information'),
'has-min-cpu-cores': t('ai:Minimum CPU cores'),
'has-min-memory': t('ai:Minimum Memory'),
'has-min-valid-disks': t('ai:Minimum disks of required size'),
'has-cpu-cores-for-role': t('ai:Minimum CPU cores for selected role'),
'has-memory-for-role': t('ai:Minimum memory for selected role'),
'hostname-unique': t('ai:Unique hostname'),
'hostname-valid': t('ai:Valid hostname'),
connected: t('ai:Connected'),
'media-connected': t('ai:Media Connected'),
'machine-cidr-defined': t('ai:Machine CIDR'),
'belongs-to-machine-cidr': t('ai:Belongs to machine CIDR'),
'ignition-downloadable': t('ai:Ignition file downloadable'),
'belongs-to-majority-group': t('ai:Belongs to majority connected group'),
'valid-platform-network-settings': t('ai:Platform network settings'),
'ntp-synced': t('ai:NTP synchronization'),
'container-images-available': t('ai:Container images availability'),
'lso-requirements-satisfied': t('ai:LSO requirements'),
'ocs-requirements-satisfied': t('ai:OCS requirements'),
'odf-requirements-satisfied': t('ai:ODF requirements'),
'lvm-requirements-satisfied': t('ai:Logical Volume Manager requirements'),
'cnv-requirements-satisfied': t('ai:CNV requirements'),
'disk-encryption-requirements-satisfied': t('ai:Disk encryption requirements'),
'sufficient-installation-disk-speed': t('ai:Installation disk speed'),
'api-domain-name-resolved-correctly': t('ai:API domain name resolution'),
'api-int-domain-name-resolved-correctly': t('ai:API internal domain name resolution'),
'apps-domain-name-resolved-correctly': t('ai:Application ingress domain name resolution'),
'release-domain-name-resolved-correctly': t('ai:Release domain resolution'),
'dns-wildcard-not-configured': t('ai:DNS wildcard not configured'),
'non-overlapping-subnets': t('ai:Non overlapping subnets'),
'vsphere-disk-uuid-enabled': t('ai:Vsphere disk uuid enabled'),
'compatible-agent': t('ai:Agent compatibility'),
'no-skip-installation-disk': t('ai:No skip installation disk'),
'no-skip-missing-disk': t('ai:No skip missing disk'),
'time-synced-between-host-and-service': t('ai:Time synced between host and service'),
'no-ip-collisions-in-network': t('ai:No IP collisions in network'),
'mce-requirements-satisfied': t('ai:Multicluster engine requirements'),
'mtv-requirements-satisfied': t('ai:Migration toolkit for virtualization requirements'),
'no-iscsi-nic-belongs-to-machine-cidr': t('ai:iSCSI NIC belongs to machine CIDR'),
'node-feature-discovery-requirements-satisfied': t('ai:Node Feature Discovery requirements'),
'nvidia-gpu-requirements-satisfied': t('ai:NVIDIA GPU requirements'),
'pipelines-requirements-satisfied': t('ai:Pipelines requirements'),
'serverless-requirements-satisfied': t('ai:Serverless requirements'),
'servicemesh-requirements-satisfied': t('ai:Service Mesh requirements'),
'openshift-ai-requirements-satisfied': t('ai:OpenShift AI requirements'),
'osc-requirements-satisfied': t('ai:OpenShift sandboxed containers requirements'),
'mtu-valid': t('ai:MTU requirements'),
'authorino-requirements-satisfied': '',
'nmstate-requirements-satisfied': '',
'amd-gpu-requirements-satisfied': t('ai:AMD GPU requirements'),
'kmm-requirements-satisfied': t('ai:Kernel Module Management requirements'),
'node-healthcheck-requirements-satisfied': t('ai:Node Healthcheck requirements'),
'self-node-remediation-requirements-satisfied': t('ai:Self Node Remediation requirements'),
'fence-agents-remediation-requirements-satisfied': t('ai:Fence Agents Remediation requirements'),
'node-maintenance-requirements-satisfied': t('ai:Node Maintenance requirements'),
'kube-descheduler-requirements-satisfied': t('ai:Kube Descheduler requirements'),
'cluster-observability-requirements-satisfied': t('ai:Cluster Observability requirements'),
'numa-resources-requirements-satisfied': t('ai:NUMA Resources requirements'),
'oadp-requirements-satisfied': t('ai:OADP requirements'),
'metallb-requirements-satisfied': t('ai:MetalLB requirements'),
});
exports.hostValidationLabels = hostValidationLabels;
const hostValidationFailureHints = (t) => ({
'compatible-with-cluster-platform': '',
'has-default-route': '',
'sufficient-network-latency-requirement-for-role': '',
'sufficient-packet-loss-requirement-for-role': '',
'has-inventory': '',
'has-min-cpu-cores': '',
'has-min-memory': '',
'has-min-valid-disks': '',
'has-cpu-cores-for-role': '',
'has-memory-for-role': '',
'hostname-unique': '',
'hostname-valid': '',
connected: '',
'media-connected': '',
'machine-cidr-defined': '',
'belongs-to-machine-cidr': '',
'ignition-downloadable': '',
'belongs-to-majority-group': '',
'valid-platform-network-settings': '',
'ntp-synced': t("ai:Manually fix the host's NTP configuration or provide additional NTP sources."),
'time-synced-between-host-and-service': '',
'container-images-available': '',
'lso-requirements-satisfied': '',
'ocs-requirements-satisfied': '',
'odf-requirements-satisfied': '',
'lvm-requirements-satisfied': '',
'cnv-requirements-satisfied': '',
'disk-encryption-requirements-satisfied': '',
'sufficient-installation-disk-speed': '',
'api-domain-name-resolved-correctly': '',
'api-int-domain-name-resolved-correctly': '',
'apps-domain-name-resolved-correctly': '',
'release-domain-name-resolved-correctly': '',
'dns-wildcard-not-configured': '',
'non-overlapping-subnets': '',
'vsphere-disk-uuid-enabled': '',
'compatible-agent': '',
'no-skip-installation-disk': '',
'no-skip-missing-disk': '',
'no-ip-collisions-in-network': '',
'mce-requirements-satisfied': '',
'mtv-requirements-satisfied': '',
'no-iscsi-nic-belongs-to-machine-cidr': '',
'node-feature-discovery-requirements-satisfied': '',
'nvidia-gpu-requirements-satisfied': '',
'pipelines-requirements-satisfied': '',
'serverless-requirements-satisfied': '',
'servicemesh-requirements-satisfied': '',
'openshift-ai-requirements-satisfied': '',
'osc-requirements-satisfied': '',
'authorino-requirements-satisfied': '',
'mtu-valid': '',
'nmstate-requirements-satisfied': '',
'amd-gpu-requirements-satisfied': '',
'kmm-requirements-satisfied': '',
'node-healthcheck-requirements-satisfied': '',
'self-node-remediation-requirements-satisfied': '',
'fence-agents-remediation-requirements-satisfied': '',
'node-maintenance-requirements-satisfied': '',
'kube-descheduler-requirements-satisfied': '',
'cluster-observability-requirements-satisfied': '',
'numa-resources-requirements-satisfied': '',
'oadp-requirements-satisfied': '',
'metallb-requirements-satisfied': '',
});
exports.hostValidationFailureHints = hostValidationFailureHints;
const clusterValidationLabels = (t) => ({
'network-type-valid': t('ai:Valid network type'),
'machine-cidr-defined': t('ai:Machine CIDR'),
'cluster-cidr-defined': t('ai:Cluster CIDR'),
'service-cidr-defined': t('ai:Service CIDR'),
'no-cidrs-overlapping': t('ai:No overlapping CIDR'),
'networks-same-address-families': t('ai:Networks same address families'),
'network-prefix-valid': t('ai:Valid network prefix'),
'machine-cidr-equals-to-calculated-cidr': t('ai:Machine CIDR conforms expected'),
'api-vips-defined': t('ai:API IP'),
'api-vips-valid': t('ai:API IP validity'),
'ingress-vips-defined': t('ai:Ingress IP'),
'ingress-vips-valid': t('ai:Ingress IP validity'),
'all-hosts-are-ready-to-install': t('ai:All hosts are ready to install'),
'sufficient-masters-count': t('ai:Control plane nodes count'),
'dns-domain-defined': t('ai:DNS domain'),
'pull-secret-set': t('ai:Pull secret'),
'ntp-server-configured': t('ai:NTP server'),
'lso-requirements-satisfied': t('ai:LSO requirements'),
'ocs-requirements-satisfied': t('ai:OCS requirements'),
'odf-requirements-satisfied': t('ai:ODF requirements'),
'lvm-requirements-satisfied': t('ai:Logical Volume Manager requirements'),
'cnv-requirements-satisfied': t('ai:CNV requirements'),
'mce-requirements-satisfied': t('ai:MCE requirements'),
'platform-requirements-satisfied': t('ai:Platform requirements'),
'cluster-observability-requirements-satisfied': t('ai:Cluster Observability requirements'),
'numa-resources-requirements-satisfied': t('ai:NUMA Resources requirements'),
'oadp-requirements-satisfied': t('ai:OADP requirements'),
'metallb-requirements-satisfied': t('ai:MetalLB requirements'),
});
exports.clusterValidationLabels = clusterValidationLabels;
const clusterValidationGroupLabels = (t) => ({
configuration: t('ai:General configuration'),
hostsData: t('ai:Hosts'),
'hosts-data': t('ai:Hosts'),
network: t('ai:Networking'),
operators: t('ai:Operators'),
});
exports.clusterValidationGroupLabels = clusterValidationGroupLabels;
exports.CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV4 = {
clusterNetworkCidr: '10.128.0.0/14',
clusterNetworkHostPrefix: 23,
serviceNetworkCidr: '172.30.0.0/16',
};
exports.CLUSTER_DEFAULT_NETWORK_SETTINGS_IPV6 = {
clusterNetworkCidr: '2002:db8::/53',
clusterNetworkHostPrefix: 64,
serviceNetworkCidr: '2003:db8::/112',
};
/**
* The function returns the build-time generated version.
* It can be overriden via the AIUI_APP_VERSION environment variable.
*/
const getAssistedUiLibVersion = () => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
return process.env.AIUI_APP_VERSION || package_json_1.default.version;
};
exports.getAssistedUiLibVersion = getAssistedUiLibVersion;
exports.EVENT_SEVERITIES = ['info', 'warning', 'error', 'critical'];
exports.TIME_ZERO = '0001-01-01T00:00:00.000Z';
exports.MS_PER_DAY = 1000 * 60 * 60 * 24;
exports.NO_SUBNET_SET = 'NO_SUBNET_SET';
exports.NETWORK_TYPE_OVN = 'OVNKubernetes';
exports.NETWORK_TYPE_SDN = 'OpenShiftSDN';
exports.IPV4_STACK = 'singleStack';
exports.DUAL_STACK = 'dualStack';
exports.PREFIX_MAX_RESTRICTION = {
IPv6: 128,
IPv4: 25,
};
const diskRoleLabels = (t) => ({
none: t('ai:None'),
install: t('ai:Installation disk'),
});
exports.diskRoleLabels = diskRoleLabels;
// The API uses free-form string for operator names, so let's guard at least using constants
exports.OPERATOR_NAME_CNV = 'cnv';
exports.OPERATOR_NAME_LSO = 'lso';
exports.OPERATOR_NAME_ODF = 'odf';
exports.OPERATOR_NAME_LVM = 'lvm';
exports.OPERATOR_NAME_MCE = 'mce';
exports.OPERATOR_NAME_MTV = 'mtv';
exports.OPERATOR_NAME_NODE_FEATURE_DISCOVERY = 'node-feature-discovery';
exports.OPERATOR_NAME_NVIDIA_GPU = 'nvidia-gpu';
exports.OPERATOR_NAME_PIPELINES = 'pipelines';
exports.OPERATOR_NAME_SERVICEMESH = 'servicemesh';
exports.OPERATOR_NAME_SERVERLESS = 'serverless';
exports.OPERATOR_NAME_OPENSHIFT_AI = 'openshift-ai';
exports.OPERATOR_NAME_OSC = 'osc';
exports.OPERATOR_NAME_NMSTATE = 'nmstate';
exports.OPERATOR_NAME_AUTHORINO = 'authorino';
exports.OPERATOR_NAME_AMD_GPU = 'amd-gpu';
exports.OPERATOR_NAME_KMM = 'kmm';
exports.OPERATOR_NAME_NODE_HEALTHCHECK = 'node-healthcheck';
exports.OPERATOR_NAME_SELF_NODE_REMEDIATION = 'self-node-remediation';
exports.OPERATOR_NAME_FENCE_AGENTS_REMEDIATION = 'fence-agents-remediation';
exports.OPERATOR_NAME_NODE_MAINTENANCE = 'node-maintenance';
exports.OPERATOR_NAME_KUBE_DESCHEDULER = 'kube-descheduler';
exports.OPERATOR_NAME_CLUSTER_OBSERVABILITY = 'cluster-observability';
exports.OPERATOR_NAME_NUMA_RESOURCES = 'numaresources';
exports.OPERATOR_NAME_OADP = 'oadp';
exports.OPERATOR_NAME_METALLB = 'metallb';
exports.singleClusterOperators = [
exports.OPERATOR_NAME_CNV,
exports.OPERATOR_NAME_MTV,
exports.OPERATOR_NAME_NMSTATE,
exports.OPERATOR_NAME_NODE_HEALTHCHECK,
exports.OPERATOR_NAME_NODE_MAINTENANCE,
exports.OPERATOR_NAME_FENCE_AGENTS_REMEDIATION,
exports.OPERATOR_NAME_KUBE_DESCHEDULER,
];
exports.singleClusterBundles = ['virtualization'];
exports.AI_UI_TAG = 'ui_ocm';
exports.AI_ASSISTED_MIGRATION_TAG = 'assisted_migration';
exports.AI_CISCO_INTERSIGHT_TAG = 'cisco_intersight_ui';
//# sourceMappingURL=constants.js.map