ui/app/models/nodepool.js

47 lines
1.1 KiB
JavaScript

import Resource from 'ember-api-store/models/resource';
import { reference } from 'ember-api-store/utils/denormalize';
import { cancel, later } from '@ember/runloop'
import { get, set } from '@ember/object';
import { alias } from '@ember/object/computed';
const NodePool = Resource.extend({
type: 'nodePool',
quantityTimer: null,
nodeTemplate: reference('nodeTemplateId'),
displayProvider: alias('nodeTemplate.displayProvider'),
incrementQuantity(by) {
let quantity = get(this, 'quantity');
quantity += by;
quantity = Math.max(0, quantity);
set(this, 'quantity', quantity);
if ( get(this, 'quantityTimer') ) {
cancel(get(this, 'quantityTimer'));
}
var timer = later(this, function() {
this.save().catch((err) => {
get(this, 'growl').fromError('Error updating node pool scale', err);
});
}, 500);
set(this, 'quantityTimer', timer);
},
});
NodePool.reopenClass({
mangleOut(data) {
if ( data && data.hostnamePrefix ) {
data.hostnamePrefix = data.hostnamePrefix.toLowerCase();
}
return data;
}
});
export default NodePool;