Cluster mode and type options in creation form

This commit is contained in:
Vitaly Kramskikh 2012-09-10 20:38:47 +04:00 committed by default
parent 95325b4e16
commit f932227039
3 changed files with 56 additions and 7 deletions

View File

@ -26,6 +26,14 @@ define(function() {
if (!attrs.release) {
errors.release = 'Please choose OpenStack release';
}
if (attrs.mode == 'ha') {
var redundancy = parseInt(attrs.redundancy, 10);
if (_.isNaN(redundancy)) {
errors.redundancy = 'Please enter integer number';
} else if (redundancy < 2 || redundancy > 9) {
errors.redundancy = 'Please enter number between 2 and 9';
}
}
return _.isEmpty(errors) ? null : errors;
},
locked: function() {

View File

@ -12,7 +12,7 @@ function(models, createClusterDialogTemplate) {
events: {
'click .create-cluster-btn': 'createCluster',
'keydown input': 'onInputKeydown',
'click .dialog-node': 'toggleNode'
'change input[name=mode]': 'toggleRedundancyInput'
},
createCluster: function() {
this.$('.help-inline').text('');
@ -26,21 +26,25 @@ function(models, createClusterDialogTemplate) {
}, this);
cluster.set({
name: this.$('input[name=name]').val(),
release: this.$('select[name=release]').val()
release: this.$('select[name=release]').val(),
type: this.$('input[name=type]:checked').val(),
mode: this.$('input[name=mode]:checked').val(),
redundancy: this.$('input[name=redundancy]').val()
});
if (cluster.isValid()) {
if (cluster.get('mode') != 'ha') cluster.unset('redundancy');
cluster.save({}, {success: _.bind(function() {
this.collection.fetch();
}, this)});
this.$el.modal('hide');
}
},
toggleRedundancyInput: function() {
this.$('.redundancy-control-group').toggleClass('hide', this.$('input[name=mode]:checked').val() != 'ha');
},
onInputKeydown: function(e) {
if (e.which == 13) this.createCluster();
},
toggleNode: function(e) {
$(e.currentTarget).toggleClass('node-checked').toggleClass('node-unchecked');
},
renderReleases: function(e) {
var input = this.$('select[name=release]');
input.html('');

View File

@ -8,17 +8,54 @@
<div class="control-group">
<label class="control-label">Name</label>
<div class="controls">
<input type="text" class="span4" name="name">
<input type="text" class="input-large" name="name">
<span class="help-inline"></span>
</div>
</div>
<div class="control-group">
<label class="control-label">OpenStack Release</label>
<div class="controls">
<select class="span4" name="release"></select>
<select class="input-large" name="release"></select>
<span class="help-inline"></span>
</div>
</div>
<div class="control-group">
<label class="control-label">Deployment Mode</label>
<div class="controls">
<label class="radio">
<input type="radio" name="mode" value="simple" checked>
Simple mode
</label>
<label class="radio">
<input type="radio" name="mode" value="ha">
HA mode
</label>
</div>
</div>
<div class="control-group redundancy-control-group hide">
<label class="control-label">Number of controllers</label>
<div class="controls">
<input type="number" class="input-mini" name="redundancy" value="2">
<span class="help-inline"></span>
</div>
</div>
<div class="control-group">
<label class="control-label">Cluster Type</label>
<div class="controls">
<label class="radio">
<input type="radio" name="type" value="both" checked>
Compute and storage
</label>
<label class="radio">
<input type="radio" name="type" value="compute">
Compute only
</label>
<label class="radio">
<input type="radio" name="type" value="storage">
Storage only
</label>
</div>
</div>
</fieldset>
</form>
</div>