mirror of https://github.com/rancher/ui.git
104 lines
2.9 KiB
JavaScript
104 lines
2.9 KiB
JavaScript
import { alias } from '@ember/object/computed';
|
|
import { get, set, observer } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import Component from '@ember/component';
|
|
import layout from './template';
|
|
const NONE = 'NONE';
|
|
const ISTIO_MUTUAL = 'ISTIO_MUTUAL';
|
|
const DISABLE = 'DISABLE';
|
|
const SIMPLE = 'SIMPLE';
|
|
const MUTUAL = 'MUTUAL';
|
|
|
|
export default Component.extend({
|
|
intl: service(),
|
|
|
|
layout,
|
|
|
|
tlsMode: NONE,
|
|
trafficPolicy: null,
|
|
errors: null,
|
|
|
|
model: alias('trafficPolicy.tls'),
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
this.initTls();
|
|
},
|
|
|
|
actions: {
|
|
setSubjectAltNames(subjectAltNames) {
|
|
set(this, 'model.subjectAltNames', subjectAltNames);
|
|
}
|
|
},
|
|
|
|
tlsModeDidChange: observer('tlsMode', function() {
|
|
const tlsMode = get(this, 'tlsMode');
|
|
const trafficPolicy = get(this, 'trafficPolicy');
|
|
|
|
if ( tlsMode === NONE ) {
|
|
delete trafficPolicy['tls'];
|
|
} else if ( tlsMode === ISTIO_MUTUAL ) {
|
|
set(this, 'model', { mode: ISTIO_MUTUAL });
|
|
} else if ( tlsMode === DISABLE ) {
|
|
set(this, 'model', { mode: DISABLE });
|
|
} else if ( tlsMode === SIMPLE ) {
|
|
const out = { mode: SIMPLE };
|
|
|
|
if ( get(this, 'model.caCertificates') ) {
|
|
set(out, 'caCertificates', get(this, 'model.caCertificates'))
|
|
}
|
|
if ( get(this, 'model.sni') ) {
|
|
set(out, 'sni', get(this, 'model.sni'))
|
|
}
|
|
if ( get(this, 'model.subjectAltNames.length') > 0 ) {
|
|
set(out, 'subjectAltNames', get(this, 'model.subjectAltNames'))
|
|
}
|
|
set(this, 'model', out);
|
|
} else if ( tlsMode === MUTUAL ) {
|
|
const out = { mode: MUTUAL };
|
|
|
|
if ( get(this, 'model.clientCertificate') ) {
|
|
set(out, 'clientCertificate', get(this, 'model.clientCertificate'))
|
|
}
|
|
if ( get(this, 'model.privateKey') ) {
|
|
set(out, 'privateKey', get(this, 'model.privateKey'))
|
|
}
|
|
if ( get(this, 'model.caCertificates') ) {
|
|
set(out, 'caCertificates', get(this, 'model.caCertificates'))
|
|
}
|
|
if ( get(this, 'model.sni') ) {
|
|
set(out, 'sni', get(this, 'model.sni'))
|
|
}
|
|
if ( get(this, 'model.subjectAltNames.length') > 0 ) {
|
|
set(out, 'subjectAltNames', get(this, 'model.subjectAltNames'))
|
|
}
|
|
set(this, 'model', out);
|
|
}
|
|
}),
|
|
|
|
validate: observer('tlsMode', 'model.clientCertificate', 'model.privateKey', function() {
|
|
const errors = [];
|
|
|
|
if ( get(this, 'tlsMode') === MUTUAL ) {
|
|
if ( !get(this, 'model.clientCertificate') ) {
|
|
errors.push(get(this, 'intl').t('cruDestinationRule.tls.clientCertificate.error'));
|
|
}
|
|
|
|
if ( !get(this, 'model.privateKey') ) {
|
|
errors.push(get(this, 'intl').t('cruDestinationRule.tls.privateKey.error'));
|
|
}
|
|
}
|
|
set(this, 'errors', errors);
|
|
}),
|
|
|
|
initTls() {
|
|
if ( !get(this, 'model') || !get(this, 'model.mode') ) {
|
|
set(this, 'tlsMode', NONE);
|
|
} else {
|
|
set(this, 'tlsMode', get(this, 'model.mode'));
|
|
}
|
|
},
|
|
|
|
});
|