def _transport_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config, validation=args.spec_validation) try: command_selector = { 'get_tz': _get_tz, 'list_tz': _list_tz, 'add_tz': _add_tz, 'delete_tz': _delete_tz, 'list_uplink_profile': _list_uplink_profile, 'configure_cluster': _configure_cluster, 'configure_edge': _configure_edge, } command_selector[args.command](client, display_name=args.display_name, host_switch_name=args.host_switch_name, transport_type=args.transport_type, host_switch_mode=args.host_switch_mode, cluster_name=args.cluster_name, tz_name=args.tz_name, uplink_profile=args.uplink_profile, ippool_name=args.ippool_name, pnic_name=args.pnic_name, edge_name=args.edge_name, oid=args.oid) except KeyError as e: print('Unknown command {}'.format(e))
def get_status(args): config = load_configfile(args) for edge in config['nsxEdge']: cli = connect_cli(edge) exec_command(cli, 'get interface eth0', display=True) exec_command(cli, 'get managers', display=True) return
def _pool_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config) try: command_selector = { 'add_ippool': _add_ippool, 'get_ippool': _get_ippool, 'list_ippool': _list_ippool, 'delete_ippool': _delete_ippool, 'test_ippool': _test_ippool } command_selector[args.command]( client, ippool_id=args.ippool_id, start=args.start, end=args.end, cidr=args.cidr, display_name=args.display_name, gateway=args.gateway, dns_nameserver=args.dns_nameserver, dns_suffix=args.dns_suffix, ) except KeyError as e: print('Unknown command {}'.format(e))
def _fabric_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config, validation=args.spec_validation) try: command_selector = { 'list_hostnode': _list_hostnode, 'list_edgenode': _list_edgenode, 'get_cm': _get_cm, 'add_cm': _add_cm, 'list_cm': _list_cm, 'delete_cm': _delete_cm, 'configure_cluster': _configure_cluster, } command_selector[args.command](client, display_name=args.display_name, vc_address=args.vc_address, vc_user=args.vc_user, vc_pass=args.vc_pass, cluster_name=args.cluster_name, cmid=args.oid) except KeyError as e: print('Unknown command {}'.format(e))
def _logicalrouter_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config, validation=args.spec_validation) try: command_selector = { 'get_t0': _get_t0_logicalrouter, 'list_t0': _list_t0_logicalrouter, 'add_t0': _add_t0_logicalrouter, # 'delete_t0': _delete_t0_logicalrouter, # 'get_t1': _get_t1_logicalrouter, # 'list_t1': _list_t1_logicalrouter, # 'add_t1': _add_t1_logicalrouter, # 'delete_t1': _delete_t1_logicalrouter } command_selector[args.command](client, display_name=args.display_name, oid=args.oid) except KeyError as e: print('Unknown command {}'.format(e))
def get_status(args): config = load_configfile(args) for controller in config['nsxController']: cli = connect_cli(controller) exec_command(cli, 'get interface eth0', display=True) exec_command(cli, 'get managers', display=True) exec_command(cli, 'get control-cluster status', display=True) _get_manager_status(controller) _get_cluster_status(controller) return
def list_vm(args): config = pynsxt_utils.load_configfile(args) si = _connect_si(config) content = si.RetrieveContent() children = content.viewManager.CreateContainerView( content.rootFolder, [vim.VirtualMachine], True).view vms = [(child.name, child._moId, child.runtime.host.name, child.guest.guestState) for child in children] for vm in vms: print vm return children
def initialize(args): config = load_configfile(args) for controller in config['nsxController']: connect_cli(controller) _get_cluster_status(controller) if controller['master'] == False and controller['majority'] == False: exec_command( controller['cli'], "set control-cluster security-model shared-secret secret %s" % controller['secret'], display=True) exec_command(controller['cli'], 'initialize control-cluster', display=True) return
def _edge_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config, validation=args.spec_validation) try: command_selector = {'list_edge_cluster': _list_edge_cluster} command_selector[args.command](client, display_name=args.display_name, oid=args.oid) except KeyError as e: print('Unknown command {}'.format(e))
def deploy_edge(args): config = load_configfile(args) logger.info('Deploy NSX Edge') for edge in config['nsxEdge']: # Create deploy command cmd = ["ovftool"] cmd.append("--name=%s" % edge['name']) cmd.append("--deploymentOption=%s" % edge['deploymentOption']) cmd.append("--X:injectOvfEnv") cmd.append("--allowExtraConfig") cmd.append("--datastore=%s" % edge['datastore']) cmd.append("--net:\"Network 0=%s\"" % edge['network0']) cmd.append("--net:\"Network 1=%s\"" % edge['network1']) cmd.append("--net:\"Network 2=%s\"" % edge['network2']) cmd.append("--net:\"Network 3=%s\"" % edge['network3']) cmd.append("--acceptAllEulas") cmd.append("--noSSLVerify") cmd.append("--diskMode=thin") cmd.append("--powerOn") cmd.append("--prop:nsx_ip_0=%s" % edge['ip']) cmd.append("--prop:nsx_netmask_0=%s" % edge['netmask']) cmd.append("--prop:nsx_gateway_0=%s" % edge['gw']) cmd.append("--prop:nsx_dns1_0=%s" % config['dns']) cmd.append("--prop:nsx_domain_0=%s" % config['domain']) cmd.append("--prop:nsx_ntp_0=%s" % config['ntp']) cmd.append("--prop:nsx_isSSHEnabled=True") cmd.append("--prop:nsx_allowSSHRootLogin=True") cmd.append("--prop:nsx_passwd_0=%s" % edge['password']) cmd.append("--prop:nsx_cli_passwd_0=%s" % edge['password']) cmd.append("--prop:nsx_hostname=%s" % edge['name']) cmd.append(edge['ova']) cmd.append( "vi://%s:%s@%s/%s/host/%s" % (config['vcenter']['user'], config['vcenter']['password'], config['vcenter']['ip'], edge['datacenter'], edge['cluster'])) logger.debug('Executing command: ' + " ".join(cmd)) ret = subprocess.check_call(" ".join(cmd), shell=True) if ret != 0: logger.error('Failed to deploy') return logger.info('Deployed successfully') pass
def join_manager(args): config = load_configfile(args) thumbprint = get_thumbprint(args) logger.info('Join edge with manager') for edge in config['nsxEdge']: connect_cli(edge) _get_manager_status(edge) if not edge['join_manager']: stdin, stdout, stderr = edge['cli'].exec_command( "join management-plane %s username %s password %s thumbprint %s" % (config['nsxManager']['ip'], config['nsxManager']['user'], config['nsxManager']['password'], thumbprint)) for line in stdout: if len(line.strip()) == 0: continue else: if 'Node successfully registered' in line: logger.info(line) break return
def _run(args): module_selector = { 'Manager': nsx_manager, 'Controller': nsx_controller, 'Edge': nsx_edge, 'EdgeCluster': nsx_edgecluster, 'TransportZone': nsx_tz, 'HostNode': nsx_hostnode, 'TransportNode': nsx_transportnode, 'UplinkProfile': nsx_uplinkprofile, 'T0': nsx_t0lr, 'T1': nsx_t1lr, 'NAT': nsx_nat, 'IPPool': nsx_ippool, 'IPBlock': nsx_ipblock, 'DFW': nsx_dfw, 'DFWSection': nsx_dfw_section, 'LogicalSwitch': nsx_logicalswitch, 'k8s': nsx_k8s } config = pynsxt_utils.load_configfile(args) client = pynsxt_utils.get_api_client(config['env'], validation=args.spec_validation) for t in config['tasks']: if not ('module' in t.keys() and 'action' in t.keys()): logger.error('This task is ignored.') continue if 'data' in t.keys(): data = t['data'] else: data = {} response = module_selector[t['module']].run(client, t['action'], data, config=config['env']) time.sleep(1)
def join_cluster(args): config = load_configfile(args) # Check master exists master = _get_master(config) logger.info("Master: %s" % master['ip']) if master is None: logger.error('No master node exists') return connect_cli(master) slaves = _get_slaves(config) logger.info("Slaves: %s" % ",".join([slave['ip'] for slave in slaves])) for controller in slaves: connect_cli(controller) controller['master'], controller['majority'] = _get_cluster_status( controller['cli']) for controller in slaves: if controller['majority']: continue controller['thumbprint'] = _get_thumbprint(controller['cli']) if controller['thumbprint'] is None: exec_command( controller['cli'], "set control-cluster security-model shared-secret secret %s" % controller['secret'], display=True) controller['thumbprint'] = _get_thumbprint(controller['cli']) for controller in slaves: if controller['majority']: continue exec_command(master['cli'], "join control-cluster %s thumbprint %s" % (controller['ip'], controller['thumbprint']), display=True) exec_command(controller['cli'], "activate control-cluster", display=True)
def delete_vm(args): config = pynsxt_utils.load_configfile(args) si = _connect_si(config) content = si.RetrieveContent() children = content.viewManager.CreateContainerView( content.rootFolder, [vim.VirtualMachine], True).view targets = [child for child in children if child._moId == args.target_vm] if len(targets) != 1: logger.error("No target VM") sys.exit(2) else: target = targets[0] target_name = target.name logger.info("Deleting %s" % target_name) if target.guest.guestState == 'running': tasks = [target.PowerOff()] logger.info('Power off ' + target_name) _wait_for_task(tasks, si) tasks = [target.Destroy_Task()] logger.info('Destroy ' + target_name) _wait_for_task(tasks, si) logger.info("Successfully deleted %s" % target_name) pass
def _logicalswitch_main(args): if args.debug: debug = True else: debug = False config = load_configfile(args) client = get_api_client(config, validation=args.spec_validation) try: command_selector = { 'get_ls': _get_logicalswitch, 'list_ls': _list_logicalswitch, 'add_ls': _add_logicalswitch, 'delete_ls': _delete_logicalswitch } command_selector[args.command]( client, display_name=args.display_name, oid=args.oid, vlan=args.vlan, transport_zone_name=args.transport_zone_name, replication_mode=args.replication_mode) except KeyError as e: print('Unknown command {}'.format(e))