def doConfigBackUp(module, prompt, answer): host = module.params['host'] server = module.params['serverip'] username = module.params['serverusername'] password = module.params['serverpassword'] protocol = module.params['protocol'].lower() rcPath = module.params['rcpath'] configType = module.params['configType'] confPath = rcPath + host + '_' + configType + '.txt' retVal = '' # config backup command happens here command = "copy " + configType + " " + protocol + " " + protocol + "://" command = command + username + "@" + server + "/" + confPath command = command + " vrf management\n" cnos.debugOutput(command + "\n") # cnos.checkForFirstTimeAccess(module, command, 'yes/no', 'yes') cmd = [] if (protocol == "scp"): scp_cmd1 = [{'command': command, 'prompt': 'timeout:', 'answer': '0'}] scp_cmd2 = [{ 'command': '\n', 'prompt': 'Password:'******'answer': password }] cmd.extend(scp_cmd1) cmd.extend(scp_cmd2) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "sftp"): sftp_cmd = [{ 'command': command, 'prompt': 'Password:'******'answer': password }] cmd.extend(sftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "ftp"): ftp_cmd = [{ 'command': command, 'prompt': 'Password:'******'answer': password }] cmd.extend(ftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "tftp"): command = "copy " + configType + " " + protocol + " " + protocol command = command + "://" + server + "/" + confPath command = command + " vrf management\n" # cnos.debugOutput(command) tftp_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(tftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) else: return "Error-110" return retVal
def main(): module = AnsibleModule( argument_spec=dict( outputfile=dict(required=True), host=dict(required=False), username=dict(required=False), password=dict(required=False, no_log=True), enablePassword=dict(required=False, no_log=True),), supports_check_mode=False) command = 'show running-config' outputfile = module.params['outputfile'] output = '' cmd = [{'command': command, 'prompt': None, 'answer': None}] output = output + str(cnos.run_cnos_commands(module, cmd)) # Save it into the file file = open(outputfile, "a") file.write(output) file.close() errorMsg = cnos.checkOutputForError(output) if(errorMsg is None): module.exit_json(changed=True, msg="Running Configuration saved in file ") else: module.fail_json(msg=errorMsg)
def main(): module = AnsibleModule(argument_spec=dict( outputfile=dict(required=True), host=dict(required=False), username=dict(required=False), password=dict(required=False, no_log=True), enablePassword=dict(required=False, no_log=True), deviceType=dict(required=True), ), supports_check_mode=False) command = 'reload' outputfile = module.params['outputfile'] output = '' cmd = [{ 'command': command, 'prompt': 'reboot system? (y/n): ', 'answer': 'y' }] output = output + str(cnos.run_cnos_commands(module, cmd)) # Save it into the file file = open(outputfile, "a") file.write(output) file.close() errorMsg = cnos.checkOutputForError(output) if (errorMsg in "Device Response Timed out"): module.exit_json(changed=True, msg="Device is Reloading. Please wait...") else: module.fail_json(msg=errorMsg)
def main(): module = AnsibleModule( argument_spec=dict( outputfile=dict(required=True), host=dict(required=False), username=dict(required=False), password=dict(required=False, no_log=True), enablePassword=dict(required=False, no_log=True), deviceType=dict(required=True),), supports_check_mode=False) command = 'write erase' outputfile = module.params['outputfile'] output = '' cmd = [{'command': command, 'prompt': '[n]', 'answer': 'y'}] output = output + str(cnos.run_cnos_commands(module, cmd)) # Save it into the file file = open(outputfile, "a") file.write(output) file.close() errorMsg = cnos.checkOutputForError(output) if(errorMsg is None): module.exit_json(changed=True, msg="Switch Startup Config is Reset to Factory settings") else: module.fail_json(msg=errorMsg)
def main(): module = AnsibleModule(argument_spec=dict( clicommand=dict(required=True), outputfile=dict(required=True), condition=dict(required=True), flag=dict(required=True), host=dict(required=False), deviceType=dict(required=True), username=dict(required=False), password=dict(required=False, no_log=True), enablePassword=dict(required=False, no_log=True), ), supports_check_mode=False) condition = module.params['condition'] flag = module.params['flag'] cliCommand = module.params['clicommand'] outputfile = module.params['outputfile'] output = '' if (condition is None or condition != flag): module.exit_json(changed=True, msg="Command Skipped for this switch") return '' # Send the CLi command cmd = [{'command': cliCommand, 'prompt': None, 'answer': None}] output = output + str(cnos.run_cnos_commands(module, cmd)) # Write to memory save_cmd = [{'command': 'save', 'prompt': None, 'answer': None}] cmd.extend(save_cmd) output = output + str(cnos.run_cnos_commands(module, cmd)) # Save it into the file path = outputfile.rsplit('/', 1) # cnos.debugOutput(path[0]) if not os.path.exists(path[0]): os.makedirs(path[0]) file = open(outputfile, "a") file.write(output) file.close() # Logic to check when changes occur or not errorMsg = cnos.checkOutputForError(output) if (errorMsg is None): module.exit_json(changed=True, msg="CLI Command executed and results saved in file ") else: module.fail_json(msg=errorMsg)
def main(): module = AnsibleModule(argument_spec=dict( commandfile=dict(required=True), outputfile=dict(required=True), host=dict(required=False), deviceType=dict(required=True), username=dict(required=False), password=dict(required=False, no_log=True), enablePassword=dict(required=False, no_log=True), ), supports_check_mode=False) commandfile = module.params['commandfile'] outputfile = module.params['outputfile'] output = '' # Send commands one by one to the device f = open(commandfile, "r") cmd = [] for line in f: # Omit the comment lines in template file if not line.startswith("#"): command = line.strip() inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) # Write to memory save_cmd = [{'command': 'save', 'prompt': None, 'answer': None}] cmd.extend(save_cmd) output = output + str(cnos.run_cnos_commands(module, cmd)) # Write output to file path = outputfile.rsplit('/', 1) # cnos.debugOutput(path[0]) if not os.path.exists(path[0]): os.makedirs(path[0]) file = open(outputfile, "a") file.write(output) file.close() # Logic to check when changes occur or not errorMsg = cnos.checkOutputForError(output) if (errorMsg is None): module.exit_json(changed=True, msg="Template Applied") else: module.fail_json(msg=errorMsg)
def bgpConfig(module, cmd, prompt, answer): retVal = '' command = '' bgpArg1 = module.params['bgpArg1'] bgpArg2 = module.params['bgpArg2'] bgpArg3 = module.params['bgpArg3'] bgpArg4 = module.params['bgpArg4'] bgpArg5 = module.params['bgpArg5'] bgpArg6 = module.params['bgpArg6'] bgpArg7 = module.params['bgpArg7'] bgpArg8 = module.params['bgpArg8'] asNum = module.params['asNum'] deviceType = module.params['deviceType'] # cnos.debugOutput(bgpArg1) if (bgpArg1 == "address-family"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_address_family", bgpArg2) if (value == "ok"): command = command + bgpArg2 + " " + "unicast \n" # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + bgpAFConfig(module, cmd, prompt, answer) return retVal else: retVal = "Error-178" return retVal elif (bgpArg1 == "bestpath"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " if (bgpArg2 == "always-compare-med"): # debugOutput(bgpArg2) command = command + bgpArg2 elif (bgpArg2 == "compare-confed-aspath"): # debugOutput(bgpArg2) command = command + bgpArg2 elif (bgpArg2 == "compare-routerid"): # debugOutput(bgpArg2) command = command + bgpArg2 elif (bgpArg2 == "dont-compare-originator-id"): # debugOutput(bgpArg2) command = command + bgpArg2 elif (bgpArg2 == "tie-break-on-age"): # debugOutput(bgpArg2) command = command + bgpArg2 elif (bgpArg2 == "as-path"): # debugOutput(bgpArg2) command = command + bgpArg2 + " " if (bgpArg3 == "ignore" or bgpArg3 == "multipath-relax"): command = command + bgpArg3 else: retVal = "Error-179" return retVal elif (bgpArg2 == "med"): # debugOutput(bgpArg2) command = command + bgpArg2 + " " if (bgpArg3 == "confed" or bgpArg3 == "missing-as-worst" or bgpArg3 == "non-deterministic" or bgpArg3 == "remove-recv-med" or bgpArg3 == "remove-send-med"): command = command + bgpArg3 else: retVal = "Error-180" return retVal else: retVal = "Error-181" return retVal elif (bgpArg1 == "bgp"): # debugOutput(bgpArg1) command = command + bgpArg1 + " as-local-count " value = cnos.checkSanityofVariable(deviceType, "bgp_bgp_local_count", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-182" return retVal elif (bgpArg1 == "cluster-id"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " value = cnos.checkSanityofVariable(deviceType, "cluster_id_as_ip", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: value = cnos.checkSanityofVariable(deviceType, "cluster_id_as_number", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-183" return retVal elif (bgpArg1 == "confederation"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " if (bgpArg2 == "identifier"): value = cnos.checkSanityofVariable(deviceType, "confederation_identifier", bgpArg3) if (value == "ok"): command = command + bgpArg2 + " " + bgpArg3 + "\n" else: retVal = "Error-184" return retVal elif (bgpArg2 == "peers"): value = cnos.checkSanityofVariable(deviceType, "confederation_peers_as", bgpArg3) if (value == "ok"): command = command + bgpArg2 + " " + bgpArg3 else: retVal = "Error-185" return retVal else: retVal = "Error-186" return retVal elif (bgpArg1 == "enforce-first-as"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "fast-external-failover"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "graceful-restart"): # debugOutput(bgpArg1) command = command + bgpArg1 + " stalepath-time " value = cnos.checkSanityofVariable(deviceType, "stalepath_delay_value", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-187" return retVal elif (bgpArg1 == "graceful-restart-helper"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "log-neighbor-changes"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "maxas-limit"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " value = cnos.checkSanityofVariable(deviceType, "maxas_limit_as", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-188" return retVal elif (bgpArg1 == "neighbor"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " value = cnos.checkSanityofVariable(deviceType, "neighbor_ipaddress", bgpArg2) if (value == "ok"): command = command + bgpArg2 if (bgpArg3 is not None): command = command + " remote-as " value = cnos.checkSanityofVariable(deviceType, "neighbor_as", bgpArg3) if (value == "ok"): # debugOutput(command) command = command + bgpArg3 inner_cmd = [{ 'command': command, 'prompt': None, 'answer': None }] cmd.extend(inner_cmd) retVal = retVal + bgpNeighborConfig( module, cmd, prompt, answer) return retVal else: retVal = "Error-189" return retVal elif (bgpArg1 == "router-id"): # debugOutput(bgpArg1) command = command + bgpArg1 + " " value = cnos.checkSanityofVariable(deviceType, "router_id", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-190" return retVal elif (bgpArg1 == "shutdown"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "synchronization"): # debugOutput(bgpArg1) command = command + bgpArg1 elif (bgpArg1 == "timers"): # cnos.debugOutput(bgpArg3) command = command + bgpArg1 + " bgp " value = cnos.checkSanityofVariable(deviceType, "bgp_keepalive_interval", bgpArg2) if (value == "ok"): command = command + bgpArg2 else: retVal = "Error-191" return retVal if (bgpArg3 is not None): value = cnos.checkSanityofVariable(deviceType, "bgp_holdtime", bgpArg3) if (value == "ok"): command = command + " " + bgpArg3 else: retVal = "Error-192" return retVal else: retVal = "Error-192" return retVal elif (bgpArg1 == "vrf"): # debugOutput(bgpArg1) command = command + bgpArg1 + " default" else: # debugOutput(bgpArg1) retVal = "Error-192" return retVal # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) command = "exit \n" # debugOutput(command) return retVal
def bgpAFConfig(module, cmd, prompt, answer): retVal = '' command = '' bgpAFArg1 = module.params['bgpArg3'] bgpAFArg2 = module.params['bgpArg4'] bgpAFArg3 = module.params['bgpArg5'] bgpAFArg4 = module.params['bgpArg6'] bgpAFArg5 = module.params['bgpArg7'] bgpAFArg6 = module.params['bgpArg8'] deviceType = module.params['deviceType'] if (bgpAFArg1 == "aggregate-address"): command = command + bgpAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_aggregate_prefix", bgpAFArg2) if (value == "ok"): if (bgpAFArg2 is None): command = command.strip() elif (bgpAFArg2 == "as-set" or bgpAFArg2 == "summary-only"): command = command + bgpAFArg2 + " " if ((bgpAFArg3 is not None) and (bgpAFArg2 == "as-set")): command = command + "summary-only" else: retVal = "Error-297" return retVal else: retVal = "Error-296" return retVal elif (bgpAFArg1 == "client-to-client"): command = command + bgpAFArg1 + " reflection " elif (bgpAFArg1 == "dampening"): command = command + bgpAFArg1 + " " if (bgpAFArg2 == "route-map"): command = command + bgpAFArg2 + " " value = cnos.checkSanityofVariable(deviceType, "addrfamily_routemap_name", bgpAFArg3) if (value == "ok"): command = command + bgpAFArg3 else: retVal = "Error-196" return retVal elif (bgpAFArg2 is not None): value = cnos.checkSanityofVariable(deviceType, "reachability_half_life", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " if (bgpAFArg3 is not None): value1 = cnos.checkSanityofVariable( deviceType, "start_reuse_route_value", bgpAFArg3) value2 = cnos.checkSanityofVariable( deviceType, "start_suppress_route_value", bgpAFArg4) value3 = cnos.checkSanityofVariable( deviceType, "max_duration_to_suppress_route", bgpAFArg5) if (value1 == "ok" and value2 == "ok" and value3 == "ok"): command = command + bgpAFArg3 + " " + bgpAFArg4 + \ " " + bgpAFArg5 + " " if (bgpAFArg6 is not None): value = cnos.checkSanityofVariable( deviceType, "unreachability_halftime_for_penalty", bgpAFArg6) if (value == "ok"): command = command + bgpAFArg6 else: retVal = "Error-295" return retVal else: command = command.strip() else: retVal = "Error-294" return retVal elif (bgpAFArg1 == "distance"): command = command + bgpAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "distance_external_AS", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " value = cnos.checkSanityofVariable(deviceType, "distance_internal_AS", bgpAFArg3) if (value == "ok"): command = command + bgpAFArg3 + " " value = cnos.checkSanityofVariable(deviceType, "distance_local_routes", bgpAFArg4) if (value == "ok"): command = command + bgpAFArg4 else: retVal = "Error-291" return retVal else: retVal = "Error-292" return retVal else: retVal = "Error-293" return retVal elif (bgpAFArg1 == "maximum-paths"): command = command + bgpAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "maxpath_option", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " value = cnos.checkSanityofVariable(deviceType, "maxpath_numbers", bgpAFArg3) if (value == "ok"): command = command + bgpAFArg3 else: retVal = "Error-199" return retVal else: retVal = "Error-290" return retVal elif (bgpAFArg1 == "network"): command = command + bgpAFArg1 + " " if (bgpAFArg2 == "synchronization"): command = command + bgpAFArg2 else: value = cnos.checkSanityofVariable(deviceType, "network_ip_prefix_with_mask", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " if (bgpAFArg3 is not None and bgpAFArg3 == "backdoor"): command = command + bgpAFArg3 elif (bgpAFArg3 is not None and bgpAFArg3 == "route-map"): command = command + bgpAFArg3 value = cnos.checkSanityofVariable( deviceType, "addrfamily_routemap_name", bgpAFArg4) if (value == "ok"): command = command + bgpAFArg4 + " " if (bgpAFArg5 is not None and bgpAFArg5 == "backdoor"): command = command + bgpAFArg5 else: retVal = "Error-298" return retVal else: retVal = "Error-196" return retVal else: command = command.strip() else: value = cnos.checkSanityofVariable(deviceType, "network_ip_prefix_value", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " if (bgpAFArg3 is not None and bgpAFArg3 == "backdoor"): command = command + bgpAFArg3 elif (bgpAFArg3 is not None and bgpAFArg3 == "route-map"): command = command + bgpAFArg3 value = cnos.checkSanityofVariable( deviceType, "addrfamily_routemap_name", bgpAFArg4) if (value == "ok"): command = command + bgpAFArg4 + " " if (bgpAFArg5 is not None and bgpAFArg5 == "backdoor"): command = command + bgpAFArg5 else: retVal = "Error-298" return retVal else: retVal = "Error-196" return retVal elif (bgpAFArg3 is not None and bgpAFArg3 == "mask"): command = command + bgpAFArg3 value = cnos.checkSanityofVariable( deviceType, "network_ip_prefix_mask", bgpAFArg4) if (value == "ok"): command = command + bgpAFArg4 + " " else: retVal = "Error-299" return retVal else: command = command.strip() else: retVal = "Error-300" return retVal elif (bgpAFArg1 == "nexthop"): command = command + bgpAFArg1 + " trigger-delay critical " value = cnos.checkSanityofVariable(deviceType, "nexthop_crtitical_delay", bgpAFArg2) if (value == "ok"): command = command + bgpAFArg2 + " " value = cnos.checkSanityofVariable(deviceType, "nexthop_noncrtitical_delay", bgpAFArg3) if (value == "ok"): command = command + bgpAFArg3 + " " else: retVal = "Error-198" return retVal else: retVal = "Error-197" return retVal elif (bgpAFArg1 == "redistribute"): command = command + bgpAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "addrfamily_redistribute_option", bgpAFArg2) if (value == "ok"): if (bgpAFArg2 is not None): command = command + bgpAFArg2 + " " + "route-map " value = cnos.checkSanityofVariable(deviceType, "addrfamily_routemap_name", bgpAFArg3) if (value == "ok"): command = command + bgpAFArg3 else: retVal = "Error-196" return retVal else: retVal = "Error-195" return retVal elif (bgpAFArg1 == "save" or bgpAFArg1 == "synchronization"): command = command + bgpAFArg1 else: retVal = "Error-194" return retVal # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) command = "exit \n" return retVal
def bgpNeighborAFConfig(module, cmd, prompt, answer): retVal = '' command = '' bgpNeighborAFArg1 = module.params['bgpArg6'] bgpNeighborAFArg2 = module.params['bgpArg7'] bgpNeighborAFArg3 = module.params['bgpArg8'] deviceType = module.params['deviceType'] if (bgpNeighborAFArg1 == "allowas-in"): command = command + bgpNeighborAFArg1 + " " if (bgpNeighborAFArg2 is not None): value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_occurances", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 else: retVal = "Error-325" return retVal elif (bgpNeighborAFArg1 == "default-originate"): command = command + bgpNeighborAFArg1 + " " if (bgpNeighborAFArg2 is not None and bgpNeighborAFArg2 == "route-map"): command = command + bgpNeighborAFArg2 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_routemap", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg3 else: retVal = "Error-324" return retVal elif (bgpNeighborAFArg1 == "filter-list"): command = command + bgpNeighborAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_filtername", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 + " " if (bgpNeighborAFArg3 == "in" or bgpNeighborAFArg3 == "out"): command = command + bgpNeighborAFArg3 else: retVal = "Error-323" return retVal else: retVal = "Error-322" return retVal elif (bgpNeighborAFArg1 == "maximum-prefix"): command = command + bgpNeighborAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_maxprefix", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 + " " if (bgpNeighborAFArg3 is not None): command = command + bgpNeighborAFArg3 else: command = command.strip() else: retVal = "Error-326" return retVal elif (bgpNeighborAFArg1 == "next-hop-self"): command = command + bgpNeighborAFArg1 elif (bgpNeighborAFArg1 == "prefix-list"): command = command + bgpNeighborAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_prefixname", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 + " " if (bgpNeighborAFArg3 == "in" or bgpNeighborAFArg3 == "out"): command = command + bgpNeighborAFArg3 else: retVal = "Error-321" return retVal else: retVal = "Error-320" return retVal elif (bgpNeighborAFArg1 == "route-map"): command = command + bgpNeighborAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_routemap", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 else: retVal = "Error-319" return retVal elif (bgpNeighborAFArg1 == "route-reflector-client"): command = command + bgpNeighborAFArg1 elif (bgpNeighborAFArg1 == "send-community"): command = command + bgpNeighborAFArg1 + " " if (bgpNeighborAFArg2 is not None and bgpNeighborAFArg2 == "extended"): command = command + bgpNeighborAFArg2 elif (bgpNeighborAFArg1 == "soft-reconfiguration"): command = command + bgpNeighborAFArg1 + " inbound" elif (bgpNeighborAFArg1 == "unsuppress-map"): command = command + bgpNeighborAFArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_af_routemap", bgpNeighborAFArg2) if (value == "ok"): command = command + bgpNeighborAFArg2 else: retVal = "Error-318" return retVal else: retVal = "Error-317" return retVal # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) return retVal
def bgpNeighborConfig(module, cmd, prompt, answer): retVal = '' command = '' bgpNeighborArg1 = module.params['bgpArg4'] bgpNeighborArg2 = module.params['bgpArg5'] bgpNeighborArg3 = module.params['bgpArg6'] bgpNeighborArg4 = module.params['bgpArg7'] bgpNeighborArg5 = module.params['bgpArg8'] deviceType = module.params['deviceType'] if (bgpNeighborArg1 == "address-family"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_address_family", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 + " unicast" # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + bgpNeighborAFConfig( module, cmd, '(config-router-neighbor-af)#', answer) return retVal else: retVal = "Error-316" return retVal elif (bgpNeighborArg1 == "advertisement-interval"): command = command + bgpNeighborArg1 elif (bgpNeighborArg1 == "bfd"): command = command + bgpNeighborArg1 + " " if (bgpNeighborArg2 is not None and bgpNeighborArg2 == "mutihop"): command = command + bgpNeighborArg2 elif (bgpNeighborArg1 == "connection-retry-time"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable( deviceType, "bgp_neighbor_connection_retrytime", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-315" return retVal elif (bgpNeighborArg1 == "description"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_description", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-314" return retVal elif (bgpNeighborArg1 == "disallow-infinite-holdtime"): command = command + bgpNeighborArg1 elif (bgpNeighborArg1 == "dont-capability-negotiate"): command = command + bgpNeighborArg1 elif (bgpNeighborArg1 == "dynamic-capability"): command = command + bgpNeighborArg1 elif (bgpNeighborArg1 == "ebgp-multihop"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_maxhopcount", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-313" return retVal elif (bgpNeighborArg1 == "interface"): command = command + bgpNeighborArg1 + " " # TBD elif (bgpNeighborArg1 == "local-as"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_local_as", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 + " " if (bgpNeighborArg3 is not None and bgpNeighborArg3 == "no-prepend"): command = command + bgpNeighborArg3 + " " if (bgpNeighborArg4 is not None and bgpNeighborArg4 == "replace-as"): command = command + bgpNeighborArg4 + " " if (bgpNeighborArg5 is not None and bgpNeighborArg5 == "dual-as"): command = command + bgpNeighborArg5 else: command = command.strip() else: command = command.strip() else: command = command.strip() else: retVal = "Error-312" return retVal elif (bgpNeighborArg1 == "maximum-peers"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_maxpeers", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-311" return retVal elif (bgpNeighborArg1 == "password"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_password", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-310" return retVal elif (bgpNeighborArg1 == "remove-private-AS"): command = command + bgpNeighborArg1 elif (bgpNeighborArg1 == "timers"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_timers_Keepalive", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_timers_holdtime", bgpNeighborArg3) if (value == "ok"): command = command + bgpNeighborArg3 else: retVal = "Error-309" return retVal else: retVal = "Error-308" return retVal elif (bgpNeighborArg1 == "transport"): command = command + bgpNeighborArg1 + " connection-mode passive " elif (bgpNeighborArg1 == "ttl-security"): command = command + bgpNeighborArg1 + " hops " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_ttl_hops", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-307" return retVal elif (bgpNeighborArg1 == "update-source"): command = command + bgpNeighborArg1 + " " if (bgpNeighborArg2 is not None): value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_update_options", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 + " " if (bgpNeighborArg2 == "ethernet"): value = cnos.checkSanityofVariable( deviceType, "bgp_neighbor_update_ethernet", bgpNeighborArg3) if (value == "ok"): command = command + bgpNeighborArg3 else: retVal = "Error-304" return retVal elif (bgpNeighborArg2 == "loopback"): value = cnos.checkSanityofVariable( deviceType, "bgp_neighbor_update_loopback", bgpNeighborArg3) if (value == "ok"): command = command + bgpNeighborArg3 else: retVal = "Error-305" return retVal else: value = cnos.checkSanityofVariable( deviceType, "bgp_neighbor_update_vlan", bgpNeighborArg3) if (value == "ok"): command = command + bgpNeighborArg3 else: retVal = "Error-306" return retVal else: command = command + bgpNeighborArg2 else: retVal = "Error-303" return retVal elif (bgpNeighborArg1 == "weight"): command = command + bgpNeighborArg1 + " " value = cnos.checkSanityofVariable(deviceType, "bgp_neighbor_weight", bgpNeighborArg2) if (value == "ok"): command = command + bgpNeighborArg2 else: retVal = "Error-302" return retVal else: retVal = "Error-301" return retVal # debugOutput(command) inner_cmd = [{'command': command, 'prompt': None, 'answer': None}] cmd.extend(inner_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) command = "exit \n" return retVal
def doImageDownload(module, prompt, answer): protocol = module.params['protocol'].lower() server = module.params['serverip'] imgPath = module.params['imgpath'] imgType = module.params['imgtype'] username = module.params['serverusername'] password = module.params['serverpassword'] retVal = '' command = "copy " + protocol + " " + protocol + "://" + username + "@" command = command + server + "/" + imgPath + " system-image " command = command + imgType + " vrf management" cmd = [] if (protocol == "scp"): prompt = [ 'timeout', 'Confirm download operation', 'Password', 'Do you want to change that to the standby image' ] answer = ['240', 'y', password, 'y'] scp_cmd = [{ 'command': command, 'prompt': prompt, 'answer': answer, 'check_all': True }] cmd.extend(scp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "sftp"): prompt = [ 'Confirm download operation', 'Password', 'Do you want to change that to the standby image' ] answer = ['y', password, 'y'] sftp_cmd = [{ 'command': command, 'prompt': prompt, 'answer': answer, 'check_all': True }] cmd.extend(sftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "ftp"): prompt = [ 'Confirm download operation', 'Password', 'Do you want to change that to the standby image' ] answer = ['y', password, 'y'] ftp_cmd = [{ 'command': command, 'prompt': prompt, 'answer': answer, 'check_all': True }] cmd.extend(ftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) elif (protocol == "tftp"): command = "copy " + protocol + " " + protocol + "://" + server command = command + "/" + imgPath + " system-image " + imgType command = command + " vrf management" prompt = [ 'Confirm download operation', 'Do you want to change that to the standby image' ] answer = ['y', 'y'] tftp_cmd = [{ 'command': command, 'prompt': prompt, 'answer': answer, 'check_all': True }] cmd.extend(tftp_cmd) retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) else: return "Error-110" return retVal
def vlagConfig(module, prompt, answer): retVal = '' # vlag config command happens here. command = 'vlag ' vlagArg1 = module.params['vlagArg1'] vlagArg2 = module.params['vlagArg2'] vlagArg3 = module.params['vlagArg3'] vlagArg4 = module.params['vlagArg4'] deviceType = module.params['deviceType'] if(vlagArg1 == "enable"): # debugOutput("enable") command = command + vlagArg1 + " " elif(vlagArg1 == "auto-recovery"): # debugOutput("auto-recovery") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable( deviceType, "vlag_auto_recovery", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-160" return retVal elif(vlagArg1 == "config-consistency"): # debugOutput("config-consistency") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable( deviceType, "vlag_config_consistency", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-161" return retVal elif(vlagArg1 == "isl"): # debugOutput("isl") command = command + vlagArg1 + " port-channel " value = cnos.checkSanityofVariable( deviceType, "vlag_port_aggregation", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-162" return retVal elif(vlagArg1 == "mac-address-table"): # debugOutput("mac-address-table") command = command + vlagArg1 + " refresh" elif(vlagArg1 == "peer-gateway"): # debugOutput("peer-gateway") command = command + vlagArg1 + " " elif(vlagArg1 == "priority"): # debugOutput("priority") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable(deviceType, "vlag_priority", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-163" return retVal elif(vlagArg1 == "startup-delay"): # debugOutput("startup-delay") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable( deviceType, "vlag_startup_delay", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-164" return retVal elif(vlagArg1 == "tier-id"): # debugOutput("tier-id") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable(deviceType, "vlag_tier_id", vlagArg2) if(value == "ok"): command = command + vlagArg2 else: retVal = "Error-165" return retVal elif(vlagArg1 == "vrrp"): # debugOutput("vrrp") command = command + vlagArg1 + " active" elif(vlagArg1 == "instance"): # debugOutput("instance") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable(deviceType, "vlag_instance", vlagArg2) if(value == "ok"): command = command + vlagArg2 if(vlagArg3 is not None): command = command + " port-channel " value = cnos.checkSanityofVariable( deviceType, "vlag_port_aggregation", vlagArg3) if(value == "ok"): command = command + vlagArg3 else: retVal = "Error-162" return retVal else: command = command + " enable " else: retVal = "Error-166" return retVal elif(vlagArg1 == "hlthchk"): # debugOutput("hlthchk") command = command + vlagArg1 + " " value = cnos.checkSanityofVariable( deviceType, "vlag_hlthchk_options", vlagArg2) if(value == "ok"): if(vlagArg2 == "keepalive-attempts"): value = cnos.checkSanityofVariable( deviceType, "vlag_keepalive_attempts", vlagArg3) if(value == "ok"): command = command + vlagArg2 + " " + vlagArg3 else: retVal = "Error-167" return retVal elif(vlagArg2 == "keepalive-interval"): value = cnos.checkSanityofVariable( deviceType, "vlag_keepalive_interval", vlagArg3) if(value == "ok"): command = command + vlagArg2 + " " + vlagArg3 else: retVal = "Error-168" return retVal elif(vlagArg2 == "retry-interval"): value = cnos.checkSanityofVariable( deviceType, "vlag_retry_interval", vlagArg3) if(value == "ok"): command = command + vlagArg2 + " " + vlagArg3 else: retVal = "Error-169" return retVal elif(vlagArg2 == "peer-ip"): # Here I am not taking care of IPV6 option. value = cnos.checkSanityofVariable( deviceType, "vlag_peerip", vlagArg3) if(value == "ok"): command = command + vlagArg2 + " " + vlagArg3 if(vlagArg4 is not None): value = cnos.checkSanityofVariable( deviceType, "vlag_peerip_vrf", vlagArg4) if(value == "ok"): command = command + " vrf " + vlagArg4 else: retVal = "Error-170" return retVal else: retVal = "Error-171" return retVal else: retVal = "Error-172" return retVal # debugOutput(command) cmd = [{'command': command, 'prompt': None, 'answer': None}] retVal = retVal + str(cnos.run_cnos_commands(module, cmd)) return retVal