Пример #1
0
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))
Пример #2
0
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
Пример #3
0
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))
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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))
Пример #10
0
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
Пример #11
0
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
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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
Пример #15
0
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))