diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 1b24a02d..d6fb60d7 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,8 +13,6 @@ Added Changed ======= -- Improved documentation about napp dependencies. -- Changed tests structure to separate unit and integration tests. Deprecated ========== diff --git a/ui/k-toolbar/main.kytos b/ui/k-toolbar/main.kytos index d71c563a..5ce5c296 100644 --- a/ui/k-toolbar/main.kytos +++ b/ui/k-toolbar/main.kytos @@ -1,20 +1,95 @@ @@ -46,6 +121,41 @@ module.exports = { }); }, + get_constrained_paths(){ + var self = this + var base_metrics = {} + var flexible_metrics = {} + for(var checked of self.checked_list) { + if (self.is_flexible[checked]) { + flexible_metrics[checked] = self.metrics[checked] + } else { + base_metrics[checked] = self.metrics[checked] + } + } + + $.ajax({ + async: true, + dataType: "json", + type: "POST", + contentType: "application/json", + data: JSON.stringify({"source": self.source_constrained, + "destination": self.destination_constrained, + "base_metrics": base_metrics, + "flexible_metrics": flexible_metrics, + "minimum_flexible_hits": self.minimum_flexible_hits + }), + + url: this.$kytos_server_api + "kytos/pathfinder/v2/best-constrained-paths", + success: function(data) { + if (data[0] !== undefined){ + self.paths = data[0]['paths'][0]; + } else { + self.paths = [] + } + self.show(); + } + }); + }, get_topology(){ var self = this $.ajax({ @@ -74,6 +184,43 @@ module.exports = { }, computed: { + metric_options(){ + var metric_options = {} + + var bandwidth_options = [] + var reliability_options = [] + var delay_options = [] + var utilization_options = [] + var priority_options = [] + var ownership_options = [] + + bandwidth_options.push({value: false, description: 'Bandwidth', selected: true}); + bandwidth_options.push({value: true, description: 'Bandwidth (Flexible)'}); + + reliability_options.push({value: false, description: 'Reliability', selected: true}); + reliability_options.push({value: true, description: 'Reliability (Flexible)'}); + + delay_options.push({value: false, description: 'Delay', selected: true}); + delay_options.push({value: true, description: 'Delay (Flexible)'}); + + utilization_options.push({value: false, description: 'Utilization', selected: true}); + utilization_options.push({value: true, description: 'Utilization (Flexible)'}); + + priority_options.push({value: false, description: 'Priority', selected: true}); + priority_options.push({value: true, description: 'Priority (Flexible)'}); + + ownership_options.push({value: false, description: 'Ownership', selected: true}); + ownership_options.push({value: true, description: 'Ownership (Flexible)'}); + + metric_options["bandwidth"] = bandwidth_options + metric_options["reliability"] = reliability_options + metric_options["delay"] = delay_options + metric_options["utilization"] = utilization_options + metric_options["priority"] = priority_options + metric_options["ownership"] = ownership_options + + return metric_options; + }, get_interfaces(){ var interfaces = [] $.each(this.switches, function(key, value){ @@ -106,8 +253,37 @@ module.exports = { source: "", destination: "", desired_links: [], - undesired_links: [] + undesired_links: [], + source_constrained: "", + destination_constrained: "", + checked_list: [], + metrics:{ + bandwidth: 0, + reliability: 0, + delay: 0, + utilization: 0, + priority: 0, + ownership: "" + }, + is_flexible:{ + bandwidth: false, + reliability: false, + delay: false, + utilization: false, + priority: false, + ownership: false + }, + minimum_flexible_hits: 0 } } } + + \ No newline at end of file