> For the complete documentation index, see [llms.txt](https://docs.vex-nx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vex-nx.com/vex-nx-user-guide-1/images/bulk-folder-import.md).

# Bulk folder import

Use bulk import when appliance folders are already on a workstation and you want them in the Image Library without uploading each file through the browser. Prefer **Convert & add** when you have one or a few files on your PC.

## Flow

1. **Transfer** folders to the appliance (SCP/SFTP).
2. **Scan** the staging parent in **Images -> Import -> Bulk import**.
3. **Import selected** for ready folders, or **Convert selected** for **Needs prepare**.

You must hold licences for any vendor disks you transfer.

## Staging drop zones

Canonical path: `/opt/vex-nx/staging/...` (SSH user is typically `vexnx`). Drop zones are created world-writable (`0777`) at install and again when `pram-api` starts.

| Path                      | Contents                                                                               |
| ------------------------- | -------------------------------------------------------------------------------------- |
| `.../staging/qemu`        | One subfolder per QEMU appliance (`.qcow2`, disks, optional ISO)                       |
| `.../staging/dynamips`    | Dynamips IOS `.bin` / `.image`                                                         |
| `.../staging/iol`         | IOL/IOU binaries; shared licence at `/opt/vex-nx/staging/iol/iourc` (required to boot) |
| `.../staging/docker`      | `docker save` tarballs                                                                 |
| `.../staging/bulk-import` | Mixed / legacy                                                                         |

Layout rule: **parent folder -> one child folder per appliance**.

Example:

```
/opt/vex-nx/staging/qemu/
  iosv-15.6/
    hda.qcow2
  asav-9.14/
    disk.qcow2
  vjunos-switch-22.2R1.9/
    virtioa.qcow2
```

`virtioa.qcow2` is a **bus-matched disk name** for virtio attachment (already-qcow2). It does not convert the image or speed Junos boot - see Import images.

## Transfer from Windows

OpenSSH example:

```powershell
scp -r "D:\images\qemu\*" vexnx@192.168.1.50:/opt/vex-nx/staging/qemu/
```

Repo helper (from the VEX-NX / pram-lab checkout):

```powershell
.\scripts\import-images-bulk.ps1 `
  -Source "D:\images\qemu" `
  -ApplianceHost 192.168.1.50 `
  -Dest "/opt/vex-nx/staging/qemu"
```

Prefer **move** into the library when the UI offers it, so you do not double disk usage on Hard Disk 1.

### IOL licence

Put a valid `iourc` at **`/opt/vex-nx/staging/iol/iourc`** (or beside the `.bin`). Format:

```
[license]
<hostname> = <16-char-licence>;
```

Hostname must match `hostname` on the appliance; the value must match this host's Cisco hostid. VEX-NX never generates Cisco licences.

## Scan and register in the UI

1. **Images -> Import** -> scroll to **Bulk import**.
2. Pick a runtime chip (`qemu`, `dynamips`, `iol`, ...) or enter the staging parent path.
3. **Scan all folders**.
4. Review the summary chips: Ready / Empty / Needs prepare / Errors.
5. Tick legal acknowledgement.
6. Choose options if needed: skip existing canonical names; prefer move from staging.
7. Select folders:

* **Select all ready** -> **Import selected**
* **Select needs prepare** -> choose **Platform for Convert selected** -> **Convert selected**

8. Watch progress (import job bar, or convert progress text for Needs prepare).

Bulk scan, bulk import, and Convert & add keep running on the appliance if you leave **Images** (for example to Labs or Home). Return to **Images -> Import** to see progress or results. Job state is in memory only - it resets if the API restarts.

| Status        | Meaning                           | Action                                |
| ------------- | --------------------------------- | ------------------------------------- |
| Ready         | Usable disks (typically qcow2)    | Import selected                       |
| Needs prepare | Convertible only (VMDK/OVA, etc.) | Convert selected + platform           |
| Empty         | No usable disks                   | Fix folder contents                   |
| Error         | Scan failed                       | Read error text; fix path/permissions |

## After bulk import

Open **Library**, set platform mapping if needed, then assign images to nodes in Design.

For browser-side convert of a few files, use Import images -> Convert & add instead of SCP.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.vex-nx.com/vex-nx-user-guide-1/images/bulk-folder-import.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
