Exports OVf of currently iterated VM (dictated by api.env.hosts)
        :return: ovf location

def export_ovf(self):
        """
        Exports OVf of currently iterated VM (dictated by api.env.hosts)
        :return: ovf location
        """

        # Breaking down SOAP Cookie &
        # creating Header
        soap_cookie = self.vcenter_conn._stub.cookie
        cookies = break_down_cookie(soap_cookie)
        headers = {'Accept': 'application/x-vnd.vmware-streamVmdk'}  # not required
        # Getting HTTP NFC Lease
        http_nfc_lease = self.vm_obj.ExportVm()

        # starting lease updater
        lease_updater = LeaseProgressUpdater(http_nfc_lease, 30)
        lease_updater.start()
        # Creating list for ovf files which will be value of
        # ovfFiles parameter in vim.OvfManager.CreateDescriptorParams
        ovf_files = list()
        total_bytes_written = 0
        # http_nfc_lease.info.totalDiskCapacityInKB not real
        # download size
        total_bytes_to_write = self.vm_obj.summary.storage.unshared

        while True:
            if http_nfc_lease.state == vim.HttpNfcLease.State.ready:
                print 'HTTP NFC Lease Ready'
                print_http_nfc_lease_info(http_nfc_lease.info)

                for deviceUrl in http_nfc_lease.info.deviceUrl:
                    if not deviceUrl.targetId:
                        continue

                    temp_target_disk = os.path.join(self.vm_dl_path,
                                                    self.name)
                    temp_target_disk += ".vmdk"
                    print '\nDownloading {} to {}'.format(deviceUrl.url,
                                                          temp_target_disk)
                    current_bytes_written = download_device(
                        headers=headers, cookies=cookies,
                        temp_target_disk=temp_target_disk,
                        device_url=deviceUrl.url,
                        lease_updater=lease_updater,
                        total_bytes_written=total_bytes_written,
                        total_bytes_to_write=total_bytes_to_write)
                    # Adding up file written bytes to total
                    total_bytes_written += current_bytes_written
                    print 'Creating OVF file for {}'.format(temp_target_disk)
                    # Adding Disk to OVF Files list
                    ovf_file = vim.OvfManager.OvfFile()
                    ovf_file.deviceId = deviceUrl.key
                    ovf_file.path = deviceUrl.targetId
                    ovf_file.size = current_bytes_written
                    ovf_files.append(ovf_file)
                break
            elif http_nfc_lease.state == vim.HttpNfcLease.State.initializing:
                print 'HTTP NFC Lease Initializing.'
            elif http_nfc_lease.state == vim.HttpNfcLease.State.error:
                raise Exception("HTTP NFC Lease error: {}".format(
                    http_nfc_lease.state.error))
            sleep(2)
            self.write_ovf_descriptor(ovf_files)
            # ending lease
            http_nfc_lease.HttpNfcLeaseProgress(100)
            http_nfc_lease.HttpNfcLeaseComplete()
            # stopping thread
            lease_updater.stop()
        print 'VMDK saved at: {}'.format(temp_target_disk)
        return temp_target_disk