aboutsummaryrefslogtreecommitdiffstats
path: root/ui/imports/ui/components/environment-wizard/environment-wizard.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/imports/ui/components/environment-wizard/environment-wizard.js')
-rw-r--r--ui/imports/ui/components/environment-wizard/environment-wizard.js568
1 files changed, 0 insertions, 568 deletions
diff --git a/ui/imports/ui/components/environment-wizard/environment-wizard.js b/ui/imports/ui/components/environment-wizard/environment-wizard.js
deleted file mode 100644
index bc6cc55..0000000
--- a/ui/imports/ui/components/environment-wizard/environment-wizard.js
+++ /dev/null
@@ -1,568 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others /
-// /
-// All rights reserved. This program and the accompanying materials /
-// are made available under the terms of the Apache License, Version 2.0 /
-// which accompanies this distribution, and is available at /
-// http://www.apache.org/licenses/LICENSE-2.0 /
-/////////////////////////////////////////////////////////////////////////////////////////
-/*
- */
-
-//import { Meteor } from 'meteor/meteor';
-import { Session } from 'meteor/session';
-import { Template } from 'meteor/templating';
-import { ReactiveDict } from 'meteor/reactive-dict';
-import * as R from 'ramda';
-import { ConnectionTests } from '/imports/api/connection-tests/connection-tests';
-
-import { Environments } from '/imports/api/environments/environments';
-import { subsNameSupportedEnvs,
- isMonitoringSupported,
- isListeningSupported,
-} from '/imports/api/supported_environments/supported_environments';
-import { createNewConfGroup } from '/imports/api/environments/environments';
-import { store } from '/imports/ui/store/store';
-
-import './environment-wizard.html';
-
-import '/imports/ui/components/env-main-info/env-main-info';
-import '/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info';
-import '/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info';
-import '/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info';
-//import '/imports/ui/components/env-nfv-info/env-nfv-info';
-import '/imports/ui/components/env-aci-info/env-aci-info';
-import '/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info';
-import '/imports/ui/components/env-monitoring-info/env-monitoring-info';
-
-import {
- insert,
- update
-} from '/imports/api/environments/methods';
-
-import { insert as insertConnectionTests } from '/imports/api/connection-tests/methods';
-
-/*
- * Lifecycles
- */
-
-Template.EnvironmentWizard.onCreated(function(){
- let instance = this;
- instance.state = new ReactiveDict();
- instance.state.setDefault({
- environment: null,
- action: 'insert',
- isError: false,
- isSuccess: false,
- isMessage: false,
- message: null,
- disabled: false,
- connectionTestId: null
- });
-
- instance.autorun(function () {
- let controller = Iron.controller();
- controller.state.set('needsConfirmation', true);
- Session.set('isDirty', false);
- //let params = controller.getParams();
-
- //let envName = params.env;
- let envName = Session.get('wizardEnv');
- if (envName) {
- instance.subscribe('environments?name', envName);
- instance.state.set('action', 'update');
-
- } else {
- instance.state.set('action', 'insert');
- }
-
- instance.subscribe(subsNameSupportedEnvs);
-
- let action = instance.state.get('action');
- if (action === 'update') {
- Environments.find({'name': envName})
- .forEach(function (envItem) {
- instance.state.set('environmentModel', R.clone(envItem));
- });
- } else if (action === 'insert') {
- instance.state.set('environmentModel', generateNewEnv());
- }
- });
-
- instance.autorun(function () {
- let connectionTestId = instance.state.get('connectionTestId');
- if (R.isNil(connectionTestId)) { return; }
-
- instance.subscribe('connection_tests?_id', connectionTestId);
- ConnectionTests.find({ _id: connectionTestId }).forEach((connTest) => {
- if (connTest.status !== 'response') {
- return;
- }
-
- R.mapObjIndexed((success, groupName) => {
- if (success) {
- toastr.success(`${groupName} connection is OK`, { timeOut: 5000 });
- } else {
- toastr.error(`${groupName} connection is DOWN`, { timeOut: 5000 });
- }
- }, connTest.test_results);
- });
- });
-
- instance.storeUnsubscribe = store.subscribe(() => {
- let i18n = store.getState().api.i18n;
- instance.state.set('i18n', i18n);
- });
-
-
- let i18n = store.getState().api.i18n;
- instance.state.set('i18n', i18n);
-});
-
-Template.EnvironmentWizard.rendered = function(){
-
- // todo: refactor to use component - not jquery click
- $('.btnPrevious').click(function(){
- $('.nav-tabs > .active').prev('li').find('a').trigger('click');
- });
-
-};
-
-Template.EnvironmentWizard.onDestroyed(function () {
- let instance = this;
- instance.storeUnsubscribe();
-});
-
-/*
- * Helpers
- */
-
-Template.EnvironmentWizard.helpers({
- model: function () {
- let instance = Template.instance();
- let environmentModel = instance.state.get('environmentModel');
- return environmentModel;
- },
-
- tabs: function () {
- let instance = Template.instance();
-
- let environmentModel = instance.state.get('environmentModel');
- let action = instance.state.get('action');
- let disabled = instance.state.get('disabled');
- let activateNextTab = function (nextTabId) {
- instance.$('#link-' + nextTabId).tab('show');
- };
-
- if (R.isNil(environmentModel)) {
- return [];
- }
-
- let isMonSupportedRes = isMonitoringSupported(
- environmentModel.distribution,
- environmentModel.distribution_version,
- environmentModel.type_drivers,
- environmentModel.mechanism_drivers
- );
-
- let isMonitoringDisabled = disabled || !isMonSupportedRes;
-
-
- let monitoringDisabledMessage = null;
- if (isMonitoringDisabled && !isMonSupportedRes) {
- monitoringDisabledMessage = 'Distribution, type drivers and mechanism driver are not supported at this moment';
- }
-
- let isListeningSupportedRes = isListeningSupported(
- environmentModel.distribution,
- environmentModel.distribution_version,
- environmentModel.type_drivers,
- environmentModel.mechanism_drivers
- );
- let isListeningDisabled = disabled || !isListeningSupportedRes;
-
- let amqpTabDisabled = !(environmentModel.listen && isListeningSupportedRes);
- let monitoringTabDisabled = !(environmentModel.enable_monitoring && isMonSupportedRes);
- let isAciTabDisabled = !(environmentModel.aci_enabled);
-
- return [{
- label: 'Main Info',
- localLink: 'maininfo',
- defaultTab: true,
- disabled: false,
- templateName: 'EnvMainInfo',
- templateData: {
- model: environmentModel,
- disabled: disabled,
- isListeningDisabled: isListeningDisabled,
- isMonitoringDisabled: isMonitoringDisabled,
- setModel: function (newModel) {
- Session.set('isDirty', true);
-
- if (newModel.aci_enabled) {
- let monitoringGroup = getGroupInArray('Monitoring', newModel.configuration);
- newModel = setConfigurationGroup('Monitoring', monitoringGroup, newModel);
- } else {
- newModel = removeConfigurationGroup('Monitoring', newModel);
- }
-
- if (newModel.enable_monitoring) {
- let monitoringGroup = getGroupInArray('ACI', newModel.configuration);
- newModel = setConfigurationGroup('ACI', monitoringGroup, newModel);
- } else {
- newModel = removeConfigurationGroup('ACI', newModel);
- }
-
- if (newModel.listen) {
- let monitoringGroup = getGroupInArray('AMQP', newModel.configuration);
- newModel = setConfigurationGroup('AMQP', monitoringGroup, newModel);
- } else {
- newModel = removeConfigurationGroup('AMQP', newModel);
- }
-
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'endpoint-panel'),
- action: action,
- }
- }, {
- label: 'OS API Endpoint',
- localLink: 'endpoint-panel',
- disabled: false,
- templateName: 'EnvOsApiEndpointInfo',
- templateData: {
- model: getGroupInArray('OpenStack', environmentModel.configuration),
- disabled: disabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('OpenStack', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'db-credentials'),
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- }, {
- label: 'OS DB Credentials',
- localLink: 'db-credentials',
- disabled: false,
- templateName: 'EnvOpenStackDbCredentialsInfo',
- templateData: {
- model: getGroupInArray('mysql', environmentModel.configuration),
- disabled: disabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('mysql', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'master-host'),
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- }, {
- label: 'Master Host Credentials',
- localLink: 'master-host',
- disabled: false,
- templateName: 'EnvMasterHostCredentialsInfo',
- templateData: {
- model: getGroupInArray('CLI', environmentModel.configuration),
- disabled: disabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('CLI', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'amqp'),
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- }, {
- label: 'AMQP Credentials',
- localLink: 'amqp',
- disabled: amqpTabDisabled,
- templateName: 'EnvAmqpCredentialsInfo',
- templateData: {
- model: getGroupInArray('AMQP', environmentModel.configuration),
- disabled: disabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('AMQP', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'aci'),
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- },
- /* {
- label: 'NFV Credentials',
- localLink: 'nfv',
- disabled: false,
- templateName: 'EnvNfvInfo',
- templateData: {
- model: getGroupInArray('NFV_provider', environmentModel.configuration),
- disabled: disabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('NFV_provider', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'monitoringInfo'),
- action: action,
- }
- }, */
- {
- label: 'ACI Credentials',
- localLink: 'aci',
- disabled: isAciTabDisabled,
- templateName: 'EnvAciInfo',
- templateData: {
- model: getGroupInArray('ACI', environmentModel.configuration),
- disabled: isAciTabDisabled,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('ACI', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- onNextRequested: activateNextTab.bind(null, 'monitoringInfo'),
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- }, {
- label: 'Monitoring',
- localLink: 'monitoringInfo',
- disabled: monitoringTabDisabled,
- templateName: 'EnvMonitoringInfo',
- templateData: {
- model: getGroupInArray('Monitoring', environmentModel.configuration),
- disabled: isMonitoringDisabled,
- disabledMessage: monitoringDisabledMessage,
- setModel: function (newSubModel) {
- Session.set('isDirty', true);
- let model = instance.state.get('environmentModel');
- let newModel = setConfigurationGroup('Monitoring', newSubModel, model);
- instance.state.set('environmentModel', newModel);
- },
- action: action,
- onTestConnection: function () {
- testConnection(instance);
- },
- }
- }];
- },
-
- isDefaultTab: function (tab) {
- return tab.defaultTab;
- },
-
- environment: function () {
- let instance = Template.instance();
- return instance.state.get('environment');
- },
-
- getConfSection: function(sectionName, environment) {
- if (R.isNil(environment)) { return null; }
- let section = R.find(R.propEq('name', sectionName),
- environment.configuration);
- return section;
- },
-
- getState: function (key) {
- let instance = Template.instance();
- return instance.state.get(key);
- },
-});
-
-/*
- * Events
- */
-
-Template.EnvironmentWizard.events({
- /*
- 'click .toast' : function () {
- toastr.success('Have fun storming the castle!', 'Open Stack server says');
- },
- */
-
- // todo: research: seems not implemented
- /*
- 'click .fa-trash' : function () {
- Meteor.call('deleteRecipe', this._id);
- },
- */
-
- 'click .sm-submit-button': function () {
- let instance = Template.instance();
- doSubmit(instance);
- },
-
- 'click .sm-tab-link': function (event, _instance) {
- let isDisabled = event.target.dataset.isDisabled;
- if (isDisabled) {
- event.preventDefault();
- event.stopPropagation();
- return;
- }
- },
-});
-
-function generateNewEnv() {
- return Environments.schema.clean({});
-}
-
-function processActionResult(instance, error) {
- let action = instance.state.get('action');
-
- if (error) {
- instance.state.set('isError', true);
- instance.state.set('isSuccess', false);
- instance.state.set('isMessage', true);
-
- if (typeof error === 'string') {
- instance.state.set('message', error);
- } else {
- let message = error.message;
- if (error.errors) {
- message = R.reduce((acc, errorItem) => {
- return acc + '\n- ' + errorItem.name;
- }, message, error.errors);
- }
- instance.state.set('message', message);
- }
-
- } else {
- instance.state.set('isError', false);
- instance.state.set('isSuccess', true);
- instance.state.set('isMessage', true);
-
- if (action === 'insert') {
- instance.state.set('message', 'Record had been added successfully');
- instance.state.set('disabled', true);
- } else if (action === 'update') {
- instance.state.set('message', 'Record had been updated successfully');
- }
-
- Session.set('isDirty', false);
- }
-}
-
-function processInsertTestConnnectionResult(instance, error, itemId) {
- if (error) {
- instance.state.set('isError', true);
- instance.state.set('isSuccess', false);
- instance.state.set('isMessage', true);
-
- if (typeof error === 'string') {
- instance.state.set('message', error);
- } else {
- let message = error.message;
- if (error.errors) {
- message = R.reduce((acc, errorItem) => {
- return acc + '\n- ' + errorItem.name;
- }, message, error.errors);
- }
- instance.state.set('message', message);
- }
-
- return;
- }
-
- instance.state.set('connectionTestId', itemId);
-
- instance.state.set('isError', false);
- instance.state.set('isSuccess', true);
- instance.state.set('isMessage', true);
-
- instance.state.set('message', 'Connection send to be tested');
-}
-
-function getGroupInArray(groupName, array) {
- let group = R.find(R.propEq('name', groupName), array);
- return group ? group : createNewConfGroup(groupName);
-}
-
-function removeGroupInArray(groupName, array) {
- return R.reject(R.propEq('name', groupName), array);
-}
-
-function setConfigurationGroup(groupName, group, model) {
- let tempConfiguration = removeGroupInArray(groupName, model.configuration);
- let newConfiguration = R.append(group, tempConfiguration);
- let newModel = R.assoc('configuration', newConfiguration, model);
- return newModel;
-}
-
-function removeConfigurationGroup(groupName, model) {
- let newConfiguration = removeGroupInArray(groupName, model.configuration);
- let newModel = R.assoc('configuration', newConfiguration, model);
- return newModel;
-}
-
-function doSubmit(instance) {
- let action = instance.state.get('action');
- let environment = instance.state.get(
- 'environmentModel');
-
- instance.state.set('isError', false);
- instance.state.set('isSuccess', false);
- instance.state.set('isMessage', false);
- instance.state.set('message', null);
-
- switch (action) {
- case 'insert':
- insert.call({
- configuration: environment.configuration,
- distribution: environment.distribution,
- distribution_version: environment.distribution_version,
- name: environment.name,
- type_drivers: environment.type_drivers,
- mechanism_drivers: environment.mechanism_drivers,
- listen: environment.listen,
- enable_monitoring: environment.enable_monitoring,
- aci_enabled: environment.aci_enabled,
- }, processActionResult.bind(null, instance));
- break;
-
- case 'update':
- update.call({
- _id: environment._id,
- configuration: environment.configuration,
- //distribution: environment.distribution,
- //name: environment.name,
- type_drivers: environment.type_drivers,
- mechanism_drivers: environment.mechanism_drivers,
- listen: environment.listen,
- enable_monitoring: environment.enable_monitoring,
- aci_enabled: environment.aci_enabled,
- }, processActionResult.bind(null, instance));
- break;
-
- default:
- // todo
- break;
- }
-}
-
-function testConnection(instance) {
- let environmentModel = instance.state.get('environmentModel');
- insertConnectionTests.call({
- environment: environmentModel.name,
- test_configurations: environmentModel.configuration,
- }, processInsertTestConnnectionResult.bind(null, instance));
-}