Name
@if (form.showError('name', formDir, 'required')) {
This field is required!
}
@if (form.showError('name', formDir, 'pattern')) {
The name can only consist of alphanumeric characters, dashes and underscores.
}
@if (form.showError('name', formDir, 'uniqueName')) {
The chosen erasure code profile name is already in use.
}
@if (!plugins) {
}
@for (plugin of plugins; track plugin) {
}
This field is required!
Plugin
@if (form.showError('k', formDir, 'required')) {
This field is required!
}
@if (form.showError('k', formDir, 'min')) {
Must be equal to or greater than 2.
}
@if (form.showError('k', formDir, 'max') && form.getValue('crushFailureDomain') === CrushFailureDomains.Osd) {
Chunks (k+m) have exceeded the available OSDs of {{deviceCount}}.
}
@if (form.showError('k', formDir, 'max') && form.getValue('crushFailureDomain') === CrushFailureDomains.Host) {
Chunks (k+m+1) have exceeded the available hosts of {{deviceCount}}.
}
@if (form.showError('k', formDir, 'unequal')) {
For an equal distribution k has to be a multiple of (k+m)/l.
}
@if (form.showError('k', formDir, 'kLowerM')) {
K has to be equal to or greater than m in order to recover data correctly through c.
}
@if (plugin === 'lrc') {
Distribution factor: {{lrcMultiK}}
}
@if (form.showError('m', formDir, 'required')) {
This field is required!
}
@if (form.showError('m', formDir, 'min')) {
Must be equal to or greater than 1.
}
@if (form.showError('m', formDir, 'max') && form.getValue('crushFailureDomain') === CrushFailureDomains.Osd) {
Chunks (k+m) have exceeded the available OSDs of {{deviceCount}}.
}
@if (form.showError('m', formDir, 'max') && form.getValue('crushFailureDomain') === CrushFailureDomains.Host) {
Chunks (k+m+1) have exceeded the available hosts of {{deviceCount}}.
}
@if (plugin === 'shec') {
@if (form.showError('c', formDir, 'min')) {
Must be equal to or greater than 1.
}
@if (form.showError('c', formDir, 'cGreaterM')) {
C has to be equal to or lower than m as m defines the amount of chunks that can be used.
}
}
@if (plugin === PLUGIN.CLAY) {
}
@if (plugin === PLUGIN.LRC) {
Locality groups: {{lrcGroups}}
@if (form.showError('l', formDir, 'required')) {
This field is required!
}
@if (form.showError('l', formDir, 'min')) {
Must be equal to or greater than 1.
}
@if (form.showError('l', formDir, 'unequal')) {
Can't split up chunks (k+m) correctly with the current locality.
}
Locality (l)
}
@if (!failureDomains) {
}
@for (domain of failureDomainKeys; track domain) {
}
@if (control?.errors) {
@if (control.hasError('required')) {
{{ requiredText }}
}
@if (showMaxFailureDomains && control.hasError('maxFailureDomains')) {
The number of failure domains ({{ form.controls.crushNumFailureDomains.value }}) cannot exceed the available count ({{ failureDomains[form.controls.crushFailureDomain.value]?.length || 0 }}) for the selected failure domain type ({{ form.controls.crushFailureDomain.value }}).
}
@if (control.hasError('pattern')) {
Enter a valid positive number
}
}
@if (plugin === PLUGIN.LRC) {
@if (!failureDomains) {
}
@if (failureDomainKeys.length > 0) {
}
@for (domain of failureDomainKeys; track domain) {
}
}
@if (PLUGIN.CLAY === plugin) {
@for (plugin of [PLUGIN.JERASURE, PLUGIN.ISA, PLUGIN.SHEC]; track plugin) {
}
}
@if ([PLUGIN.JERASURE, PLUGIN.ISA, PLUGIN.CLAY].includes(plugin)) {
@for (technique of techniques; track technique) {
}
}
@if (plugin === PLUGIN.JERASURE) {
@if (form.showError('packetSize', formDir, 'min')) {
Must be equal to or greater than 1.
}
}
@if ([PLUGIN.JERASURE, PLUGIN.ISA, PLUGIN.CLAY].includes(plugin)) {
}
@for (deviceClass of devices; track deviceClass) {
}
Crush device class
Directory