### {{ action | titlecase }} {{ resource }}

@if (serviceForm.controls.service_type.value === 'rgw' && showRealmCreationForm) { Click here to create a new Realm/Zonegroup/Zone } @if (serviceForm.controls.service_type.value === 'oauth2-proxy') { Authentication must be enabled in an active `mgmt-gateway` service to enable Single Sign-On(SSO) with `oauth2-proxy` } @if (serviceForm.controls.service_type.value === 'mgmt-gateway') { With an active mgmt-gateway service, the dashboard will continue to be served on {{currentURL}}:{{port}} and all other services will be accessible from {{currentURL}}:{{port}}/service_name } @if (serviceForm.controls.service_type.value === 'smb') { SMB service management is intended for advanced users only. For most scenarios, it is recommended to use the SMB module instead. To manage SMB clusters and shares, please visit the SMB page. }
-- Select a service type -- @for (serviceType of serviceTypes; track serviceType) { {{ serviceType }} } @if (serviceForm.showError('service_type', frm, 'required')) { This field is required. }
@if (serviceForm.controls.service_type.value === 'ingress') {
@if (services === null) { Loading... } @if (services !== null && services.length === 0) { -- No service available -- } @if (services !== null && services.length > 0) { -- Select an existing service -- } @for (service of services; track service) { {{ service.service_name }} } @if (serviceForm.showError('backend_service', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.service_type.value === 'nvmeof') {
@if (rbdPools === null) { Loading... } @if (rbdPools && rbdPools.length === 0) { -- No block pools available -- } @if (rbdPools && rbdPools.length > 0) { -- Select a pool -- } @for (pool of rbdPools; track pool) { {{ pool.pool_name }} } @if (serviceForm.showError('pool', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.service_type.value === 'nvmeof') {
@if (serviceForm.showError('service_id', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.service_type.value !== 'snmp-gateway') {
@if (isPrefixedNamedService) {
​
} @else { Service name } @if (serviceForm.showError('service_id', frm, 'required')) { This field is required. } @if (serviceForm.showError('service_id', frm, 'uniqueName')) { This service id is already in use. } @if (serviceForm.showError('service_id', frm, 'mdsPattern')) { MDS service id must start with a letter and contain alphanumeric characters or '.', '-', and '_' }
} @if (serviceForm.controls.service_type.value === 'rgw') {
@if (realmList.length === 0) { -- No realm available -- } @for (realm of realmList; track realm) { {{ realm.name }} } @if (serviceForm.showError('realm_name', frm, 'required')) { This field is required. }
@for (zonegroup of zonegroupList; track zonegroup) { {{ zonegroup.name }} }
@for (zone of zoneList; track zone) { {{ zone.name }} }
}
Unmanaged Enable If Unmanaged is selected, the orchestrator will not start or stop any daemons associated with this service. Placement and all other properties will be ignored.
@if (!serviceForm.controls.unmanaged.value) {
Hosts Label
} @if (hostsAndLabels$ | async; as data) { @if (!serviceForm.controls.unmanaged.value && serviceForm.controls.placement.value === 'label') {
@if (serviceForm.showError('label', frm, 'required')) { This field is required. }
} @if (!serviceForm.controls.unmanaged.value && serviceForm.controls.placement.value === 'hosts') {
} } @if (!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value !== 'nvmeof') {
} @if (!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'rgw') {
@if (serviceForm.showError('rgw_frontend_port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('rgw_frontend_port', frm, 'max')) { The value cannot exceed 65535. }
} @if (serviceForm.controls.service_type.value === 'iscsi') {
@if (pools === null) { Loading... } @if (pools && pools.length === 0) { -- No pools available -- } @if (pools && pools.length > 0) { -- Select a pool -- } @for (pool of pools; track pool) { {{ pool.pool_name }} } @if (serviceForm.showError('pool', frm, 'required')) { This field is required. }
} @if (!serviceForm.controls.unmanaged.value && serviceForm.controls.service_type.value === 'iscsi') {
@if (serviceForm.showError('api_port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('api_port', frm, 'max')) { The value cannot exceed 65535. }
@if (serviceForm.showError('api_user', frm, 'required')) { This field is required. }
@if (serviceForm.showError('api_password', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.service_type.value === 'smb') {
@if (serviceForm.showError('cluster_id', frm, 'required')) { This field is required. }
@if (serviceForm.showError('config_uri', frm, 'required')) { This field is required. } @if (serviceForm.showError('config_uri', frm, 'configUriPattern')) { The value must start with either 'http:', 'https:', 'rados:' or 'rados:mon-config-key:' }
Features Pre-defined terms enabling specific deployment characteristics. @for (feature of smbFeaturesList; track feature) { Enable }
} @if (serviceForm.controls.service_type.value === 'ingress') {
@if (serviceForm.showError('virtual_ip', frm, 'required')) { This field is required. }
@if (serviceForm.showError('frontend_port', frm, 'required')) { This field is required. } @if (serviceForm.showError('frontend_port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('frontend_port', frm, 'max')) { The value cannot exceed 65535. }
@if (serviceForm.showError('monitor_port', frm, 'required')) { This field is required. } @if (serviceForm.showError('monitor_port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('monitor_port', frm, 'max')) { The value cannot exceed 65535. }
@if (!serviceForm.controls.unmanaged.value) {
} } @if (serviceForm.controls.service_type.value === 'snmp-gateway') {
-- Select SNMP version -- @for (snmpVersion of ['V2c', 'V3']; track snmpVersion) { {{ snmpVersion }} } @if (serviceForm.showError('snmp_version', frm, 'required')) { This field is required. }
@if (serviceForm.showError('snmp_destination', frm, 'required')) { This field is required. } @if (serviceForm.showError('snmp_destination', frm, 'snmpDestinationPattern')) { The value does not match the pattern: hostname:port }
@if (serviceForm.controls.snmp_version.value === 'V3') {
@if (serviceForm.showError('engine_id', frm, 'required')) { This field is required. } @if (serviceForm.showError('engine_id', frm, 'snmpEngineIdPattern')) { The value does not match the pattern: Must be in hexadecimal and length must be multiple of 2 with min value = 10 and max value = 64. }
-- Select auth protocol -- @for (authProtocol of ['SHA', 'MD5']; track authProtocol) { {{ authProtocol }} } @if (serviceForm.showError('auth_protocol', frm, 'required')) { This field is required. }
-- Select privacy protocol -- @for (privacyProtocol of ['DES', 'AES']; track privacyProtocol) { {{ privacyProtocol }} }
} @if (['V2c', 'V3'].includes(serviceForm.controls.snmp_version?.value)) {
Credentials @if (serviceForm.controls.snmp_version.value === 'V2c') {
@if (serviceForm.showError('snmp_community', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.snmp_version.value === 'V3') {
@if (serviceForm.showError('snmp_v3_auth_username', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.snmp_version.value === 'V3') {
@if (serviceForm.showError('snmp_v3_auth_password', frm, 'required')) { This field is required. }
} @if (serviceForm.controls.snmp_version.value === 'V3' && serviceForm.controls.privacy_protocol.value !== null && serviceForm.controls.privacy_protocol.value !== undefined) {
@if (serviceForm.showError('snmp_v3_priv_password', frm, 'required')) { This field is required. }
}
} } @if (serviceForm.controls.service_type.value === 'oauth2-proxy') {
@if (serviceForm.showError('provider_display_name', frm, 'required')) { This field is required. }
@if (serviceForm.showError('client_id', frm, 'required')) { This field is required. }
@if (serviceForm.showError('client_secret', frm, 'required')) { This field is required. }
@if (serviceForm.showError('oidc_issuer_url', frm, 'required')) { This field is required. } @if (serviceForm.showError('oidc_issuer_url', frm, 'validUrl')) { Invalid url. }
@if (serviceForm.showError('https_address', frm, 'invalidAddress')) { Format must be [IP|Hostname]:port and the port between 0 and 65535 }
@if (serviceForm.showError('redirect_url', frm, 'required')) { This field is required. }
} @if (!serviceForm.controls.unmanaged.value && ['mgmt-gateway'].includes(serviceForm.controls.service_type.value)) {
@if (serviceForm.showError('port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('port', frm, 'max')) { The value cannot exceed 65535. }
Authentication Enable Allows to enable authentication through an external Identity Provider (IdP) using Single Sign-On (SSO)
SSL ciphers @if (serviceForm.showError('ssl_ciphers', frm, 'invalidPattern')) { Invalid cipher suite. Each cipher must be separated by '-' and each cipher suite must be separated by ':' }
} @if (!serviceForm.controls.unmanaged.value && ['rgw', 'iscsi', 'ingress', 'oauth2-proxy', 'mgmt-gateway'].includes(serviceForm.controls.service_type.value)) { @if (!['mgmt-gateway'].includes(serviceForm.controls.service_type.value)) {
SSL
} @if (serviceForm.controls.ssl.value || ['mgmt-gateway'].includes(serviceForm.controls.service_type.value)) {
Certificate
@if (serviceForm.showError('ssl_cert', frm, 'required')) { This field is required. } @if (serviceForm.showError('ssl_cert', frm, 'pattern')) { Invalid SSL certificate. }
} @if ((serviceForm.controls.ssl.value && !(['rgw', 'ingress'].includes(serviceForm.controls.service_type.value))) || ['mgmt-gateway'].includes(serviceForm.controls.service_type.value)) {
Private key
@if (serviceForm.showError('ssl_key', frm, 'required')) { This field is required. } @if (serviceForm.showError('ssl_key', frm, 'pattern')) { Invalid SSL private key. }
} @if(serviceForm.controls.service_type.value === 'rgw') {
{{ option.label }}
} } @if (serviceForm.controls.service_type.value === 'grafana') {
@if (serviceForm.showError('grafana_port', frm, 'required')) { This field is required. } @if (serviceForm.showError('grafana_port', frm, 'min')) { The value must be at least 1. } @if (serviceForm.showError('grafana_port', frm, 'max')) { The value cannot exceed 65535. }
Grafana password
} @if (serviceForm.controls.service_type.value === 'mgmt-gateway' && showMgmtGatewayMessage) { Modifying the default settings could lead to a weaker security configuration } @if (serviceForm.controls.service_type.value === 'nvmeof') {
Encryption Enable Enables mutual TLS (mTLS) between the client and the gateway server.
@if (serviceForm.controls.enable_mtls.value) {
Root CA certificate @if (serviceForm.showError('root_ca_cert', frm, 'required')) { This field is required. }
Client CA certificate @if (serviceForm.showError('client_cert', frm, 'required')) { This field is required. }
Client key @if (serviceForm.showError('client_key', frm, 'required')) { This field is required. }
Gateway server certificate @if (serviceForm.showError('server_cert', frm, 'required')) { This field is required. }
Gateway server key @if (serviceForm.showError('server_key', frm, 'required')) { This field is required. }
} }
Default cipher list used: https://ssl-config.mozilla.org/#server=nginx