def mpls_remove_fns(desc): fns_id= libnetvirt.getUuidFromFNS(desc) print "remove id " + str(fns_id) + "num of endpoints: " + str(libnetvirt.getNepFromFNS(desc)) #libnetvirt.printFNS(desc) D = Database ('libnetvirt.sqlite') for i in range(0,libnetvirt.getNepFromFNS(desc)): ep = libnetvirt.getEndpoint(desc,i) r_id = libnetvirt.getSwIdFromEp(ep) # Get router name #r_name = str(libnetvirt.getSwIdFromEp(ep)) r_name = D.getRouterName(r_id) # Get the router user name r_uname = D.getRouterUserName(r_id) vlan = libnetvirt.getVlanFromEp(ep) pe_if = libnetvirt.getPortFromEp vrf = 'vrf' + str(fns_id) #Calling the scripts for configuration. Uncomment when the network is available NM = NetworkManager(r_name, r_uname) if NM != None: NM.stop_configuration(vlan, vrf,pe_if) NM.close_ssh() else: print "Error in applying configuration" return 0
def start(self): networkManager = NetworkManager() networkManager.start() zoneManager = ZoneManager() zoneManager.start() serialDataManager = SerialDataManager() serialDataManager.start()
def mpls_create_fns(desc): print "create fns" #libnetvirt.printFNS(desc) fns_id= libnetvirt.getUuidFromFNS(desc) D = Database ('libnetvirt.sqlite') for i in range(0,libnetvirt.getNepFromFNS(desc)): ep = libnetvirt.getEndpoint(desc,i) r_id = libnetvirt.getSwIdFromEp(ep) # Get router name #r_name = str(libnetvirt.getSwIdFromEp(ep)) r_name = D.getRouterName(r_id) # Get the router user name r_uname = D.getRouterUserName(r_id) # Get the router interface r_interface = D.getRouterInterface(r_id)+str(libnetvirt.getPortFromEp(ep)) #r_uname = "root" #r_interface = "eth3" r_d_net = '192.66.23.0' pe_address = libnetvirt.getAddressFromEp(ep) #ce_address = libnetvirt.getAddressCEFromEp(ep) #we need net address for CE tmp = commands.getoutput('ipcalc -n ' + str(pe_address)) tmp = tmp.split() ce_net = tmp[16] vlan = libnetvirt.getVlanFromEp(ep) vrf = 'vrf' + str(fns_id) #get address from global configuration database r_d = r_d_net + ':' + str(fns_id) #call script for PE configuration #Calling the scripts for configuration. Uncomment when the network is available NM = NetworkManager(r_name, r_uname) if NM != None: NM.start_configuration(r_interface, pe_address, ce_net, r_d, vlan, vrf) NM.close_ssh() else: print "Error in applying configuration" return 0
class ActiveSyncEngine: def __init__(self, passed_config): self.state = SYNC_STATE.STOP self.config = passed_config self.network = NetworkManager(passed_config) def start(self): thread.start_new_thread(self.start_sync_engine, ()) def stop_sync_engine(self, error_message=None): logging.info("Sync stopped: %s" % error_message) self.state = SYNC_STATE.STOP # threaded sync engine def start_sync_engine(self): logging.info("Beginning sync") self.state = SYNC_STATE.START # Question 1, do I know my server with certainty (updated in the last 10 minutes for now, 24 hours eventually) if (self.network.is_options_required()): logging.debug("NEED to send OPTIONS") (status, message) = self.network.perform_options(self.handle_http_error) if (status != STATE_STATUS.SUCCESS): self.stop_sync_engine(message) logging.fatal("Fatal error with options (%s - %s)" % (status, message)) else: logging.debug("DO NOT NEED to send OPTIONS") # Question 2, do I have a policy key? if (not self.network.is_policy_key_valid()): logging.debug("NEED to send PROVISIONING") (status, message) = self.network.perform_provisioning() if (status != STATE_STATUS.SUCCESS): self.stop_sync_engine() return else: logging.debug("DO NOT NEED to send OPTIONS") # Startup always includes a FolderSync (status, message) = self.network.perform_foldersync() if (status != STATE_STATUS.SUCCESS): self.stop_sync_engine() return # Startup always includes one or more Syncs # Add all HTTP error codes here and some sort of remediation def handle_http_error(self, status_code, message): self.network.clear_http_session() logging.fatal("Fatal error, %d is not a good code! (%s)" % (status_code, message)) return (status_code, "EPIC FAIL")
def menu(): options = {1:"network inventory info.",2:" all devices info.",3:"device info.",4:"device description.(!!!!)"} print "------------------------------" print "MENU" print "------------------------------" for key in options.keys(): print str(key) + ")Print " + options[key] choise = raw_input("Enter: ") return int(choise) if __name__ == "__main__": #print "Starting network manager..." try: print "Starting network manager..." nm = NetworkManager('192.168.111.138') print "Network manager started." while(1): option = menu() if option == 1: nm.printInventory() elif option == 2: nm.printDeviceInfo() elif option == 3: info_type = raw_input("Enter information type: ") device_id = raw_input("Enter device_id: ") nm.printDataForDevice(info_type.rstrip(),device_id.rstrip()) else: exit() except Exception,exception:
def main(argv=None): '''Command line options.''' program_name = os.path.basename(sys.argv[0]) program_version = "v0.2" program_build_date = "%s" % __updated__ program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse program_longdesc = '''''' # optional - give further explanation about what the program does program_license = "Copyright 2014 user_name (organization_name) \ Licensed under the Apache License 2.0\nhttp://www.apache.org/licenses/LICENSE-2.0" if argv is None: argv = sys.argv[1:] try: # setup option parser usage= "\t-e --create-ovs=IPADDRESS -t=TOPOLOGYNAME (create OVS network)\n\t-p tcl/r10.tcl (parse r10.tcl file and save database)\n\t-s r20 (show the graph of r20 topology)" parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license,usage=usage) parser.add_option("-i", "--in", dest="infile", help="set input path [default: %default]", metavar="FILE") parser.add_option("-o", "--out", dest="outfile", help="set output path [default: %default]", metavar="FILE") parser.add_option("-l", dest="list", help="list elements of database [all, host, topology, link, node, sflow]"); parser.add_option("-s", "--show", dest="show", help="show a network graph of topology",metavar="topology"); parser.add_option("-c","--clear", dest="clear", help="clear entries on the inputted argument [all, host, topology, link, node, sflow]",metavar="element"); parser.add_option("-p", dest="parse", help="parse Brite topology file", metavar="FILE") parser.add_option("-f", "--flow", dest="flow", help="get a routing table of sdn controller ",metavar="IP-address of SDN controller"); #parser.add_option("-a", "--alarm", action="store_true",dest="alarm",default=False, help="get the alarm number from IDS "); eostgroup = OptionGroup(parser, "Experiment options") eostgroup.add_option("-e", action="store_true", dest="experimental",default=False, help="create virtual SDN network") eostgroup.add_option("-j", dest="sampling", help="set sampling configuration json file", metavar="FILE") eostgroup.add_option("-t", "--topology", dest="topology", help="set topology ", metavar="NAME") eostgroup.add_option("--create-ovs", dest="create_ovs_target", help="create OVS network at the target host",metavar="TARGET-IP-ADDRESS") eostgroup.add_option("--clear-ovs", dest="clear_ovs_target", help="clear OVS network at the target host",metavar="TARGET-IP-ADDRESS") eostgroup.add_option("--create-sflow", dest="create_sflow_target", help="create sflow agnets at the target host",metavar="TARGET-IP-ADDRESS") eostgroup.add_option("--clear-sflow", dest="clear_sflow_target", help="clear sflow agnets at the target host",metavar="TARGET-IP-ADDRESS") parser.add_option_group(eostgroup) hostgroup = OptionGroup(parser, "Host registration options") hostgroup.add_option("-r", "--register-host", action="store_true", dest="register_host",default=False, help="register host") hostgroup.add_option("--host-ip", dest="hostip", help="set machine ip address", metavar="IP-ADDRESS") hostgroup.add_option("--user-id", dest="userid", help="set user id") hostgroup.add_option("--password", dest="password", help="set user password") hostgroup.add_option("--controller-ip", dest="controllerip", help="set SDN controller ip") hostgroup.add_option("--inter-ip", dest="interip", help="set the internal ip of the host") parser.add_option_group(hostgroup) # set defaults parser.set_defaults(outfile="./out.txt", infile="./in.txt",role="ovs-host",controllerip="",interip="") dbmanager = DBManager(debug=DEBUG) hostmanager = HostManager(dbmanager) networkmanager = NetworkManager(dbmanager,hostmanager,DEBUG) # process options (opts, args) = parser.parse_args(argv) if opts.list : if opts.list == "all" : dbmanager.list_DB_element("host") dbmanager.list_DB_element("topology") dbmanager.list_DB_element("link") dbmanager.list_DB_element("node") dbmanager.list_DB_element("sflow") elif opts.list == "host": dbmanager.list_DB_element("host") elif opts.list == "topology": dbmanager.list_DB_element("topology") elif opts.list == "link": dbmanager.list_DB_element("link") elif opts.list == "node": dbmanager.list_DB_element("node") elif opts.list == "sflow": dbmanager.list_DB_element("sflow") if opts.parse : topologyparser = Parser(dbmanager,opts.parse,DEBUG) topologyparser.parse_topology() if opts.flow: networkmanager.get_route_table(opts.flow) if opts.show: networkmanager.draw_network(opts.show) if opts.experimental: if opts.create_ovs_target: print("create ovs") networkmanager.generate_OVS_network(opts.topology, opts.create_ovs_target) elif opts.clear_ovs_target: print("clear ovs") print(opts.clear_ovs_target) networkmanager.remove_OVS_network(opts.clear_ovs_target) elif opts.create_sflow_target: print("create sflow agents") node_data = None if (opts.sampling != None): with open(opts.sampling) as json_file: input_data = json.load(json_file) node_data = input_data["nodes"] networkmanager.create_sflow_agnets(opts.create_sflow_target,node_data) print(opts.create_sflow_target) elif opts.clear_sflow_target: print("clear sflow agents") networkmanager.clear_sflow_agnets(opts.clear_sflow_target) print(opts.clear_sflow_target) if opts.clear : if opts.clear == "all": hostmanager.clear_hosts() dbmanager.execute_sql_command("drop table topology") dbmanager.execute_sql_command("drop table link") dbmanager.execute_sql_command("drop table node") dbmanager.execute_sql_command("drop table sflow") elif opts.clear == "host": hostmanager.clear_hosts() elif opts.clear == "topology": dbmanager.execute_sql_command("drop table topology") elif opts.clear == "link": dbmanager.execute_sql_command("drop table link") elif opts.clear == "node": dbmanager.execute_sql_command("drop table node") elif opts.clear == "sflow": dbmanager.execute_sql_command("drop table sflow") if opts.register_host: hostmanager.register_host(opts.hostip,opts.controllerip,opts.userid,opts.password,"None",opts.interip) # MAIN BODY # if len(argv) == 0: parser.print_help() except Exception, e: indent = len(program_name) * " " sys.stderr.write(program_name + ": " + repr(e) + "\n") sys.stderr.write(indent + " for help use --help") return 2
def __init__(self, passed_config): self.state = SYNC_STATE.STOP self.config = passed_config self.network = NetworkManager(passed_config)
def __init__(self): self.clients = {} self.network_manager = NetworkManager(self.clients) print("Init done, server started")