UNPKG

kaanalnet

Version:

Virtual Network Emulator Lab for SDN and traditional networks

136 lines (117 loc) 5.11 kB
util = require('util') request = require('request-json'); extend = require('util')._extend switchctrl = require('./builder/switchCtrl') async = require 'async' log = require('./utils/logger').getLogger() log.info "Switches Logger test message" #global parameter #log = require('./app').log class switches constructor: (sw)-> @config = extend {}, sw @config.make ?= "bridge" @config.ofversion ?= 1.0 @status = {} @statistics = {} @tapifs = [] log.info "Switches - constructor - new switch object created " + JSON.stringify @config @tapindex = 0 create: (callback)-> log.info "Switches - creating a switch with config " + JSON.stringify @config switchctrl.create @config, (res) => #console.log "post switch response" +res log.info "Switches - switch creation result " + JSON.stringify res @uuid = res.id @config.status = res.status callback res del: (callback)-> log.info "Switches - deleting a switch " + JSON.stringify @config @delLinks() switchctrl.del @uuid, (res) => #console.log res log.info "Switches - switch deletion result " + res @config.status = res.status callback res get:()-> "uuid":@uuid "config":@config "tapifs": @tapifs #"status":@status #"statistics":@statistics stop:(callback)-> log.info "Switches - stoping a switch " + JSON.stringify @config switchctrl.stop @uuid, (res) => log.info "Switches - switch stop result " + JSON.stringify res @config.status = res.status #console.log res callback res start:(callback)-> log.info "Switches - starting a switch " + JSON.stringify @config switchctrl.start @uuid, (res) => log.info "Switches - switch start result " + JSON.stringify res @config.status = res.status #console.log res callback res getstatus : (callback)-> log.info "getstatus called" + @uuid switchctrl.get @uuid, (result) => log.info "Switches getstatus result " + JSON.stringify result @config.status = result.status callback result connect:(ifname,callback)-> val = "ifname": ifname log.info "Switches - connecting a interface #{ifname} in switch #{@config.name}" switchctrl.addInterface @uuid, val, (res) => log.info "Switches - connect- interface #{ifname} connection result " + JSON.stringify res #console.log res callback res createTapInterfaces:(ifname1,ifname2)-> log.info "Switches - createTapInterfaces - input #{ifname1} #{ifname2}" result = switchctrl.CreateTapInterfaces ifname1, ifname2 log.info "Switches - createTapInterfaces - result " + JSON.stringify result return result addTapInterface:(ifname,characteristics)-> #@tapifs.push ifname if ifname? tapif = "name": ifname "config": characteristics log.info "addTapInterface " + JSON.stringify tapif @tapifs.push tapif #@tapifs.push ifname if ifname? #log.info "Switches - addTapInterface - ifname " + ifname #@config = extend {}, characteristics return connectTapInterfaces:(callback)-> log.info "Switches - connectTapInterfaces ...connecting the inter switch links" async.eachSeries @tapifs, (tapif,callback) => log.info "connectTapInterfaces " + JSON.stringify tapif @connect tapif.name,(result)=> callback() ,(err) => if err log.error "connectTapInterfaces switches error occured " + JSON.stringify err return callback false else log.info "connectTapInterfaces Switches all are processed " return callback true setLinkChars : (callback)-> log.info "Switches: setting the link characterstics " + @config.name for tapif in @tapifs log.info "Switchs setLinkChars " + JSON.stringify tapif switchctrl.setLinkChars @uuid, tapif,(result) => log.info "Switches: setLinkChars result " + result callback result delLinks : ()-> for tapif in @tapifs log.info "deleting the link " + JSON.stringify tapif switchctrl.dellink tapif.name,(result) => log.info "Switches: del link result " + result switchStatus:()-> #Todo be done statistics:()-> #Todo ##################################################################################################### module.exports = switches #Todo items: HTTP Request json timeout, response code to be checked