http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug index e28dd33..d31eba6 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug @@ -17,7 +17,7 @@ include /app/helpers/jade/mixins -var form = 'general' --var model = 'backupItem' +-var model = '$ctrl.clonedCluster' -var modelDiscoveryKind = model + '.discovery.kind' include ./general/discovery/cloud @@ -30,60 +30,63 @@ include ./general/discovery/vm include ./general/discovery/zookeeper include ./general/discovery/kubernetes -.panel.panel-default(ng-form=form novalidate) - .panel-heading(bs-collapse-toggle) +.pca-panel(ng-form=form novalidate) + .pca-panel-heading(bs-collapse-toggle) ignite-form-panel-chevron - label General - ignite-form-field-tooltip.tipLabel - | Common cluster configuration#[br] - | #[a(href="https://apacheignite.readme.io/docs/clustering" target="_blank") More info] - ignite-form-revert - .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) - .panel-body - .col-sm-6 - .settings-row - +text('Name:', `${model}.name`, '"clusterName"', 'true', 'Input name', 'Instance name allows to indicate to what grid this particular grid instance belongs to') - .settings-row - +caches(model, 'Select caches to start in cluster or add a new cache') - .settings-row + .pca-panel-heading-title General + .pca-panel-heading-description + | Common cluster configuration. + | #[a.link-success(href="https://apacheignite.readme.io/docs/clustering" target="_blank") More info] + .pca-panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) + .pca-panel-body.pca-form-row + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-30 + +sane-ignite-form-field-text({ + label: 'Name:', + model: `${model}.name`, + name: '"clusterName"', + disabled: 'false', + placeholder: 'Input name', + required: true, + tip: 'Instance name allows to indicate to what grid this particular grid instance belongs to' + })( + ignite-unique='$ctrl.shortClusters' + ignite-unique-property='name' + ignite-unique-skip=`["_id", ${model}]` + ) + +unique-feedback(`${model}.name`, 'Cluster name should be unique.') + + .pc-form-grid-col-30 +text-ip-address('Local host:', `${model}.localHost`, '"localHost"', 'true', '0.0.0.0', 'System-wide local address or host for all Ignite components to bind to<br/>\ If not defined then Ignite tries to use local wildcard address<br/>\ That means that all services will be available on all network interfaces of the host machine') - .settings-row - +dropdown('Discovery:', `${model}.discovery.kind`, '"discovery"', 'true', 'Choose discovery', 'discoveries', - 'Discovery allows to discover remote nodes in grid\ - <ul>\ - <li>Static IPs - IP Finder which works only with pre configured list of IP addresses specified</li>\ - <li>Multicast - Multicast based IP finder</li>\ - <li>AWS S3 - AWS S3 based IP finder that automatically discover cluster nodes on Amazon EC2 cloud</li>\ - <li>Apache jclouds - Apache jclouds multi cloud toolkit based IP finder for cloud platforms with unstable IP addresses</li>\ - <li>Google cloud storage - Google Cloud Storage based IP finder that automatically discover cluster nodes on Google Compute Engine cluster</li>\ - <li>JDBC - JDBC based IP finder that use database to store node IP address</li>\ - <li>Shared filesystem - Shared filesystem based IP finder that use file to store node IP address</li>\ - <li>Apache ZooKeeper - Apache ZooKeeper based IP finder when you use ZooKeeper to coordinate your distributed environment</li>\ - <li>Kubernetes - IP finder for automatic lookup of Ignite nodes running in Kubernetes environment</li>\ - </ul>') - .settings-row - .panel-details - div(ng-if=`${modelDiscoveryKind} === 'Cloud'`) - +discovery-cloud() - div(ng-if=`${modelDiscoveryKind} === 'GoogleStorage'`) - +discovery-google() - div(ng-if=`${modelDiscoveryKind} === 'Jdbc'`) - +discovery-jdbc() - div(ng-if=`${modelDiscoveryKind} === 'Multicast'`) - +discovery-multicast() - div(ng-if=`${modelDiscoveryKind} === 'S3'`) - +discovery-s3() - div(ng-if=`${modelDiscoveryKind} === 'SharedFs'`) - +discovery-shared() - div(ng-if=`${modelDiscoveryKind} === 'Vm'`) - +discovery-vm() - div(ng-if=`${modelDiscoveryKind} === 'ZooKeeper'`) - +discovery-zookeeper() - div(ng-if=`${modelDiscoveryKind} === 'Kubernetes'`) - +discovery-kubernetes() - .col-sm-6 - -var model = 'backupItem' - +preview-xml-java(model, 'clusterCaches', 'caches') + + .pc-form-grid-col-60 + +dropdown('Discovery:', `${model}.discovery.kind`, '"discovery"', 'true', 'Choose discovery', '$ctrl.Clusters.discoveries', + 'Discovery allows to discover remote nodes in grid\ + <ul>\ + <li>Static IPs - IP Finder which works only with pre configured list of IP addresses specified</li>\ + <li>Multicast - Multicast based IP finder</li>\ + <li>AWS S3 - AWS S3 based IP finder that automatically discover cluster nodes on Amazon EC2 cloud</li>\ + <li>Apache jclouds - Apache jclouds multi cloud toolkit based IP finder for cloud platforms with unstable IP addresses</li>\ + <li>Google cloud storage - Google Cloud Storage based IP finder that automatically discover cluster nodes on Google Compute Engine cluster</li>\ + <li>JDBC - JDBC based IP finder that use database to store node IP address</li>\ + <li>Shared filesystem - Shared filesystem based IP finder that use file to store node IP address</li>\ + <li>Apache ZooKeeper - Apache ZooKeeper based IP finder when you use ZooKeeper to coordinate your distributed environment</li>\ + <li>Kubernetes - IP finder for automatic lookup of Ignite nodes running in Kubernetes environment</li>\ + </ul>') + .pc-form-group + +discovery-cloud()(ng-if=`${modelDiscoveryKind} === 'Cloud'`) + +discovery-google()(ng-if=`${modelDiscoveryKind} === 'GoogleStorage'`) + +discovery-jdbc()(ng-if=`${modelDiscoveryKind} === 'Jdbc'`) + +discovery-multicast()(ng-if=`${modelDiscoveryKind} === 'Multicast'`) + +discovery-s3()(ng-if=`${modelDiscoveryKind} === 'S3'`) + +discovery-shared()(ng-if=`${modelDiscoveryKind} === 'SharedFs'`) + +discovery-vm()(ng-if=`${modelDiscoveryKind} === 'Vm'`) + +discovery-zookeeper()(ng-if=`${modelDiscoveryKind} === 'ZooKeeper'`) + +discovery-kubernetes()(ng-if=`${modelDiscoveryKind} === 'Kubernetes'`) + + .pca-form-column-6 + -var model = '$ctrl.clonedCluster' + +preview-xml-java(model, 'clusterGeneral')
http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/cloud.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/cloud.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/cloud.pug index a6f9158..074756e 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/cloud.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/cloud.pug @@ -16,7 +16,7 @@ include /app/helpers/jade/mixins -mixin discovery-cloud(modelAt='backupItem') +mixin discovery-cloud(modelAt='$ctrl.clonedCluster') -const model = `${modelAt}.discovery.Cloud` -const discoveryKind = 'Cloud' @@ -26,113 +26,53 @@ mixin discovery-cloud(modelAt='backupItem') -const formRegions = 'discoveryCloudRegions' -const formZones = 'discoveryCloudZones' - div - .details-row + div.pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 +text('Credential:', `${model}.credential`, '"credential"', 'false', 'Input cloud credential', 'Credential that is used during authentication on the cloud<br/>\ Depending on a cloud platform it can be a password or access key') - .details-row - +text('Path to credential:', `${model}.credentialPath`, '"credentialPath"', 'false', 'Input pathto credential', + .pc-form-grid-col-30 + +text('Path to credential:', `${model}.credentialPath`, '"credentialPath"', 'false', 'Input path to credential', 'Path to a credential that is used during authentication on the cloud<br/>\ Access key or private key should be stored in a plain or PEM file without a passphrase') - .details-row + .pc-form-grid-col-30 +text('Identity:', `${model}.identity`, '"' + discoveryKind + 'Identity"', required, 'Input identity', 'Identity that is used as a user name during a connection to the cloud<br/>\ Depending on a cloud platform it can be an email address, user name, etc') - .details-row + .pc-form-grid-col-30 +text('Provider:', `${model}.provider`, '"' + discoveryKind + 'Provider"', required, 'Input provider', 'Cloud provider to use') - .pcb-flex-grid-break - .pcb-flex-grid-break - .details-row - -var form = formRegions; - +ignite-form-group(ng-model=`${regions}` ng-form=form) - -var uniqueTip = 'Such region already exists!' - - ignite-form-field-label - | Regions - ignite-form-group-tooltip - | List of regions where VMs are located#[br] - | If the regions are not set then every region, that a cloud provider has, will be investigated. This could lead to significant performance degradation#[br] - | Note, that some cloud providers, like Google Compute Engine, doesn't have a notion of a region. For such providers regions are redundant - ignite-form-group-add(ng-click='group.add = [{}]') - | Add new region - - .group-content(ng-if=`${regions}.length`) - -var model = 'field.model'; - -var name = '"edit" + $index' - -var valid = `${form}[${name}].$valid` - -var save = `${regions}[$index] = ${model}` - - div(ng-repeat=`model in ${regions} track by $index`) - label.col-xs-12.col-sm-12.col-md-12(ng-init='field = {}') - .indexField - | {{ $index+1 }}) - +table-remove-button(regions, 'Remove region') - span(ng-hide='field.edit') - a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }} - span(ng-if='field.edit') - +table-text-field(name, model, regions, valid, save, 'Region name', false) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - - .group-content(ng-repeat='field in group.add') - -var model = 'field.new'; - -var name = '"new"' - -var valid = `${form}[${name}].$valid` - -var save = `${regions}.push(${model})` - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-text-field(name, model, regions, valid, save, 'Region name', true) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - - .group-content-empty(ng-if=`!(${regions}.length) && !group.add.length`) - | Not defined - .details-row - -var form = formZones; - +ignite-form-group(ng-model=zones ng-form=form) - -var uniqueTip = 'Such zone already exists!' - - ignite-form-field-label - | Zones - ignite-form-group-tooltip - | List of zones where VMs are located#[br] - | If the zones are not set then every zone from specified regions, will be taken into account#[br] - | Note, that some cloud providers, like Rackspace, doesn't have a notion of a zone. For such providers zones are redundant - ignite-form-group-add(ng-click='group.add = [{}]') - | Add new zone - - -var form = formZones; - .group-content(ng-if=`${zones}.length`) - -var model = 'field.model'; - -var name = '"edit" + $index' - -var valid = `${form}[${name}].$valid` - -var save = `${zones}[$index] = ${model}` - - div(ng-repeat=`model in ${zones} track by $index`) - label.col-xs-12.col-sm-12.col-md-12(ng-init='field = {}') - .indexField - | {{ $index+1 }}) - +table-remove-button(zones, 'Remove zone') - span(ng-hide='field.edit') - a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }} - span(ng-if='field.edit') - +table-text-field(name, model, zones, valid, save, 'Zone name', false) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - - .group-content(ng-repeat='field in group.add') - -var model = 'field.new'; - -var name = '"new"' - -var valid = `${form}[${name}].$valid` - -var save = `${zones}.push(${model})` - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-text-field(name, model, zones, valid, save, 'Zone name', true) - +table-save-button(valid, save, true) - +unique-feedback(name, uniqueTip) - - .group-content-empty(ng-if=`!(${zones}.length) && !group.add.length`) - | Not defined + .pc-form-grid-col-60 + .ignite-form-field + +list-text-field({ + items: regions, + lbl: 'Region name', + name: 'regionName', + itemName: 'region', + itemsName: 'regions' + })( + list-editable-cols=`::[{ + name: 'Regions:', + tip: "List of regions where VMs are located<br /> + If the regions are not set then every region, that a cloud provider has, will be investigated. This could lead to significant performance degradation<br /> + Note, that some cloud providers, like Google Compute Engine, doesn't have a notion of a region. For such providers regions are redundant" + }]` + ) + +unique-feedback(_, 'Such region already exists!') + + .pc-form-grid-col-60 + .ignite-form-field + +list-text-field({ + items: zones, + lbl: 'Zone name', + name: 'zoneName', + itemName: 'zone', + itemsName: 'zones' + })( + list-editable-cols=`::[{ + name: 'Zones:', + tip: "List of zones where VMs are located<br /> + If the zones are not set then every zone from specified regions, will be taken into account<br /> + Note, that some cloud providers, like Rackspace, doesn't have a notion of a zone. For such providers zones are redundant" + }]` + ) + +unique-feedback(_, 'Such zone already exists!') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/google.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/google.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/google.pug index 43efa2a..7de3843 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/google.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/google.pug @@ -16,23 +16,23 @@ include /app/helpers/jade/mixins -mixin discovery-google(modelAt = 'backupItem') +mixin discovery-google(modelAt = '$ctrl.clonedCluster') -const discoveryKind = 'GoogleStorage' -const required = `${modelAt}.discovery.kind == '${discoveryKind}'` -const model = `${modelAt}.discovery.GoogleStorage` - div - .details-row + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 +text('Project name:', `${model}.projectName`, `'${discoveryKind}ProjectName'`, required, 'Input project name', '' + 'Google Cloud Platforms project name<br/>\ Usually this is an auto generated project number(ex. 208709979073) that can be found in "Overview" section of Google Developer Console') - .details-row + .pc-form-grid-col-30 +text('Bucket name:', `${model}.bucketName`, `'${discoveryKind}BucketName'`, required, 'Input bucket name', 'Google Cloud Storage bucket name<br/>\ If the bucket does not exist Ignite will automatically create it<br/>\ However the name must be unique across whole Google Cloud Storage and Service Account Id must be authorized to perform this operation') - .details-row + .pc-form-grid-col-30 +text('Private key path:', `${model}.serviceAccountP12FilePath`, `'${discoveryKind}ServiceAccountP12FilePath'`, required, 'Input private key path', 'Full path to the private key in PKCS12 format of the Service Account') - .details-row + .pc-form-grid-col-30 +text('Account id:', `${model}.serviceAccountId`, `'${discoveryKind}ServiceAccountId'`, required, 'Input account id', 'Service account ID (typically an e-mail address)') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/jdbc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/jdbc.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/jdbc.pug index 628b519..7b23a22 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/jdbc.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/jdbc.pug @@ -16,17 +16,20 @@ include /app/helpers/jade/mixins -mixin discovery-jdbc(modelAt = 'backupItem') +mixin discovery-jdbc(modelAt = '$ctrl.clonedCluster') -const model = `${modelAt}.discovery.Jdbc` -const required = `${modelAt}.discovery.kind === "Jdbc"` - .details-row - +text('Data source bean name:', `${model}.dataSourceBean`, - '"dataSourceBean"', required, 'Input bean name', 'Name of the data source bean in Spring context') - .details-row - +dialect('Dialect:', `${model}.dialect`, '"dialect"', required, - 'Dialect of SQL implemented by a particular RDBMS:', 'Generic JDBC dialect', 'Choose JDBC dialect') - .details-row - +checkbox('DB schema should be initialized by Ignite', `${model}.initSchema`, '"initSchema"', - 'Flag indicating whether DB schema should be initialized by Ignite or was explicitly created by user') - .pcb-flex-grid-break \ No newline at end of file + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 + +text('Data source bean name:', `${model}.dataSourceBean`, + '"dataSourceBean"', required, 'Input bean name', 'Name of the data source bean in Spring context') + .pc-form-grid-col-30 + +dialect('Dialect:', `${model}.dialect`, '"dialect"', required, + 'Dialect of SQL implemented by a particular RDBMS:', 'Generic JDBC dialect', 'Choose JDBC dialect') + .pc-form-grid-col-60 + +checkbox('DB schema should be initialized by Ignite', `${model}.initSchema`, '"initSchema"', + 'Flag indicating whether DB schema should be initialized by Ignite or was explicitly created by user') + .pc-form-grid-col-30(ng-if=`$ctrl.Clusters.requiresProprietaryDrivers(${modelAt})`) + a.link-success(ng-href=`{{ $ctrl.Clusters.JDBCDriverURL(${modelAt}) }}` target='_blank') + | Download JDBC drivers? \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/kubernetes.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/kubernetes.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/kubernetes.pug index 0519b59..9232022 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/kubernetes.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/kubernetes.pug @@ -16,23 +16,23 @@ include /app/helpers/jade/mixins -mixin discovery-kubernetes(modelAt = 'backupItem') +mixin discovery-kubernetes(modelAt = '$ctrl.clonedCluster') -const discoveryKind = 'Kubernetes' -const model = `${modelAt}.discovery.Kubernetes` - div - .details-row + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 +text('Service name:', `${model}.serviceName`, `'${discoveryKind}ServiceName'`, 'false', 'ignite', "The name of Kubernetes service for Ignite pods' IP addresses lookup.<br/>\ The name of the service must be equal to the name set in service's Kubernetes configuration.<br/>\ If this parameter is not changed then the name of the service has to be set to 'ignite' in the corresponding Kubernetes configuration.") - .details-row + .pc-form-grid-col-30 +text('Namespace:', `${model}.namespace`, `'${discoveryKind}Namespace'`, 'false', 'default', "The namespace the Kubernetes service belongs to.<br/>\ By default, it's supposed that the service is running under Kubernetes `default` namespace.") - .details-row + .pc-form-grid-col-60 +url('Kubernetes server:', `${model}.masterUrl`, `'${discoveryKind}MasterUrl'`, 'true', 'false', 'https://kubernetes.default.svc.cluster.local:443', 'The host name of the Kubernetes API server') - .details-row + .pc-form-grid-col-60 +text('Service token file:', `${model}.accountToken`, `'${discoveryKind}AccountToken'`, 'false', '/var/run/secrets/kubernetes.io/serviceaccount/token', 'The path to the service token file') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/multicast.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/multicast.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/multicast.pug index 42613c5..639a374 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/multicast.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/multicast.pug @@ -16,87 +16,48 @@ include /app/helpers/jade/mixins -mixin discovery-multicast(modelAt = 'backupItem') +mixin discovery-multicast(modelAt = '$ctrl.clonedCluster') -const model = `${modelAt}.discovery.Multicast` -const addresses = `${model}.addresses` - -var form = 'general' - div - .details-row + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 +text-ip-address('IP address:', `${model}.multicastGroup`, '"multicastGroup"', 'true', '228.1.2.4', 'IP address of multicast group') - .details-row + .pc-form-grid-col-30 +number-min-max('Port number:', `${model}.multicastPort`, '"multicastPort"', 'true', '47400', '0', '65535', 'Port number which multicast messages are sent to') - .details-row + .pc-form-grid-col-20 +number('Waits for reply:', `${model}.responseWaitTime`, '"responseWaitTime"', 'true', '500', '0', 'Time in milliseconds IP finder waits for reply to multicast address request') - .details-row + .pc-form-grid-col-20 +number('Attempts count:', `${model}.addressRequestAttempts`, '"addressRequestAttempts"', 'true', '2', '0', 'Number of attempts to send multicast address request<br/>\ IP finder re - sends request only in case if no reply for previous request is received') - .details-row + .pc-form-grid-col-20 +text-ip-address('Local address:', `${model}.localAddress`, '"localAddress"', 'true', '0.0.0.0', 'Local host address used by this IP finder<br/>\ If provided address is non - loopback then multicast socket is bound to this interface<br/>\ If local address is not set or is any local address then IP finder creates multicast sockets for all found non - loopback addresses') - .pcb-flex-grid-break - .details-row - -var form = 'discoveryMulticastAddresses'; - - +ignite-form-group(ng-model=`${addresses}` ng-form=form) - -var uniqueTip = 'Such IP address already exists!' - -var ipAddressTip = 'Invalid IP address!' - - ignite-form-field-label - | Addresses - ignite-form-group-tooltip - | Addresses may be represented as follows:#[br] - ul: li IP address (e.g. 127.0.0.1, 9.9.9.9, etc) - li IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc) - li IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc) - li Hostname (e.g. host1.com, host2, etc) - li Hostname and port (e.g. host1.com:47500, host2:47502, etc) - li Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc) - | If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)#[br] - | If port range is provided (e.g. host:port1..port2) the following should be considered:#[br] - ul: li port1 < port2 should be true - li Both port1 and port2 should be greater than 0 - ignite-form-group-add(ng-click='group.add = [{}]') - | Add new address - - .group-content(ng-if=`${addresses}.length`) - -var model = 'obj.model'; - -var name = '"edit" + $index' - -var valid = `${form}[${name}].$valid` - -var save = `${addresses}[$index] = ${model}` - - div(ng-repeat=`model in ${addresses} track by $index` ng-init='obj = {}') - label.col-xs-12.col-sm-12.col-md-12 - .indexField - | {{ $index+1 }}) - +table-remove-button(addresses, 'Remove address') - - +ignite-form-field-down(ng-if='!$last' ng-hide='field.edit' data-ng-model='model' data-models=addresses) - +ignite-form-field-up(ng-if='!$first' ng-hide='field.edit' data-ng-model='model' data-models=addresses) - - span(ng-hide='field.edit') - a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }} - span(ng-if='field.edit') - +table-address-field(name, model, addresses, valid, save, false, true) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - - .group-content(ng-repeat='field in group.add') - -var model = 'new'; - -var name = '"new"' - -var valid = `${form}[${name}].$valid` - -var save = `${addresses}.push(${model})` - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-address-field(name, model, addresses, valid, save, true, true) - +table-save-button(valid, save, true) - +unique-feedback(name, uniqueTip) - - .group-content-empty(ng-if=`!(${addresses}.length) && !group.add.length`) - | Not defined - .pcb-flex-grid-break + .pc-form-grid-col-60 + .ignite-form-field + .ignite-form-field__control + +list-addresses({ + items: addresses, + name: 'multicastAddresses', + tip: `Addresses may be represented as follows: + <ul> + <li>IP address (e.g. 127.0.0.1, 9.9.9.9, etc)</li> + <li>IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc)</li> + <li>IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc)</li> + <li>Hostname (e.g. host1.com, host2, etc)</li> + <li>Hostname and port (e.g. host1.com:47500, host2:47502, etc)</li> + <li>Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc)</li> + </ul> + If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)<br /> + If port range is provided (e.g. host:port1..port2) the following should be considered: + </ul> + <ul> + <li> port1 < port2 should be true</li> + <li> Both port1 and port2 should be greater than 0</li> + </ul>` + }) + http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/s3.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/s3.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/s3.pug index d459191..41d45ac 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/s3.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/s3.pug @@ -16,21 +16,23 @@ include /app/helpers/jade/mixins -mixin discovery-s3(modelAt = 'backupItem') +mixin discovery-s3(modelAt = '$ctrl.clonedCluster') -var discoveryKind = 'S3' -var required = `${modelAt}.discovery.kind == '${discoveryKind}'` -var model = `${modelAt}.discovery.S3` - .details-row - +text('Bucket name:', `${model}.bucketName`, `'${discoveryKind}BucketName'`, required, 'Input bucket name', 'Bucket name for IP finder') - .details-row(ng-if-start=`$ctrl.available("2.4.0")`) - +text('Bucket endpoint:', `${model}.bucketEndpoint`, `'${discoveryKind}BucketEndpoint'`, false, 'Input bucket endpoint', - 'Bucket endpoint for IP finder<br/> \ - For information about possible endpoint names visit <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">docs.aws.amazon.com</a>') - .details-row(ng-if-end) - +text('SSE algorithm:', `${model}.SSEAlgorithm`, `'${discoveryKind}SSEAlgorithm'`, false, 'Input SSE algorithm', - 'Server-side encryption algorithm for Amazon S3-managed encryption keys<br/> \ - For information about possible S3-managed encryption keys visit <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">docs.aws.amazon.com</a>') - .details-row - label Note, AWS credentials will be generated as stub + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-30 + +text('Bucket name:', `${model}.bucketName`, `'${discoveryKind}BucketName'`, required, 'Input bucket name', 'Bucket name for IP finder') + .pc-form-grid-col-30 + .pc-form-grid__text-only-item(style='font-style: italic;color: #424242;') + | AWS credentials will be generated as stub + .pc-form-grid-col-40(ng-if-start=`$ctrl.available("2.4.0")`) + +text('Bucket endpoint:', `${model}.bucketEndpoint`, `'${discoveryKind}BucketEndpoint'`, false, 'Input bucket endpoint', + 'Bucket endpoint for IP finder<br/> \ + For information about possible endpoint names visit <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">docs.aws.amazon.com</a>') + .pc-form-grid-col-20(ng-if-end) + +text('SSE algorithm:', `${model}.SSEAlgorithm`, `'${discoveryKind}SSEAlgorithm'`, false, 'Input SSE algorithm', + 'Server-side encryption algorithm for Amazon S3-managed encryption keys<br/> \ + For information about possible S3-managed encryption keys visit <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">docs.aws.amazon.com</a>') \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/shared.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/shared.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/shared.pug index 0a96484..83e8f2a 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/shared.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/shared.pug @@ -16,9 +16,9 @@ include /app/helpers/jade/mixins -mixin discovery-shared(modelAt = 'backupItem') +mixin discovery-shared(modelAt = '$ctrl.clonedCluster') -const model = `${modelAt}.discovery.SharedFs` - .details-row - +text('File path:', `${model}.path`, '"path"', 'false', 'disco/tcp', 'Shared path') - .pcb-flex-grid-break \ No newline at end of file + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-60 + +text('File path:', `${model}.path`, '"path"', 'false', 'disco/tcp', 'Shared path') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/vm.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/vm.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/vm.pug index c83cb13..1266f86 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/vm.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/vm.pug @@ -16,67 +16,40 @@ include /app/helpers/jade/mixins -mixin discovery-vm(modelAt = 'backupItem') - +//- Static discovery +mixin discovery-vm(modelAt = '$ctrl.clonedCluster') -const model = `${modelAt}.discovery.Vm` -const addresses = `${model}.addresses` - -const form = 'discoveryVmAddresses' - - .details-row - +ignite-form-group(ng-form=form ng-model=`${addresses}`) - -var uniqueTip = 'Such IP address already exists!' - - ignite-form-field-label - | Addresses - ignite-form-group-tooltip - | Addresses may be represented as follows: - ul: li IP address (e.g. 127.0.0.1, 9.9.9.9, etc) - li IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc) - li IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc) - li Hostname (e.g. host1.com, host2, etc) - li Hostname and port (e.g. host1.com:47500, host2:47502, etc) - li Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc) - | If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)#[br] - | If port range is provided (e.g. host:port1..port2) the following should be considered: - ul: li port1 < port2 should be true - li Both port1 and port2 should be greater than 0 - ignite-form-group-add(ng-click='group.add = [{}]') - | Add new address - - .group-content(ng-if=`${addresses}.length`) - -var model = 'obj.model'; - -var name = '"edit" + $index' - -var valid = `${form}[${name}].$valid` - -var save = `${addresses}[$index] = ${model}` - - div(ng-repeat=`model in ${addresses} track by $index` ng-init='obj = {}') - label.col-xs-12.col-sm-12.col-md-12 - .indexField - | {{ $index+1 }}) - +table-remove-button(addresses, 'Remove address') - - +ignite-form-field-down(ng-if='!$last' ng-hide='field.edit' data-ng-model='model' data-models=addresses) - +ignite-form-field-up(ng-if='!$first' ng-hide='field.edit' data-ng-model='model' data-models=addresses) - - span(ng-hide='field.edit') - a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }} - span(ng-if='field.edit') - +table-address-field(name, model, addresses, valid, save, false, true) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - - .group-content(ng-repeat='field in group.add') - -var model = 'new'; - -var name = '"new"' - -var valid = `${form}[${name}].$valid` - -var save = `${addresses}.push(${model})` - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-address-field(name, model, addresses, valid, save, true, true) - +table-save-button(valid, save, true) - +unique-feedback(name, uniqueTip) - .group-content-empty(id='addresses' ng-if=`!(${addresses}.length) && !group.add.length`) - | Not defined - .pcb-flex-grid-break \ No newline at end of file + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-60 + .ignite-form-field + .ignite-form-field__control + +list-addresses({ + items: addresses, + name: 'vmAddresses', + tip: `Addresses may be represented as follows: + <ul> + <li>IP address (e.g. 127.0.0.1, 9.9.9.9, etc)</li> + <li>IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc)</li> + <li>IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc)</li> + <li>Hostname (e.g. host1.com, host2, etc)</li> + <li>Hostname and port (e.g. host1.com:47500, host2:47502, etc)</li> + <li>Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc)</li> + </ul> + If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)<br /> + If port range is provided (e.g. host:port1..port2) the following should be considered: + </ul> + <ul> + <li> port1 < port2 should be true</li> + <li> Both port1 and port2 should be greater than 0</li> + </ul>` + })( + ng-required='true' + expose-ignite-form-field-control='$vmAddresses' + ) + .ignite-form-field__errors( + ng-messages=`$vmAddresses.$error` + ng-show=`$vmAddresses.$invalid` + ) + +form-field-feedback(_, 'required', 'Addresses should be configured') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper.pug index 6531d1d..826e09b 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper.pug @@ -16,73 +16,68 @@ include /app/helpers/jade/mixins -mixin discovery-zookeeper(modelAt = 'backupItem') +mixin discovery-zookeeper(modelAt = '$ctrl.clonedCluster') - -var form = 'general' -var discoveryKind = 'ZooKeeper' -var required = `${modelAt}.discovery.kind == '${discoveryKind}'` -var model = `${modelAt}.discovery.ZooKeeper` -var modelRetryPolicyKind = `${model}.retryPolicy.kind` - div - .details-row + .pc-form-grid-row&attributes(attributes=attributes) + .pc-form-grid-col-60 +java-class('Curator:', `${model}.curator`, '"curator"', 'true', 'false', 'The Curator framework in use<br/>\ By default generates curator of org.apache.curator. framework.imps.CuratorFrameworkImpl\ class with configured connect string, retry policy, and default session and connection timeouts', required) - .details-row + .pc-form-grid-col-60 +text('Connect string:', `${model}.zkConnectionString`, `'${discoveryKind}ConnectionString'`, required, 'host:port[chroot][,host:port[chroot]]', - 'When "IGNITE_ZK_CONNECTION_STRING" system property is not configured this property will be used') - .details-row + 'When <b>IGNITE_ZK_CONNECTION_STRING</b> system property is not configured this property will be used.<br><br>This should be a comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001".<br>If the optional chroot suffix is used the example would look like: "127.0.0.1:3000,127.0.0.1:3002/app/a".<br><br>Where the client would be rooted at "/app/a" and all paths would be relative to this root - ie getting/setting/etc... "/foo/bar" would result in operations being run on "/app/a/foo/bar" (from the server perspective).<br><br><a href="https://zookeeper.apache.org/doc/r3.2.2/api/org/apache/zookeeper/ZooKeeper.html#ZooKeeper(java.lang.String,%20int,%20org.apache.zookeeper.Watcher)">Zookeeper docs</a>') + .pc-form-grid-col-60 +dropdown('Retry policy:', `${model}.retryPolicy.kind`, '"retryPolicy"', 'true', 'Default', - '[\ - {value: "ExponentialBackoff", label: "Exponential backoff"},\ - {value: "BoundedExponentialBackoff", label: "Bounded exponential backoff"},\ - {value: "UntilElapsed", label: "Until elapsed"},\ - {value: "NTimes", label: "Max number of times"},\ - {value: "OneTime", label: "Only once"},\ - {value: "Forever", label: "Always allow retry"},\ - {value: "Custom", label: "Custom"},\ - {value: null, label: "Default"}\ - ]', - 'Available retry policies:\ - <ul>\ - <li>Exponential backoff - retries a set number of times with increasing sleep time between retries</li>\ - <li>Bounded exponential backoff - retries a set number of times with an increasing (up to a maximum bound) sleep time between retries</li>\ - <li>Until elapsed - retries until a given amount of time elapses</li>\ - <li>Max number of times - retries a max number of times</li>\ - <li>Only once - retries only once</li>\ - <li>Always allow retry - retries infinitely</li>\ - <li>Custom - custom retry policy implementation</li>\ - <li>Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10</li>\ - </ul>') - .pcb-flex-grid-break(ng-if-start=`${model}.retryPolicy.kind`) - .details-row - .panel-details - div(ng-show=`${modelRetryPolicyKind} === 'ExponentialBackoff'`) - include ./zookeeper/retrypolicy/exponential-backoff - div(ng-show=`${modelRetryPolicyKind} === 'BoundedExponentialBackoff'`) - include ./zookeeper/retrypolicy/bounded-exponential-backoff - div(ng-show=`${modelRetryPolicyKind} === 'UntilElapsed'`) - include ./zookeeper/retrypolicy/until-elapsed - div(ng-show=`${modelRetryPolicyKind} === 'NTimes'`) - include ./zookeeper/retrypolicy/n-times - div(ng-show=`${modelRetryPolicyKind} === 'OneTime'`) - include ./zookeeper/retrypolicy/one-time - div(ng-show=`${modelRetryPolicyKind} === 'Forever'`) - include ./zookeeper/retrypolicy/forever - div(ng-show=`${modelRetryPolicyKind} === 'Custom'`) - include ./zookeeper/retrypolicy/custom - .pcb-flex-grid-break(ng-if-end) - .details-row + '[\ + {value: "ExponentialBackoff", label: "Exponential backoff"},\ + {value: "BoundedExponentialBackoff", label: "Bounded exponential backoff"},\ + {value: "UntilElapsed", label: "Until elapsed"},\ + {value: "NTimes", label: "Max number of times"},\ + {value: "OneTime", label: "Only once"},\ + {value: "Forever", label: "Always allow retry"},\ + {value: "Custom", label: "Custom"},\ + {value: null, label: "Default"}\ + ]', + 'Available retry policies:\ + <ul>\ + <li>Exponential backoff - retries a set number of times with increasing sleep time between retries</li>\ + <li>Bounded exponential backoff - retries a set number of times with an increasing (up to a maximum bound) sleep time between retries</li>\ + <li>Until elapsed - retries until a given amount of time elapses</li>\ + <li>Max number of times - retries a max number of times</li>\ + <li>Only once - retries only once</li>\ + <li>Always allow retry - retries infinitely</li>\ + <li>Custom - custom retry policy implementation</li>\ + <li>Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10</li>\ + </ul>') + + .pc-form-grid__break + + include ./zookeeper/retrypolicy/exponential-backoff + include ./zookeeper/retrypolicy/bounded-exponential-backoff + include ./zookeeper/retrypolicy/until-elapsed + include ./zookeeper/retrypolicy/n-times + include ./zookeeper/retrypolicy/one-time + include ./zookeeper/retrypolicy/forever + include ./zookeeper/retrypolicy/custom + + .pc-form-grid-col-30 -var model = `${modelAt}.discovery.ZooKeeper` +text('Base path:', `${model}.basePath`, '"basePath"', 'false', '/services', 'Base path for service registration') - .details-row + .pc-form-grid-col-30 +text('Service name:', `${model}.serviceName`, '"serviceName"', 'false', 'ignite', 'Service name to use, as defined by Curator's ServiceDiscovery recipe<br/>\ In physical ZooKeeper terms, it represents the node under basePath, under which services will be registered') - .details-row + + .pc-form-grid__break + + .pc-form-grid-col-60 +checkbox('Allow duplicate registrations', `${model}.allowDuplicateRegistrations`, '"allowDuplicateRegistrations"', 'Whether to register each node only once, or if duplicate registrations are allowed<br/>\ Nodes will attempt to register themselves, plus those they know about<br/>\ http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug index a983264..0ddc1e9 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug @@ -18,10 +18,9 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.BoundedExponentialBackoff` -div - .details-row - +number('Base interval:', `${model}.baseSleepTimeMs`, '"beBaseSleepTimeMs"', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') - .details-row - +number('Max interval:', `${model}.maxSleepTimeMs`, '"beMaxSleepTimeMs"', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') - .details-row - +number-min-max('Max retries:', `${model}.maxRetries`, '"beMaxRetries"', 'true', '10', '0', '29', 'Max number of times to retry') +.pc-form-grid-col-20(ng-if-start=`${modelRetryPolicyKind} === 'BoundedExponentialBackoff'`) + +number('Base interval:', `${model}.baseSleepTimeMs`, '"beBaseSleepTimeMs"', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') +.pc-form-grid-col-20 + +number('Max interval:', `${model}.maxSleepTimeMs`, '"beMaxSleepTimeMs"', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') +.pc-form-grid-col-20(ng-if-end) + +number-min-max('Max retries:', `${model}.maxRetries`, '"beMaxRetries"', 'true', '10', '0', '29', 'Max number of times to retry') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.pug index 0982e6c..6a1bcfb 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.pug @@ -20,5 +20,6 @@ include /app/helpers/jade/mixins -var retry = `${model}.Custom` -var required = `${modelAt}.discovery.kind === "ZooKeeper" && ${modelAt}.discovery.ZooKeeper.retryPolicy.kind === "Custom"` -.details-row +.pc-form-grid-col-60(ng-if-start=`${modelRetryPolicyKind} === 'Custom'`) +java-class('Class name:', `${retry}.className`, '"customClassName"', 'true', required, 'Custom retry policy implementation class name', required) +.pc-form-grid__break(ng-if-end) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug index ae9d590..bfc3c02 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug @@ -18,10 +18,9 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.ExponentialBackoff` -div - .details-row - +number('Base interval:', `${model}.baseSleepTimeMs`, '"expBaseSleepTimeMs"', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') - .details-row - +number-min-max('Max retries:', `${model}.maxRetries`, '"expMaxRetries"', 'true', '10', '0', '29', 'Max number of times to retry') - .details-row - +number('Max interval:', `${model}.maxSleepMs`, '"expMaxSleepMs"', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') +.pc-form-grid-col-20(ng-if-start=`${modelRetryPolicyKind} === 'ExponentialBackoff'`) + +number('Base interval:', `${model}.baseSleepTimeMs`, '"expBaseSleepTimeMs"', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') +.pc-form-grid-col-20 + +number-min-max('Max retries:', `${model}.maxRetries`, '"expMaxRetries"', 'true', '10', '0', '29', 'Max number of times to retry') +.pc-form-grid-col-20(ng-if-end) + +number('Max interval:', `${model}.maxSleepMs`, '"expMaxSleepMs"', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.pug index 2d7cf42..575106b 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.pug @@ -18,5 +18,6 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.Forever` -.details-row +.pc-form-grid-col-30(ng-if-start=`${modelRetryPolicyKind} === 'Forever'`) +number('Interval:', `${model}.retryIntervalMs`, '"feRetryIntervalMs"', 'true', '1000', '0', 'Time in ms between retry attempts') +.pc-form-grid__break(ng-if-end) http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.pug index ddbdb61..dbb54e5 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.pug @@ -18,8 +18,7 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.NTimes` -div - .details-row - +number('Retries:', `${model}.n`, '"n"', 'true', '10', '0', 'Number of times to retry') - .details-row - +number('Interval:', `${model}.sleepMsBetweenRetries`, '"ntSleepMsBetweenRetries"', 'true', '1000', '0', 'Time in ms between retry attempts') +.pc-form-grid-col-30(ng-if-start=`${modelRetryPolicyKind} === 'NTimes'`) + +number('Retries:', `${model}.n`, '"n"', 'true', '10', '0', 'Number of times to retry') +.pc-form-grid-col-30(ng-if-end) + +number('Interval:', `${model}.sleepMsBetweenRetries`, '"ntSleepMsBetweenRetries"', 'true', '1000', '0', 'Time in ms between retry attempts') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.pug index e965a07..4ff1644 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.pug @@ -18,6 +18,6 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.OneTime` -div - .details-row - +number('Interval:', `${model}.sleepMsBetweenRetry`, '"oneSleepMsBetweenRetry"', 'true', '1000', '0', 'Time in ms to retry attempt') +.pc-form-grid-col-30(ng-if-start=`${modelRetryPolicyKind} === 'OneTime'`) + +number('Interval:', `${model}.sleepMsBetweenRetry`, '"oneSleepMsBetweenRetry"', 'true', '1000', '0', 'Time in ms to retry attempt') +.pc-form-grid__break(ng-if-end) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.pug index ad185fc..ebde01c 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.pug @@ -18,8 +18,7 @@ include /app/helpers/jade/mixins -var model = `${modelAt}.discovery.ZooKeeper.retryPolicy.UntilElapsed` -div - .details-row - +number('Total time:', `${model}.maxElapsedTimeMs`, '"ueMaxElapsedTimeMs"', 'true', '60000', '0', 'Total time in ms for execution of retry attempt') - .details-row - +number('Interval:', `${model}.sleepMsBetweenRetries`, '"ueSleepMsBetweenRetries"', 'true', '1000', '0', 'Time in ms between retry attempts') +.pc-form-grid-col-30(ng-if-start=`${modelRetryPolicyKind} === 'UntilElapsed'`) + +number('Total time:', `${model}.maxElapsedTimeMs`, '"ueMaxElapsedTimeMs"', 'true', '60000', '0', 'Total time in ms for execution of retry attempt') +.pc-form-grid-col-30(ng-if-end) + +number('Interval:', `${model}.sleepMsBetweenRetries`, '"ueSleepMsBetweenRetries"', 'true', '1000', '0', 'Time in ms between retry attempts') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug index 149c5db..7bfef7e 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug @@ -17,26 +17,25 @@ include /app/helpers/jade/mixins -var form = 'hadoop' --var model = 'backupItem.hadoopConfiguration' +-var model = '$ctrl.clonedCluster.hadoopConfiguration' -var plannerModel = model + '.mapReducePlanner' -var weightedModel = plannerModel + '.Weighted' -var weightedPlanner = plannerModel + '.kind === "Weighted"' -var customPlanner = plannerModel + '.kind === "Custom"' -var libs = model + '.nativeLibraryNames' -.panel.panel-default(ng-form=form novalidate) +.pca-panel.pca-panel-default(ng-form=form novalidate) -var uniqueTip = 'Such native library already exists!' - .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) + .pca-panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) ignite-form-panel-chevron - label Hadoop configuration - ignite-form-field-tooltip.tipLabel - | Hadoop Accelerator configuration - ignite-form-revert - .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) - .panel-body(ng-if=`ui.isPanelLoaded('${form}')`) - .col-sm-6 - .settings-row + .pca-panel-heading-title Hadoop configuration + .pca-panel-heading-description + | Hadoop Accelerator configuration. + .pca-panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) + .pca-panel-body(ng-if=`ui.isPanelLoaded('${form}')`).pca-form-row + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 +dropdown('Map reduce planner:', plannerModel + '.kind', '"MapReducePlanner"', 'true', 'Default', '[\ {value: "Weighted", label: "Weighted"},\ {value: "Custom", label: "Custom"},\ @@ -47,73 +46,46 @@ include /app/helpers/jade/mixins <li>Custom - Custom planner implementation</li>\ <li>Default - Default planner implementation</li>\ </ul>') - .settings-row(ng-show=weightedPlanner) - .panel-details - .details-row - +number('Local mapper weight:', weightedModel + '.localMapperWeight', '"LocalMapperWeight"', 'true', 100, '0', - 'This weight is added to a node when a mapper is assigned and it is input split data is located on this node') - .details-row - +number('Remote mapper weight:', weightedModel + '.remoteMapperWeight', '"remoteMapperWeight"', 'true', 100, '0', - 'This weight is added to a node when a mapper is assigned, but it is input split data is not located on this node') - .details-row - +number('Local reducer weight:', weightedModel + '.localReducerWeight', '"localReducerWeight"', 'true', 100, '0', - 'This weight is added to a node when a reducer is assigned and the node have at least one assigned mapper') - .details-row - +number('Remote reducer weight:', weightedModel + '.remoteReducerWeight', '"remoteReducerWeight"', 'true', 100, '0', - 'This weight is added to a node when a reducer is assigned, but the node does not have any assigned mappers') - .details-row - +number('Local mapper weight:', weightedModel + '.preferLocalReducerThresholdWeight', '"preferLocalReducerThresholdWeight"', 'true', 200, '0', - "When threshold is reached, a node with mappers is no longer considered as preferred for further reducer assignments") - .settings-row(ng-show=customPlanner) - .panel-details - .details-row - +java-class('Class name:', plannerModel + '.Custom.className', '"MapReducePlannerCustomClass"', 'true', customPlanner, - 'Custom planner implementation') - .settings-row + .pc-form-group.pc-form-grid-row(ng-show=weightedPlanner) + .pc-form-grid-col-20 + +number('Local mapper weight:', weightedModel + '.localMapperWeight', '"LocalMapperWeight"', 'true', 100, '0', + 'This weight is added to a node when a mapper is assigned and it is input split data is located on this node') + .pc-form-grid-col-20 + +number('Remote mapper weight:', weightedModel + '.remoteMapperWeight', '"remoteMapperWeight"', 'true', 100, '0', + 'This weight is added to a node when a mapper is assigned, but it is input split data is not located on this node') + .pc-form-grid-col-20 + +number('Local reducer weight:', weightedModel + '.localReducerWeight', '"localReducerWeight"', 'true', 100, '0', + 'This weight is added to a node when a reducer is assigned and the node have at least one assigned mapper') + .pc-form-grid-col-30 + +number('Remote reducer weight:', weightedModel + '.remoteReducerWeight', '"remoteReducerWeight"', 'true', 100, '0', + 'This weight is added to a node when a reducer is assigned, but the node does not have any assigned mappers') + .pc-form-grid-col-30 + +number('Local mapper weight:', weightedModel + '.preferLocalReducerThresholdWeight', '"preferLocalReducerThresholdWeight"', 'true', 200, '0', + "When threshold is reached, a node with mappers is no longer considered as preferred for further reducer assignments") + .pc-form-group.pc-form-grid-row(ng-show=customPlanner) + .pc-form-grid-col-60 + +java-class('Class name:', plannerModel + '.Custom.className', '"MapReducePlannerCustomClass"', 'true', customPlanner, + 'Custom planner implementation') + .pc-form-grid-col-30 +number('Finished job info TTL:', model + '.finishedJobInfoTtl', '"finishedJobInfoTtl"', 'true', '30000', '0', 'Finished job info time-to-live in milliseconds') - .settings-row + .pc-form-grid-col-30 +number('Max parallel tasks:', model + '.maxParallelTasks', '"maxParallelTasks"', 'true', 'availableProcessors * 2', '1', 'Max number of local tasks that may be executed in parallel') - .settings-row + .pc-form-grid-col-30 +number('Max task queue size:', model + '.maxTaskQueueSize', '"maxTaskQueueSize"', 'true', '8192', '1', 'Max task queue size') - .settings-row - +ignite-form-group(ng-form=form ng-model=`${libs}`) - ignite-form-field-label - | Native libraries - ignite-form-group-tooltip - | Library names - ignite-form-group-add(ng-click='group.add = [{}]') - | Add new library - .group-content(ng-if=`${libs}.length`) - -var model = 'obj.model'; - -var name = '"edit" + $index' - -var valid = `${form}[${name}].$valid` - -var save = `${libs}[$index] = ${model}` + .pc-form-grid-col-60 + .ignite-form-field + +list-text-field({ + items: libs, + lbl: 'Library name', + name: 'libraryName', + itemName: 'library name', + itemsName: 'library names' + })( + list-editable-cols=`::[{name: 'Native libraries:'}]` + ) + +unique-feedback(_, `${uniqueTip}`) - div(ng-repeat=`model in ${libs} track by $index` ng-init='obj = {}') - label.col-xs-12.col-sm-12.col-md-12 - .indexField - | {{ $index+1 }}) - +table-remove-button(libs, 'Remove library') - span(ng-hide='field.edit') - a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }} - span(ng-if='field.edit') - +table-text-field(name, model, libs, valid, save, 'Input library name', false) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - .group-content(ng-repeat='field in group.add') - -var model = 'new'; - -var name = '"new"' - -var valid = `${form}[${name}].$valid` - -var save = `${libs}.push(${model})` - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-text-field(name, model, libs, valid, save, 'Input library name', true) - +table-save-button(valid, save, true) - +unique-feedback(name, uniqueTip) - .group-content-empty(id='libs' ng-if=`!(${libs}.length) && !group.add.length`) - | Not defined - .col-sm-6 + .pca-form-column-6 +preview-xml-java(model, 'clusterHadoop') http://git-wip-us.apache.org/repos/asf/ignite/blob/7ee1683e/modules/web-console/frontend/app/modules/states/configuration/clusters/igfs.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/igfs.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/igfs.pug index 10930cd..cfe4d74 100644 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/igfs.pug +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/igfs.pug @@ -17,22 +17,21 @@ include /app/helpers/jade/mixins -var form = 'igfs' --var model = 'backupItem' +-var model = '$ctrl.clonedCluster' -.panel.panel-default(ng-form=form novalidate) - .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) +.pca-panel.pca-panel-default(ng-form=form novalidate) + .pca-panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) ignite-form-panel-chevron - label IGFS - ignite-form-field-tooltip.tipLabel - | IGFS (Ignite In-Memory File System) configurations assigned to cluster#[br] - | #[a(href="https://apacheignite-fs.readme.io/docs/in-memory-file-system" target="_blank") More info] - ignite-form-revert - .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) - .panel-body(ng-if=`ui.isPanelLoaded('${form}')`) - .col-sm-6 + .pca-panel-heading-title IGFS + .pca-panel-heading-description + | IGFS (Ignite In-Memory File System) configurations assigned to cluster. + | #[a.link-success(href="https://apacheignite-fs.readme.io/docs/in-memory-file-system" target="_blank") More info] + .pca-panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) + .pca-panel-body(ng-if=`ui.isPanelLoaded('${form}')`).pca-form-row + .pca-form-column-6 .settings-row - +dropdown-multiple('<span>IGFS:</span><a ui-sref="base.configuration.tabs.advanced.igfs({linkId: linkId()})"> (add)</a>', + +dropdown-multiple('<span>IGFS:</span><a ui-sref="base.configuration.edit.advanced.igfs({linkId: linkId()})"> (add)</a>', `${model}.igfss`, '"igfss"', true, 'Choose IGFS', 'No IGFS configured', 'igfss', 'Select IGFS to start in cluster or add a new IGFS') - .col-sm-6 + .pca-form-column-6 +preview-xml-java(model, 'igfss', 'igfss')
