CLI Composable Hardware

This is a list of composable hardware tasks which can be performed with the MAAS CLI. See MAAS CLI for how to get started with the CLI and Composable hardware for an overview of the subject, including important details on the differences between RSD pods and Virsh pods.

Register a Pod

To register/add a Pod:

maas $PROFILE pods create type=$POD_TYPE power_address=$POWER_ADDRESS \
    [power_user=$USERNAME] [power_pass=$PASSWORD]

In the case of the Virsh power type, both USERNAME and PASSWORD are not needed.

For example, to create an RSD pod:

maas $PROFILE pods create type=rsd power_address=10.3.0.1:8443 \
    power_user=admin power_pass=admin

And to create a Virsh pod:

maas $PROFILE pods create type=virsh power_address=qemu+ssh://ubuntu@192.168.1.2/system

See Pod configuration for details on Virsh over commit ratios and storage pools, as used in the following examples.

Create a Virsh pod with over commit ratios:

maas $PROFILE pods create type=virsh power_address=qemu+ssh://ubuntu@192.168.1.2/system \
        power_pass=example cpu_over_commit_ratio=0.3 memory_over_commit_ratio=4.6

Create a Virsh pod that uses a default storage pool:

maas $PROFILE pods create type=virsh power_address=qemu+ssh://ubuntu@192.168.1.2/system \
        power_pass=example default_storage_pool=pool1

List resources of all Pods

List the resources of all Pods:

maas $PROFILE pods read

For example, this will grab Pod IDs (POD_ID) and their MAAS names:

maas $PROFILE pods read | grep -A6 id

Sample output:

        "id": 93,
        "capabilities": [
            "composable",
            "fixed_local_storage",
            "iscsi_storage"
        ],
        "name": "civil-hermit",

List resources of a Pod

To list an individual Pod's resources:

maas $PROFILE pod read $POD_ID

Update Pod configuration

Update over commit ratios for a Virsh pod:

maas $PROFILE pod update $POD_ID power_address=qemu+ssh://ubuntu@192.168.1.2/system \
        power_pass=example cpu_over_commit_ratio=2.5 memory_over_commit_ratio=10.0

Update the default storage pool used by a Virsh pod:

maas $PROFILE pod update $POD_ID power_address=qemu+ssh://ubuntu@192.168.1.2/system \
        power_pass=example default_storage_pool=pool2

List Pod connection parameters

To list a Pod's connection parameters:

maas $PROFILE pod parameters $POD_ID

Example output:

{
    "power_address": "10.3.0.1:8443",
    "power_pass": "admin",
    "power_user": "admin"
}

Compose Pod machines

To compose a Pod's machines:

maas $PROFILE pod compose $POD_ID

Example output for default composing:

{
    "system_id": "73yxmc",
    "resource_uri": "/MAAS/api/2.0/machines/73yxmc/"
}

Compose with resources specified:

maas $PROFILE pod compose $POD_ID $RESOURCES

Where RESOURCES is a space-separated list from:

cores=requested cores
cpu_speed=requested minimum cpu speed in MHz
memory=requested memory in MB
architecture=requested architecture that Pod must support

For example:

maas $PROFILE pod compose $POD_ID \
    cores=40 cpu_speed=2000 memory=7812 architecture="amd64/generic"

Compose a Virsh machine with two disks; one from pool1 and the other from pool2:

maas $PROFILE pod compose $POD_ID storage=root:32(pool1),home:64(pool2)

Compose and allocate a Pod machine

In the absence of any nodes in the 'New' or 'Ready' state, if a Pod of sufficient resources is available, MAAS can automatically compose (add), commission, and acquire a Pod machine. This is done with the regular allocate sub-command:

maas $PROFILE machines allocate

List machine parameters

The MAAS node may be a composed machine in which case its resources will be included in the output:

maas $PROFILE machine read $SYSTEM_ID

Decompose a Pod machine

To decompose a Pod machine by deleting the corresponding MAAS node:

maas $PROFILE machine delete $SYSTEM_ID

If the Pod's resources are now listed (pod read $POD_ID), it would be seen that the resources for this machine are available and no longer used.

Delete a Pod

To delete a Pod (and decompose all its machines):

maas $PROFILE pod delete $POD_ID