- // return
- $form.append($fieldset);
- return $form;
- },
- action : {
- parse : function(option) {
- switch (option) {
- case "addOutputPorts" :
- var h3 = "Add Output Port";
- var $modal = one.f.flows.modal.action.initialize(h3, one.f.flows.modal.action.body.addOutputPorts, one.f.flows.modal.action.add.addOutputPorts);
- $modal.modal();
- break;
- case "setVlanId" :
- var h3 = "Set VLAN ID";
- var placeholder = "VLAN Identification Number";
- var id = one.f.flows.id.modal.action.setVlanId;
- var help = "Range: 0 - 4095";
- var action = 'SET_VLAN_ID';
- var name = "VLAN ID";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "setVlanPriority" :
- var h3 = "Set VLAN Priority";
- var placeholder = "VLAN Priority";
- var id = one.f.flows.id.modal.action.setVlanPriority;
- var help = "Range: 0 - 7";
- var action = 'SET_VLAN_PCP';
- var name = "VLAN Priority";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "stripVlanHeader" :
- var name = "Strip VLAN Header";
- var action = 'POP_VLAN';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "modifyDatalayerSourceAddress" :
- var h3 = "Set Source MAC Address";
- var placeholder = "Source MAC Address";
- var id = one.f.flows.id.modal.action.modifyDatalayerSourceAddress;
- var help = "Example: 00:11:22:aa:bb:cc";
- var action = 'SET_DL_SRC';
- var name = "Source MAC";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyDatalayerDestinationAddress" :
- var h3 = "Set Destination MAC Address";
- var placeholder = "Destination MAC Address";
- var id = one.f.flows.id.modal.action.modifyDatalayerDestinationAddress;
- var help = "Example: 00:11:22:aa:bb:cc";
- var action = 'SET_DL_DST';
- var name = "Destination MAC";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyNetworkSourceAddress" :
- var h3 = "Set IP Source Address";
- var placeholder = "Source IP Address";
- var id = one.f.flows.id.modal.action.modifyNetworkSourceAddress;
- var help = "Example: 127.0.0.1";
- var action = 'SET_NW_SRC';
- var name = "Source IP";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyNetworkDestinationAddress" :
- var h3 = "Set IP Destination Address";
- var placeholder = "Destination IP Address";
- var id = one.f.flows.id.modal.action.modifyNetworkDestinationAddress;
- var help = "Example: 127.0.0.1";
- var action = 'SET_NW_DST';
- var name = "Destination IP";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyTosBits" :
- var h3 = "Set IPv4 ToS";
- var placeholder = "IPv4 ToS";
- var id = one.f.flows.id.modal.action.modifyTosBits;
- var help = "Range: 0 - 63";
- var action = 'SET_NW_TOS';
- var name = "ToS Bits";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyTransportSourcePort" :
- var h3 = "Set Transport Source Port";
- var placeholder = "Transport Source Port";
- var id = one.f.flows.id.modal.action.modifyTransportSourcePort;
- var help = "Range: 1 - 65535";
- var action = 'SET_TP_SRC';
- var name = "Source Port";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "modifyTransportDestinationPort" :
- var h3 = "Set Transport Destination Port";
- var placeholder = "Transport Destination Port";
- var id = one.f.flows.id.modal.action.modifyTransportDestinationPort;
- var help = "Range: 1 - 65535";
- var action = 'SET_TP_DST';
- var name = "Destination Port";
- var body = function() {
- return one.f.flows.modal.action.body.set(h3, placeholder, id, help);
- };
- var add = function($modal) {
- one.f.flows.modal.action.add.set(name, id, action, $modal);
- };
- var $modal = one.f.flows.modal.action.initialize(h3, body, add);
- $modal.modal();
- break;
- case "drop" :
- var name = "Drop";
- var action = 'DROP';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "loopback" :
- var name = "Loopback";
- var action = 'LOOPBACK';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "flood" :
- var name = "Flood";
- var action = 'FLOOD';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "softwarePath" :
- var name = "Software Path";
- var action = 'SW_PATH';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "hardwarePath" :
- var name = "Hardware Path";
- var action = 'HW_PATH';
- one.f.flows.modal.action.add.add(name, action);
- break;
- case "controller" :
- var name = "Controller";
- var action = 'CONTROLLER';
- one.f.flows.modal.action.add.add(name, action);
- break;
- }
- },
- initialize : function(h3, bodyCallback, addCallback) {
- var footer = one.f.flows.modal.action.footer();
- var $body = bodyCallback();
- var $modal = one.lib.modal.spawn(one.f.flows.id.modal.action.modal, h3, $body, footer);
- // bind close button
- $('#'+one.f.flows.id.modal.action.close, $modal).click(function() {
- $modal.modal('hide');
- });
- // bind add flow button
- $('#'+one.f.flows.id.modal.action.add, $modal).click(function() {
- addCallback($modal);
- });
- return $modal;
- },
- add : {
- addOutputPorts : function($modal) {
- var $options = $('#'+one.f.flows.id.modal.action.addOutputPorts).find('option:selected');
- var ports = '';
- var pid = '';
- $options.each(function(index, value) {
- ports = ports+$(value).text()+", ";
- pid = pid+$(value).attr('value')+",";
- });
- ports = ports.slice(0,-2);
- pid = pid.slice(0,-1);
- var $tr = one.f.flows.modal.action.table.add("Add Output Ports", ports);
- $tr.attr('id', 'addOutputPorts');
- $tr.data('action', 'OUTPUT='+pid);
- $tr.click(function() {
- one.f.flows.modal.action.add.modal.initialize(this);
- });
- one.f.flows.modal.action.table.append($tr);
- $modal.modal('hide');
- },
- add : function(name, action) {
- var $tr = one.f.flows.modal.action.table.add(name);
- $tr.attr('id', action);
- $tr.data('action', action);
- $tr.click(function() {
- one.f.flows.modal.action.add.modal.initialize(this);
- });
- one.f.flows.modal.action.table.append($tr);
- },
- set : function(name, id, action, $modal) {
- var $input = $('#'+id);
- var value = $input.val();
- var $tr = one.f.flows.modal.action.table.add(name, value);
- $tr.attr('id', action);
- $tr.data('action', action+'='+value);
- $tr.click(function() {
- one.f.flows.modal.action.add.modal.initialize(this);
- });
- one.f.flows.modal.action.table.append($tr);
- $modal.modal('hide');
- },
- remove : function(that) {
- $(that).remove();
- var $table = $('#'+one.f.flows.id.modal.action.table);
- if ($table.find('tbody').find('tr').size() == 0) {
- var $tr = $(document.createElement('tr'));
- var $td = $(document.createElement('td'));
- $td.attr('colspan', '3');
- $tr.addClass('empty');
- $td.text('No data available');
- $tr.append($td);
- $table.find('tbody').append($tr);
- }
- },
- modal : {
- initialize : function(that) {
- var h3 = "Remove Action";
- var footer = one.f.flows.modal.action.add.modal.footer();
- var $body = one.f.flows.modal.action.add.modal.body();
- var $modal = one.lib.modal.spawn(one.f.flows.id.modal.action.modal.modal, h3, $body, footer);
-
- // bind cancel button
- $('#'+one.f.flows.id.modal.action.modal.cancel, $modal).click(function() {
- $modal.modal('hide');
- });
-
- // bind remove button
- $('#'+one.f.flows.id.modal.action.modal.remove, $modal).click(function() {
- one.f.flows.modal.action.add.remove(that);
- $modal.modal('hide');
- });
-
- $modal.modal();
- },
- body : function() {
- var $p = $(document.createElement('p'));
- $p.append("Remove this action?");
- return $p;
- },
- footer : function() {
- var footer = [];
-
- var removeButton = one.lib.dashlet.button.single("Remove Action", one.f.flows.id.modal.action.modal.remove, "btn-danger", "");
- var $removeButton = one.lib.dashlet.button.button(removeButton);
- footer.push($removeButton);
-
- var cancelButton = one.lib.dashlet.button.single("Cancel", one.f.flows.id.modal.action.modal.cancel, "", "");
- var $cancelButton = one.lib.dashlet.button.button(cancelButton);
- footer.push($cancelButton);
-
- return footer;
- }
- }
- },
- table : {
- add : function(action, data, type) {
- var $tr = $(document.createElement('tr'));
- var $td = $(document.createElement('td'));
- $td.append(action);
- $tr.append($td);
- var $td = $(document.createElement('td'));
- if (data != undefined) $td.append(data);
- $tr.append($td);
- var $td = $(document.createElement('td'));
- if (type != undefined) $td.append(type);
- $tr.append($td);
- return $tr;
- },
- append : function($tr) {
- var $table = $('#'+one.f.flows.id.modal.action.table);
- var $empty = $table.find('.empty').parent();
- if ($empty.size() > 0) $empty.remove();
- $table.append($tr);
- }
- },
- body : {
- common : function() {
- var $form = $(document.createElement('form'));
- var $fieldset = $(document.createElement('fieldset'));
- return [$form, $fieldset];
- },
- addOutputPorts : function() {
- var common = one.f.flows.modal.action.body.common();
- var $form = common[0];
- var $fieldset = common[1];
- // output port
- $label = one.lib.form.label("Select Output Ports");
- var ports = one.f.flows.registry.nodeports[one.f.flows.registry.currentNode]['ports'];
- $select = one.lib.form.select.create(ports, true);
- $select.attr('id', one.f.flows.id.modal.action.addOutputPorts);
- one.lib.form.select.prepend($select, {'':'Select a Port'});
- $fieldset.append($label).append($select);
- $form.append($fieldset);
- return $form;
- },
- set : function(label, placeholder, id, help) {
- var common = one.f.flows.modal.action.body.common();
- var $form = common[0];
- var $fieldset = common[1];
- // input
- $label = one.lib.form.label(label);
- $input = one.lib.form.input(placeholder);
- $input.attr('id', id);
- $help = one.lib.form.help(help);
- // append
- $fieldset.append($label).append($input).append($help);
- $form.append($fieldset);
- return $form;
- }
- },
- footer : function() {
- var footer = [];
- var addButton = one.lib.dashlet.button.single("Add Action", one.f.flows.id.modal.action.add, "btn-primary", "");
- var $addButton = one.lib.dashlet.button.button(addButton);
- footer.push($addButton);
-
- var closeButton = one.lib.dashlet.button.single("Close", one.f.flows.id.modal.action.close, "", "");
- var $closeButton = one.lib.dashlet.button.button(closeButton);
- footer.push($closeButton);
-
- return footer;
- }
- },
- footer : function() {
- var footer = [];