mirror of https://github.com/rancher/ui.git
Add Embedded ES resource quota configuration UI
This commit is contained in:
parent
4ae3ed921d
commit
03b831736a
|
|
@ -129,19 +129,6 @@ export default Ember.Component.extend(NewOrEdit, {
|
||||||
&& get(this, 'targetType') === 'none';
|
&& get(this, 'targetType') === 'none';
|
||||||
}.property('originalModel.{id,targetType}', 'targetType'),
|
}.property('originalModel.{id,targetType}', 'targetType'),
|
||||||
|
|
||||||
|
|
||||||
validate() {
|
|
||||||
const targetType = get(this, 'targetType');
|
|
||||||
const config = get(this, `primaryResource.${targetType}Config`);
|
|
||||||
const errors = config.validationErrors();
|
|
||||||
if (errors.get('length')) {
|
|
||||||
set(this, 'errors', errors);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
set(this, 'errors', null);
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
save(cb) {
|
save(cb) {
|
||||||
const targetType = get(this, 'targetType');
|
const targetType = get(this, 'targetType');
|
||||||
|
|
@ -198,7 +185,6 @@ export default Ember.Component.extend(NewOrEdit, {
|
||||||
set(model, 'outputFlushInterval', get(model, `${targetType}.outputFlushInterval`));
|
set(model, 'outputFlushInterval', get(model, `${targetType}.outputFlushInterval`));
|
||||||
set(model, 'outputTags', get(model, `${targetType}.outputTags`));
|
set(model, 'outputTags', get(model, `${targetType}.outputTags`));
|
||||||
set(model, `${targetType}Config`, get(model, `${targetType}.config`));
|
set(model, `${targetType}Config`, get(model, `${targetType}.config`));
|
||||||
|
|
||||||
this._super(cb);
|
this._super(cb);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,24 @@
|
||||||
import Component from '@ember/component';
|
import Component from '@ember/component';
|
||||||
import es from 'logging/mixins/target-elasticsearch';
|
import es from 'logging/mixins/target-elasticsearch';
|
||||||
|
import { get, set } from '@ember/object';
|
||||||
|
|
||||||
export default Component.extend(es, {});
|
export default Component.extend(es, {
|
||||||
|
|
||||||
|
init() {
|
||||||
|
this._super(...arguments);
|
||||||
|
const requestsCpu = get(this, 'config.requestsCpu') || 1000;
|
||||||
|
const limitsCpu = get(this, 'config.limitsCpu');
|
||||||
|
set(this, 'requestsCpu', requestsCpu / 1000);
|
||||||
|
set(this, 'limitsCpu', limitsCpu / 1000);
|
||||||
|
},
|
||||||
|
|
||||||
|
limitsCpuChanged: function() {
|
||||||
|
const requestsCpu = get(this, 'requestsCpu');
|
||||||
|
set(this, 'config.requestsCpu', requestsCpu * 1000);
|
||||||
|
}.observes('requestsCpu'),
|
||||||
|
|
||||||
|
limitsCpuChanged: function() {
|
||||||
|
const limitsCpu = get(this, 'limitsCpu');
|
||||||
|
set(this, 'config.limitsCpu', limitsCpu * 1000);
|
||||||
|
}.observes('limitsCpu'),
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,58 @@
|
||||||
<h2 class="mt-30">{{t 'loggingPage.embedded.header'}}</h2>
|
<h2 class="mt-30">{{t 'loggingPage.embedded.header'}}</h2>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
<section class="">
|
<section class="box">
|
||||||
<h4>{{t 'loggingPage.embedded.indexPatterns.header'}}</h4>
|
<h4>{{t 'loggingPage.embedded.resouceRequestsAndLimits'}}</h4>
|
||||||
<p class="text-info text-small">{{t 'loggingPage.embedded.indexPatterns.helpText'}}</p>
|
<div class="row mb-20">
|
||||||
|
<div class="col span-6">
|
||||||
|
<label class="acc-label">{{t 'loggingPage.embedded.cpuRequests.label'}}{{field-required}}</label>
|
||||||
|
{{input-number
|
||||||
|
min=1
|
||||||
|
type="number"
|
||||||
|
value=requestsCpu
|
||||||
|
className="form-control"
|
||||||
|
placeholder=(t 'loggingPage.embedded.cpuRequests.placeholder')
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col span-6">
|
||||||
|
<label class="acc-label">{{t 'loggingPage.embedded.cpuLimits.label'}}{{field-required}}</label>
|
||||||
|
{{input-number
|
||||||
|
min=1
|
||||||
|
type="number"
|
||||||
|
value=limitsCpu
|
||||||
|
className="form-control"
|
||||||
|
placeholder=(t 'loggingPage.embedded.cpuLimits.placeholder')
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col span-6">
|
||||||
|
<label class="acc-label">{{t 'loggingPage.embedded.memRequests.label'}}{{field-required}}</label>
|
||||||
|
{{input-number
|
||||||
|
min=500
|
||||||
|
type="number"
|
||||||
|
value=config.requestsMemory
|
||||||
|
className="form-control"
|
||||||
|
placeholder=(t 'loggingPage.embedded.memRequests.placeholder')
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col span-6">
|
||||||
|
<label class="acc-label">{{t 'loggingPage.embedded.memLimits.label'}}{{field-required}}</label>
|
||||||
|
{{input-number
|
||||||
|
min=1000
|
||||||
|
type="number"
|
||||||
|
value=config.limitsMemory
|
||||||
|
className="form-control"
|
||||||
|
placeholder=(t 'loggingPage.embedded.memLimits.placeholder')
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h4 class="mt-20">{{t 'loggingPage.embedded.indexPatterns.header'}}</h4>
|
||||||
|
<p class="text-info text-small">{{t 'loggingPage.embedded.indexPatterns.helpText'}}</p>
|
||||||
|
|
||||||
<label class="acc-label">{{t 'loggingPage.embedded.indexPatterns.prefix'}}{{field-required}}</label>
|
<label class="acc-label">{{t 'loggingPage.embedded.indexPatterns.prefix'}}{{field-required}}</label>
|
||||||
{{input
|
{{input
|
||||||
|
|
@ -21,7 +69,6 @@
|
||||||
<label class="mr-10">{{radio-button selection=config.dateFormat value="YYYY"}} YYYY</label>
|
<label class="mr-10">{{radio-button selection=config.dateFormat value="YYYY"}} YYYY</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{{t 'loggingPage.embedded.generatedIndex'
|
{{t 'loggingPage.embedded.generatedIndex'
|
||||||
esIndex=esIndex
|
esIndex=esIndex
|
||||||
|
|
@ -29,5 +76,4 @@
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<hr class="mt-30 mb-30" />
|
|
||||||
{{logging/form-log-format logPreview=logPreview model=model}}
|
{{logging/form-log-format logPreview=logPreview model=model}}
|
||||||
|
|
@ -16,7 +16,6 @@ export default Route.extend({
|
||||||
const gs = get(this, 'globalStore');
|
const gs = get(this, 'globalStore');
|
||||||
const newLogging = gs.createRecord({
|
const newLogging = gs.createRecord({
|
||||||
type: loggingType,
|
type: loggingType,
|
||||||
outputFlushInterval: 3,
|
|
||||||
outputTags: {},
|
outputTags: {},
|
||||||
});
|
});
|
||||||
return newLogging;
|
return newLogging;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { get, set } from '@ember/object'
|
import { get, set } from '@ember/object'
|
||||||
|
import EmberObject from '@ember/object';
|
||||||
import Mixin from '@ember/object/mixin';
|
import Mixin from '@ember/object/mixin';
|
||||||
|
|
||||||
const DEFAULT_TARGET_TYPE = 'none';
|
const DEFAULT_TARGET_TYPE = 'none';
|
||||||
|
|
@ -14,6 +15,8 @@ export default Mixin.create({
|
||||||
type: this.get('type'),
|
type: this.get('type'),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const map = EmberObject.create({});
|
||||||
|
|
||||||
const loggingTagets = [
|
const loggingTagets = [
|
||||||
'embedded',
|
'embedded',
|
||||||
'kafka',
|
'kafka',
|
||||||
|
|
@ -22,14 +25,12 @@ export default Mixin.create({
|
||||||
'syslog',
|
'syslog',
|
||||||
];
|
];
|
||||||
|
|
||||||
const map = {};
|
|
||||||
loggingTagets.forEach(key => {
|
loggingTagets.forEach(key => {
|
||||||
const config = store.createRecord({
|
const config = store.createRecord({
|
||||||
type: `${key}Config`
|
type: `${key}Config`,
|
||||||
});
|
});
|
||||||
const clone = nue.clone();
|
nue.set('config', config);
|
||||||
clone.set('config', config);
|
set(map, key, nue.clone());
|
||||||
map[key] = clone;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.setProperties(map);
|
this.setProperties(map);
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,20 @@ loggingPage:
|
||||||
requirements: The embedded deployment includes Elasticsearch and Kibana. Elasticsearch requests at least 1 CPU and 500M MEM available on the node it is deployed.
|
requirements: The embedded deployment includes Elasticsearch and Kibana. Elasticsearch requests at least 1 CPU and 500M MEM available on the node it is deployed.
|
||||||
esEndpoint: 'Elascticsearch Endpoint: <a href="http://47.88.57.141:30022" target="_blank">http://47.88.57.141:30022</a>'
|
esEndpoint: 'Elascticsearch Endpoint: <a href="http://47.88.57.141:30022" target="_blank">http://47.88.57.141:30022</a>'
|
||||||
kibanaEndpoint: 'Kibana Endpoint: <a href="http://47.88.57.141:30024" target="_blank">http://47.88.57.141:30024</a>'
|
kibanaEndpoint: 'Kibana Endpoint: <a href="http://47.88.57.141:30024" target="_blank">http://47.88.57.141:30024</a>'
|
||||||
|
cpuRequests:
|
||||||
|
label: CPU Requests (Core)
|
||||||
|
placeholder: e.g. 1
|
||||||
|
cpuLimits:
|
||||||
|
label: CPU Limits (Core)
|
||||||
|
placeholder: e.g. 4
|
||||||
|
memRequests:
|
||||||
|
label: Memory Requests (M)
|
||||||
|
placeholder: e.g. 500
|
||||||
|
memLimits:
|
||||||
|
label: Memory Limits (M)
|
||||||
|
placeholder: e.g. 2000
|
||||||
|
resouceRequestsAndLimits: CPU and Memory
|
||||||
|
|
||||||
indexPatterns:
|
indexPatterns:
|
||||||
header: Index Patterns
|
header: Index Patterns
|
||||||
helpText: Index patterns are used to generate Elacticsearch index
|
helpText: Index patterns are used to generate Elacticsearch index
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue