mirror of https://github.com/rancher/ui.git
127 lines
3.2 KiB
JavaScript
127 lines
3.2 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import {
|
|
computed,
|
|
get,
|
|
set,
|
|
observer
|
|
} from '@ember/object';
|
|
|
|
import { once } from '@ember/runloop';
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
|
|
mode: 'new',
|
|
// TODO nb pass in fleet/cluster spec
|
|
cluster: {},
|
|
agentKey: '',
|
|
|
|
actions: {
|
|
updateLimits(val){
|
|
if (!val.cpu && !val.memory){
|
|
this.updateResourceRequirement('limits', null)
|
|
} else {
|
|
this.updateResourceRequirement('limits', val)
|
|
}
|
|
},
|
|
|
|
updateRequests(val){
|
|
if (!val.cpu && !val.memory){
|
|
this.updateResourceRequirement('requests', null)
|
|
} else {
|
|
this.updateResourceRequirement('requests', val)
|
|
}
|
|
},
|
|
|
|
updateAffinity(val){
|
|
// TODO nb do
|
|
|
|
console.log('agentConfig updating affinity to: ', val)
|
|
}
|
|
|
|
},
|
|
|
|
// TODO nb add affinity
|
|
agentObserver: observer('agentConfig.overrideResourceRequirements', 'agentConfig.appendTolerations', 'agentConfig.overrideAffinity', function() {
|
|
const agentConfig = get(this, 'agentConfig') || {}
|
|
const agentKey = get(this, 'agentKey')
|
|
|
|
if (Object.keys(agentConfig).length){
|
|
set(this.cluster, agentKey, agentConfig)
|
|
} else if (this.cluster[agentKey]){
|
|
delete this.cluster[agentKey]
|
|
}
|
|
}),
|
|
|
|
agentConfig: computed('cluster', 'agentKey', function() {
|
|
const agentKey = get(this, 'agentKey')
|
|
|
|
return get(this.cluster, agentKey) || {}
|
|
}),
|
|
|
|
overrideResourceRequirements: computed('agentConfig.overrideResourceRequirements.{requests,limits}', {
|
|
get(){
|
|
return get(this, 'agentConfig.overrideResourceRequirements') || {}
|
|
},
|
|
set(key, val = {}){
|
|
if (val.limits || val.requests){
|
|
set(this, 'agentConfig.overrideResourceRequirements', val)
|
|
} else if (this.agentConfig.overrideResourceRequirements){
|
|
delete this.agentConfig.overrideResourceRequirements
|
|
this.notifyPropertyChange('agentConfig')
|
|
}
|
|
|
|
|
|
return val
|
|
}
|
|
}),
|
|
|
|
limits: computed('overrideResourceRequirements.limits', function() {
|
|
return get(this, 'overrideResourceRequirements.limits') || {}
|
|
}),
|
|
|
|
requests: computed('overrideResourceRequirements.requests', function() {
|
|
return get(this, 'overrideResourceRequirements.requests') || {}
|
|
}),
|
|
|
|
appendTolerations: computed('agentConfig.appendTolerations', {
|
|
get(){
|
|
return get(this, 'agentConfig.appendTolerations') || []
|
|
},
|
|
set(key, val = []){
|
|
if (val.length){
|
|
set(this, 'agentConfig.appendTolerations', val)
|
|
} else if (this.agentConfig.appendTolerations){
|
|
delete this.agentConfig.appendTolerations
|
|
this.notifyPropertyChange('agentConfig')
|
|
}
|
|
|
|
return val
|
|
},
|
|
}),
|
|
|
|
overrideAffinity: computed('agentConfig.overrideAffinity', {
|
|
get(){
|
|
return get(this, 'agentConfig.overrideAffinity') || {}
|
|
},
|
|
set(key, val){
|
|
set(this.agentConfig, 'overrideAffinity', val)
|
|
|
|
return val
|
|
}
|
|
}),
|
|
|
|
updateResourceRequirement(type, val){
|
|
const neu = { ...this.overrideResourceRequirements }
|
|
|
|
if (val){
|
|
neu[type] = val
|
|
} else if (neu[type]){
|
|
delete neu[type]
|
|
}
|
|
|
|
this.set('overrideResourceRequirements', neu)
|
|
},
|
|
|
|
}) |