# Resource pools

> A resource pool is a list of prepared values that Cloud Management Platform (CMP) provides to servers as they are provisioned

---

Site [llms.txt](/llms.txt)

---

Instead of generating a hostname or letting a parameter be filled in on the order form, you can prepare the values in advance and let CMP allocate them. A pool is attached to one or more environments, and each server built into those environments claims one set of values from it. A set is claimed by a single server, so the same value is never handed out twice.

## Add a resource pool

1. Go to **Admin** > **Resource Pools**.
2. Select **Add a resource pool**.
3. Fill in the fields, then select **Create**.

The **Scope** column reads **Local** for any pool you create here, meaning it applies across the environments you attach it to.

### Fields on a resource pool

| Field | Description |
| --- | --- |
| **Name** | The name the pool is listed under. |
| **Provides Parameters** | The parameters this pool supplies values for. Only user parameters are offered. Boolean, date, and date-time parameters cannot be pooled. |
| **Provides hostnames** | Include a hostname in each set of values. A server takes its hostname from the pool unless a hostname is supplied with the order, which takes priority. |
| **Provides MAC addresses** | Include a MAC address in each set of values. |
| **Environments** | The environments that draw on this pool. An environment can use only one resource pool. |

IP addresses are not offered here. CMP allocates those from [IP ranges](/docs/cmp/configure/infrastructure/networks/ipam/ip-ranges/).

## Add values to a pool

A new pool is empty. Open it and select the **Values** tab. Two buttons add values:

- **New Resource Pool Value** adds one set manually.
- **Upload values in CSV format** imports many at once.

### CSV format

The first row of the file is a header, and each column header must match one of the following:

- `hostname` or `mac` for the kinds of values the pool provides, or `os_build` or `applications`.
- The name of one of the pool's parameters; its name rather than its label.

Separate multiple values in one cell with semicolons. The upload dialog shows a worked example. If none of the column headers match, nothing is imported.

## How values are claimed

When a server is provisioned in an environment with a resource pool, CMP claims an unclaimed set of values from that pool and copies them to the server. The **Usage** column on the pool list shows how many of a pool's sets are claimed out of the total.

If a pool has no unclaimed sets left, provisioning fails with `Resource pool <name> [ID:<id>] is full`. Keep enough values in a pool for the servers you expect to build from it.

<div class="alert alert-danger" role="alert">


Removing a parameter, hostname, or MAC address from a pool deletes the values already stored for that parameter, hostname, or MAC address.
</div>


## Related

- [Environments](/docs/cmp/configure/infrastructure/environments/): The environments a pool is attached to.
- [Parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/): Create the parameters a pool supplies values for.
- [IP address management (IPAM)](/docs/cmp/configure/infrastructure/networks/ipam/): How CMP allocates IP addresses.
