--- /dev/null
+/*
+ * Copyright (C) 2014 SDN Hub
+ *
+ * Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.
+ * You may not use this file except in compliance with this License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/gpl-3.0.txt
+ *
+ * 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.
+ */
+
+var url = "http://" + location.hostname + ":8080";
+var hostList = {};
+
+function updateHosts() {
+ var serverSelect = document.getElementById("servers");
+
+ $.getJSON(url.concat("/v1.0/hosts"), function(hosts){
+ $.each(hosts, function(key, value){
+ hostList[key] = value.mac
+ el = document.createElement("option");
+ el.textContent = key;
+ el.value = key;
+ serverSelect.appendChild(el);
+ });
+ });
+}
+
+updateHosts();
+
+/* Format of the POST data is as follows:
+
+{'servers': list of {'ip': ip string, 'mac': mac string},
+'virtual_ip': ip string,
+'rewrite_ip': 0 or 1 }
+
+ */
+
+function makePostData() {
+ var vip = $('#virtual-ip').val();
+ var servers = $('#servers').val();
+ var rewriteIP = $('#rewrite-ip').is(':checked');
+ var lbConfig = {};
+ lbConfig['servers'] = [];
+
+ if (servers != undefined) {
+ for (i=0; i<servers.length;i++) {
+ var server = servers[i];
+ lbConfig['servers'].push({'ip': server, 'mac': hostList[server]});
+ }
+ }
+ lbConfig['virtual_ip'] = vip;
+
+ if (rewriteIP)
+ lbConfig['rewrite_ip'] = 1;
+ else
+ lbConfig['rewrite_ip'] = 0;
+
+ return lbConfig;
+}
+
+
+function createLBPool() {
+ $('#post-status').html('');
+
+ var lbConfig = makePostData();
+ if (lbConfig == undefined)
+ return;
+
+ $.post(url.concat("/v1.0/loadbalancer/create"), JSON.stringify(lbConfig), function() {
+ }, "json")
+ .done(function() {
+ $('#post-status').html('');
+ $('#main').html('<h2>Load-balancer pool created</h2><p>Successfully created load-balancer pool. Start sending requests to the virtual IP.</p><button class="pure-button pure-button-primary" onclick="deleteLBPool(\''+lbConfig.virtual_ip+'\')">Delete LB pool</button>');
+ })
+ .fail(function() {
+ $('#post-status').html('<p style="color:red; background:silver;">Error: Load-balancer pool creation failed. Please verify your input.');
+ });
+}
+
+function deleteLBPool(vip) {
+ if (typeof(vip)==='undefined') {
+ vip = $('#virtual-ip').val();
+ }
+
+ $('#post-status').html('');
+
+ lbConfig = {};
+ lbConfig['virtual_ip'] = vip;
+ lbConfig['rewrite_ip'] = 1;
+ lbConfig.servers = [];
+
+ $.post(url.concat("/v1.0/loadbalancer/delete"), JSON.stringify(lbConfig), function() {
+ }, "json")
+ .done(function() {
+ // In direct call cases where VIP was pre-specified in onClick,
+ // it will be best to direct to the original main even before
+ // the delete pool button click
+ $('#post-status').html('');
+ $('#main').html('<h2>Load-balancer pool deleted</h2><p>Successfully deleted load-balancer pool.</p><button class="pure-button pure-button-primary" onclick="window.location.reload()">Create LB pool</button>');
+ })
+ .fail(function() {
+ $('#post-status').html('<p style="color:red; background:silver;">Error: Load-balancer pool deletion failed. Please verify your input.');
+ });
+}
+