Exemple #1
0
def get_vm_ipaddress(args, server):
    u"""Get IP address of VM

    @param args   Commnadline argument
    @param server Instance of VIServer
    """
    # Import
    import lib

    index = lib.get_vm_index(server, args.vm_name)
    if index == -1:
        raise Exception('Not found VM.')
    else:
        # Get VM
        vm = server.get_vm_by_path(server.get_registered_vms()[index])

        print "Getting IP address..."
        get_ipAddress(vm, wait_time=args.wait_time)
Exemple #2
0
def get_vm_ipaddress(args, server):
    u"""Get IP address of VM

    @param args   Commnadline argument
    @param server Instance of VIServer
    """
    # Import
    import lib

    index = lib.get_vm_index(server, args.vm_name)
    if index == -1:
        raise Exception('Not found VM.')
    else:
        # Get VM
        vm = server.get_vm_by_path(server.get_registered_vms()[index])

        print "Getting IP address..."
        get_ipAddress(vm, wait_time=args.wait_time)
Exemple #3
0
def deploy_vm(args, server):
    u"""Deploy VM(import)

    @param args   Commandline argument
    @param server Instance of VIServer
    """

    # Import
    import os
    import shutil
    from pysphere import VIMor
    import lib

    download_temp = './temp/'
    extract_temp = None

    try:
        # Download
        if args.file_url:
            if args.file_url.find('.ova') > 0:
                args.filepath = lib.download_file(args.file_url, download_temp)
            else:
                raise Exception('File format not supported.')

        filepath = args.filepath
        if os.path.exists(filepath):
            raise Exception("File not found.")

        if filepath.find('.ova') > 0:
            #  If  file format is ova
            file_name = filepath.split('/')[-1]
            extract_temp = r"./%s/" % file_name.replace('.ova', '')
            filepath = lib.ova_extract(filepath, extract_temp)
        elif filepath.find('.ovf') < 0:
            # If file format isn't ova and ovf
            raise Exception("File format not supported.")

        # ovf_filepath path
        ovf_filepath = filepath
        lib.check_ovf(ovf_filepath)

        # Remove mf File
        MF_FILE = ovf_filepath.replace('.ovf', '.mf')
        if os.path.exists(MF_FILE):
            os.remove(MF_FILE)

        # Host
        if not args.datacenter:
            host_name = server.get_hosts().values()[0]
        else:
            host_name = VIMor(args.datacenter,
                              MORTypes.Datacenter)

        # Datastore
        if not args.datastore:
            datastore_name = server.get_datastores().values()[0]
        else:
            datastore_name = VIMor(args.datastore,
                                   MORTypes.Datastore)

        # Resource pool
        if not args.resource_pool:
            resource_pools = server.get_resource_pools()
            resource_pool_name = [k for k, v in resource_pools.items()
                                  if v == resource_pools.values()[0]][0]
        else:
            resource_pool_name = VIMor(args.resource_pool,
                                       MORTypes.ResourcePool)

        # Network
        if not args.network:
            network_name = 'VM Network'
        else:
            network_name = VIMor(args.network, MORTypes.Network)

        ovf = lib.get_descriptor(ovf_filepath)
        descriptor_info = lib.parse_descriptor(ovf, server)
        support_info = lib.validate_host(host_name, ovf, server)

        vm_names = args.vm_names
        for vm_name in vm_names:
            if lib.get_vm_index(server, vm_name) != -1:
                print 'Already Exists VM.'
            else:
                # New VM name
                vapp_name = vm_name

                # Create spec
                import_spec = lib.create_import_spec(resource_pool_name,
                                                     datastore_name,
                                                     ovf, vapp_name,
                                                     host=host_name,
                                                     network=network_name,
                                                     server=server)

                if hasattr(import_spec, "Warning"):
                    print "Warning", import_spec.Warning[0].LocalizedMessage

                http_nfc_lease = lib.import_vapp(resource_pool_name,
                                                 import_spec,
                                                 host=host_name,
                                                 server=server)

                # Http request
                lib.lease(http_nfc_lease, ovf_filepath, server)

                print '%s Done.' % vm_name

    finally:
        # Remove
        if os.path.exists(download_temp):
            print 'Remove download temporary files...'
            shutil.rmtree(download_temp)
        if os.path.exists(extract_temp):
            shutil.rmtree(extract_temp)