Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / launchpad / src / cloud-account.js
diff --git a/skyquake/plugins/launchpad/src/cloud-account.js b/skyquake/plugins/launchpad/src/cloud-account.js
new file mode 100644 (file)
index 0000000..e868573
--- /dev/null
@@ -0,0 +1,315 @@
+
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+var CloudAccountCreateController = function($timeout, $state, $stateParams) {
+  var self = this;
+  var CloudAccountStore = require('../missioncontrol/cloud_account/cloudAccountStore')
+  var CloudAccountActions = require('../missioncontrol/cloud_account/cloudAccountActions')
+  self.CloudAccountStore = CloudAccountStore;
+  self.accountType = [
+    // {
+    //   "name":"AWS",
+    //   "account-type":"aws",
+    // },
+    {
+      "name":"OpenStack",
+      "account-type":"openstack",
+    },{
+      "name":"Cloudsim",
+      "account-type":"cloudsim"
+    },{
+      "name":"OpenMano",
+      "account-type":"openmano"
+    }
+  ];
+  self.params = {
+    "aws": [
+        {
+          label: "Key",
+          ref: 'key'
+        },
+        {
+          label: "Secret",
+          ref: 'secret'
+        },
+        {
+          label: "Availability Zone",
+          ref: 'availability-zone'
+        },
+        {
+          label: "Default Subnet ID",
+          ref: 'default-subnet-id'
+        },
+        {
+          label: "Region",
+          ref: 'region'
+        },
+        {
+          label: "VPC ID",
+          ref: 'vpcid'
+        },
+        {
+          label: "SSH Key",
+          ref: 'ssh-key'
+        }
+      ],
+    "openstack": [
+        {
+          label: "Key",
+          ref: 'key'
+        },
+        {
+          label: "Secret",
+          ref: 'secret'
+        },
+        {
+          label: "Authentication URL",
+          ref: 'auth_url'
+        },
+        {
+          label: "Tenant",
+          ref: 'tenant'
+        },
+        {
+          label: 'Management Network',
+          ref: 'mgmt-network'
+        }
+      ],
+    "openmano": [
+        {
+          label: "Host",
+          ref: 'host'
+        },
+        {
+          label: "Port",
+          ref: 'port'
+        },
+        {
+          label: "Tenant ID",
+          ref: 'tenant-id'
+        }
+      ]
+  }
+  self.cloud = {
+    name: '',
+    'account-type': 'openstack'
+  };
+  self.loadDashboard = function() {
+     $state.go('/launchpad', {management_domain: $stateParams.management_domain});
+  }
+  self.openAbout = function() {
+      $state.go('lp-about', {management_domain: $stateParams.management_domain});
+  }
+  self.openDebug = function() {
+      $state.go('lp-debug', {management_domain: $stateParams.management_domain});
+  }
+  self.create = function() {
+    if (self.cloud.name == "") {
+      CloudAccountActions.validateError("Please give the cloud account a name");
+      return;
+    } else {
+      var type = self.cloud['account-type'];
+      if (typeof(self.params[type]) != 'undefined') {
+        var params = self.params[type];
+        for (var i = 0; i < params.length; i++) {
+          var param = params[i].ref;
+          if (typeof(self.cloud[type]) == 'undefined' || typeof(self.cloud[type][param]) == 'undefined' || self.cloud[type][param] == "") {
+
+            CloudAccountActions.validateError("Please fill all account details");
+            return;
+          }
+        }
+      }
+    }
+    CloudAccountActions.validateReset();
+     CloudAccountStore.create(self.cloud).then(function() {
+      $state.go('/launchpad',{management_domain: $stateParams.management_domain});
+     });
+  }
+  self.cancel = function() {
+    $state.go('/launchpad',{management_domain: $stateParams.management_domain});
+  }
+  self.store = CloudAccountStore;
+  require('../utils/utils.js').isNotAuthenticated(window.location, function() {
+      $state.go('login');
+    });
+};
+
+var CloudAccountEditController = function($timeout, $state, $stateParams) {
+  var self = this;
+  var CloudAccountStore = require('../missioncontrol/cloud_account/cloudAccountStore');
+  self.CloudAccountStore = CloudAccountStore;
+  var cloud_account_name = $stateParams.cloud_account;
+
+  // Mark this is edit
+  self.edit = true;
+
+  self.accountType = [
+    // {
+    //   "name":"AWS",
+    //   "account-type":"aws",
+    // },
+    {
+      "name":"OpenStack",
+      "account-type":"openstack",
+    },{
+      "name":"Cloudsim",
+      "account-type":"cloudsim"
+    },{
+      "name":"OpenMano",
+      "account-type":"openmano"
+    }
+  ];
+  self.params = {
+    "aws": [
+        {
+          label: "Key",
+          ref: 'key'
+        },
+        {
+          label: "Secret",
+          ref: 'secret'
+        },
+        {
+          label: "Availability Zone",
+          ref: 'availability-zone'
+        },
+        {
+          label: "Default Subnet ID",
+          ref: 'default-subnet-id'
+        },
+        {
+          label: "Region",
+          ref: 'region'
+        },
+        {
+          label: "VPC ID",
+          ref: 'vpcid'
+        },
+        {
+          label: "SSH Key",
+          ref: 'ssh-key'
+        }
+      ],
+    "openstack": [
+        {
+          label: "Key",
+          ref: 'key'
+        },
+        {
+          label: "Secret",
+          ref: 'secret'
+        },
+        {
+          label: "Authentication URL",
+          ref: 'auth_url'
+        },
+        {
+          label: "Tenant",
+          ref: 'tenant'
+        },
+        {
+          label: 'Management Network',
+          ref: 'mgmt-network'
+        }
+      ],
+    "openmano": [
+        {
+          label: "Host",
+          ref: 'host'
+        },
+        {
+          label: "Port",
+          ref: 'port'
+        },
+        {
+          label: "Tenant ID",
+          ref: 'tenant'
+        },
+        {
+          label: "Data Center ID",
+          ref: 'datacenter'
+        }
+      ]
+  };
+  self.cloud = {
+    name: ''
+  };
+
+  // Setup listener
+  var listener = function(data) {
+    $timeout(function() {
+      console.log('updating', data);
+      self.cloud.name = data.cloudAccount.name;
+      var accountType = self.cloud['account-type'] = data.cloudAccount['account-type'];
+      if (data.cloudAccount[accountType]) {
+        // There are extra params.
+        // Initialize object
+        self.cloud[accountType] = {};
+        // Iterate over them and assign to proper keys
+        for (var k in data.cloudAccount[accountType]) {
+          self.cloud[accountType][k] = data.cloudAccount[accountType][k];
+        }
+      }
+    });
+  };
+
+  CloudAccountStore.listen(listener);
+  require('../utils/utils.js').isNotAuthenticated(window.location, function() {
+      CloudAccountStore.unlisten(listener);
+      $state.go('login')
+    });
+  // Get the cloud account
+  CloudAccountStore.getCloudAccount($stateParams.cloud_account);
+  self.store = CloudAccountStore;
+  self.update = function() {
+    if (self.cloud.name == "") {
+      console.log('pop')
+      return;
+    }
+     CloudAccountStore.update(self.cloud).then(function() {
+      CloudAccountStore.unlisten(listener);
+      $state.go('/launchpad',{management_domain: $stateParams.management_domain});
+     });
+  };
+  self.loadDashboard = function() {
+     $state.go('/launchpad', {management_domain: $stateParams.management_domain});
+  }
+  self.openAbout = function() {
+      $state.go('lp-about', {management_domain: $stateParams.management_domain});
+  }
+  self.openDebug = function() {
+      $state.go('lp-debug', {management_domain: $stateParams.management_domain});
+  }
+  self.delete = function() {
+    console.log('Deleting cloud account', cloud_account_name);
+    CloudAccountStore.delete(cloud_account_name).then(function() {
+      CloudAccountStore.unlisten(listener);
+      $state.go('/launchpad',{management_domain: $stateParams.management_domain});
+    });
+  };
+  self.cancel = function() {
+    CloudAccountStore.unlisten(listener);
+   $state.go('/launchpad',{management_domain: $stateParams.management_domain});
+  }
+};
+
+module.exports = {
+  CloudAccountCreateController: CloudAccountCreateController,
+  CloudAccountEditController: CloudAccountEditController
+};