Fuzzball Documentation
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Resource Definitions

Resource definitions are used to manage the types of cloud compute instances that Fuzzball can provision in response to users’ requests.

Administrators create resource definitions by filling in the appropriate information in the Admin UI, or using the appropriate CLI commands. Creating initial resource definitions is made easier by using the automatic workflow that populates values based on the initial configuration in the CloudFormation (CFN) template. But the manual workflow offers more fine-grained control to configure resource definitions according to specific requirements.

The instructions in this document are intended for cloud Fuzzball installations.
Allocating resources allows users to incur costs. For reference, see this EC2 pricing guide and the substrate pricing information on the Fuzzball AWS Marketplace listing. Admins should review pricing information and be aware of the potential implications of running workflows before configuring new resource definitions.
Please select either the UI or CLI tab to see the appropriate instructions for your environment.

The Fuzzball Admin UI presents an option to automatically create an initial set of resource definitions based on the default values present in the CFN template during the installation procedure.

To use this feature, first navigate to the Admin UI URL for your Fuzzball cluster. (This URL can be found at https://ui-admin.<domain>) Now you can select the “Provision” option on the left. You will be presented with a screen like the following, informing you that you don’t have any resource definitions and asking if you’d like to create a default set.

If you don’t know how to access your admin console review the section on Accessing your Cluster.

Fuzzball Admin UI prompt to create default resource definitions

Selecting the blue “Create Default Provision Definitions” option will cause Fuzzball to create resource definitions based on the default parameters in the CFN template during the deployment process.

If your newly created resource definitions are not immediately visible, try pressing the UI refresh button toward the upper right of the dashboard.
If you encounter an error when creating default resource definitions, you may need to edit the values provided during installation in the CFN template.

In this example, two new resource definitions labeled default_standard and default_advanced are created.

Fuzzball Admin UI showing new resource definitions

If you want to review the initial resource definition configurations and potentially make adjustments, you can click the vertical ellipsis (kebob) menu to the right of a resource definition and inspect/change values like so:

Fuzzball Admin UI initial resource definition configuration

Finally, you can also create new resource definitions in the UI from scratch by clicking on the blue “Add Resource Definition” button in the upper right of the dashboard view.

Fuzzball Admin UI creating new resource definitions from scratch

There are a large number of configuration parameters available. Creating a set of default resource definitions and inspecting the initial configurations can give you hints about the values that you should enter to configure your new resource definitions from scratch.

Resource definitions can be specified using the fuzzball admin definition command group. Be sure to create and log into your admin context before issuing these commands like so. You will need to install the Fuzzball CLI binary to issue these commands.

$ fuzzball admin context create <context_name> <api_url>

$ fuzzball admin context login -u <admin_username> -p '<admin_password>'
If you don’t know how to access your admin console review the section on Accessing your Cluster.
Usage:
  fuzzball admin definition [command]

Aliases:
  definition, def

Available Commands:
  create      Create a new provision definition
  delete      Delete a definition by id
  get         Get details on a definition
  list        List definitions
  setup       Setup a new default definition
  update      Update a definition

The --help option will give detailed up-to-date information about the usage of each of these commands. For instance, fuzzball admin definition create --help will give you information on creating a resource definition via the CLI.

For convenience, information about managing resource definitions in the CLI with the available subcommands is summarized below.

The CLI --help docs have the most up-to-date information regarding sub-commands.

Setup Initial Resource Definitions Automatically

Similar to the push-button workflow described in the web-UI documentation on this page, you can automatically create an initial set of resource definitions based on the values entered in the CFN template during the installation procedure using the CLI. This is accomplished via the setup subcommand like so:

$ fuzzball admin definition setup 

{
  "definitions": [
    {
      "id": "8c6ef672-f600-4e73-ab32-92b50389ca4b",
      "memory": "32768MiB",
      "cpus": 4,
      "devices": {
        "@cpu/x86": 1
      },
      "cpu_type": "x86_64",
      "tags": {
        "ciq.co/cluster": "fuzzball-aws",
        "fuzzball.io/provider.aws.image_id": "ami-0c0a59e9e75d480e7",
        "fuzzball.io/provider.aws.instance_type": "t3a.2xlarge",
        "fuzzball.io/provision.namespace": "fuzzball",
        "global.cluster.name": "fuzzball-aws"
      },
      "provider": 1,
      "topology_zones": [
        "us-east-1a",
        "us-east-1b",
        "us-east-1c"
      ],
      "create_time": {
        "seconds": 1740597418,
        "nanos": 622586000
      },
      "update_time": {
        "seconds": 1740597418,
        "nanos": 622586000
      },
      "name": "default_standard",
      "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
    },
    {
      "id": "dc2730eb-f24a-4b60-b2fb-4bdccf7c3089",
      "memory": "62464MiB",
      "cpus": 4,
      "devices": {
        "@cpu/x86": 1,
        "multinode": 1,
        "nvidia.com/gpu": 1
      },
      "cpu_type": "x86_64",
      "tags": {
        "ciq.co/cluster": "fuzzball-aws",
        "fuzzball.io/provider.aws.image_id": "ami-0b6cf226eb2d3a3dc",
        "fuzzball.io/provider.aws.instance_type": "p3.2xlarge",
        "fuzzball.io/provision.namespace": "fuzzball",
        "global.cluster.name": "fuzzball-aws"
      },
      "provider": 1,
      "topology_zones": [
        "us-east-1b",
        "us-east-1c"
      ],
      "create_time": {
        "seconds": 1740597420,
        "nanos": 449662000
      },
      "update_time": {
        "seconds": 1740597420,
        "nanos": 449662000
      },
      "name": "default_advanced",
      "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
    }
  ]
}

Create a Resource Definition Manually

You can create a new resource definition with the create subcommand. This command works primarily by specifying values for tags to configure the new definition. For example, to create a new resource definition based on a t2.2xlarge instance, you could use the following syntax.

$ fuzzball admin definition create \
    --tag fuzzball.io/provider.aws.image_id=ami-0b6cf226eb2d3a3dc \
    --tag fuzzball.io/provider.aws.instance_type=t2.2xlarge \
    --device @cpu/x86=1 \
    --device @io.fuzzball/multinode=1 \
    aws

{
  "id": "94781fe6-1cf2-4b10-8a18-0921f10ecfdd",
  "memory": "32768MiB",
  "cpus": 8,
  "devices": {
    "@cpu/x86": 1,
    "@io.fuzzball/multinode": 1
  },
  "cpu_type": "x86_64",
  "tags": {
    "ciq.co/cluster": "fuzzball-aws",
    "fuzzball.io/provider.aws.image_id": "ami-0c0a59e9e75d480e7",
    "fuzzball.io/provider.aws.instance_type": "t2.2xlarge",
    "fuzzball.io/provision.namespace": "fuzzball",
    "global.cluster.name": "fuzzball-aws"
  },
  "provider": 1,
  "topology_zones": [
    "us-east-1a",
    "us-east-1b",
    "us-east-1c"
  ],
  "create_time": {
    "seconds": 1740596365,
    "nanos": 91761000
  },
  "update_time": {
    "seconds": 1740596365,
    "nanos": 91761000
  },
  "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}

Or to create a resource definition based on Kubernetes pods, you could use syntax like so:

$ fuzzball admin definition create \
    --tag fuzzball.io/provider.kubernetes.memory=1Gb \
    --tag fuzzball.io/provider.kubernetes.cpus=1 \
    --tag fuzzball.io/provider.kubernetes.cpu_type=x86_64 kubernetes default

{
  "id": "a02624b5-4bfb-4ad9-9042-174f9baac9d8",
  "memory": "1Gb",
  "cpus": 1,
  "devices": {
    "@cpu/x86": 1
  },
  "cpu_type": "x86_64",
  "tags": {
    "ciq.co/cluster": "fuzzball-aws",
    "fuzzball.io/provider.kubernetes.cpu_type": "x86_64",
    "fuzzball.io/provider.kubernetes.cpus": "1",
    "fuzzball.io/provider.kubernetes.memory": "1Gb",
    "fuzzball.io/provision.namespace": "fuzzball",
    "global.cluster.name": "fuzzball-aws"
  },
  "provider": 4,
  "create_time": {
    "seconds": 1740596463,
    "nanos": 437726000
  },
  "update_time": {
    "seconds": 1740596463,
    "nanos": 437726000
  },
  "name": "default",
  "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}

List Resource Definitions in a Cluster

You can list the existing resource definitions in your cluster like so:

$ fuzzball admin definition list

ID                                   | NAME             | PROVIDER | CPUS | CPUTYPE | MEMORY   | DEVICES | TAGS | INACTIVE | CLUSTER     
8cf74435-a91a-4c9c-aea4-c5837075588b | default_standard | aws      | 4    | x86_64  | 32768MiB | None    | 5    | false    | fuzzball-aws
094e8aea-8f2a-4377-9180-3b1762888ce4 | default_advanced | aws      | 4    | x86_64  | 62464MiB | 2       | 5    | false    | fuzzball-aws

Get Information About an Existing Resource Definition

You can get detailed information about an existing resource definition by querying it with the get subcommand. You need to reference the resource by its ID like so:

$ fuzzball admin definition get 094e8aea-8f2a-4377-9180-3b1762888ce4

{
  "id": "094e8aea-8f2a-4377-9180-3b1762888ce4",
  "memory": "62464MiB",
  "cpus": 4,
  "devices": {
    "@cpu/x86": 1,
    "multinode": 1,
    "nvidia.com/gpu": 1
  },
  "cpu_type": "x86_64",
  "tags": {
    "ciq.co/cluster": "fuzzball-aws",
    "fuzzball.io/provider.aws.image_id": "ami-0b6cf226eb2d3a3dc",
    "fuzzball.io/provider.aws.instance_type": "p3.2xlarge",
    "fuzzball.io/provision.namespace": "fuzzball",
    "global.cluster.name": "fuzzball-aws"
  },
  "provider": 1,
  "topology_zones": [
    "us-east-1b",
    "us-east-1c"
  ],
  "create_time": {
    "seconds": 1740593100,
    "nanos": 759447000
  },
  "update_time": {
    "seconds": 1740593100,
    "nanos": 759447000
  },
  "name": "default_advanced",
  "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}

Update an Existing Resource Definition

You can update a resource definition after it has been created or inactivate/reactivate it by using the update subcommand. In addition to the --device and --tag options that are available in the create subcommand, there is a --provider option to change the resource provider and a --inactive option to set the status of the resource definition (with the arguments true or false). For example, to set a definition as inactive you could use the following command:

$ fuzzball admin definition update --inactive a02624b5-4bfb-4ad9-9042-174f9baac9d8

{
  "id": "a02624b5-4bfb-4ad9-9042-174f9baac9d8",
  "memory": "1Gb",
  "cpus": 1,
  "devices": {
    "@cpu/x86": 1
  },
  "cpu_type": "x86_64",
  "tags": {
    "ciq.co/cluster": "fuzzball-aws",
    "fuzzball.io/provider.kubernetes.cpu_type": "x86_64",
    "fuzzball.io/provider.kubernetes.cpus": "1",
    "fuzzball.io/provider.kubernetes.memory": "1Gb",
    "fuzzball.io/provision.namespace": "fuzzball",
    "global.cluster.name": "fuzzball-aws"
  },
  "inactive": true,
  "provider": 4,
  "create_time": {
    "seconds": 1740596463,
    "nanos": 437726000
  },
  "update_time": {
    "seconds": 1740596704,
    "nanos": 718488000
  },
  "name": "default",
  "cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}

$ fuzzball admin definition list --inactive 
ID                                   | NAME    | PROVIDER   | CPUS | CPUTYPE | MEMORY | DEVICES | TAGS | INACTIVE | CLUSTER     
a02624b5-4bfb-4ad9-9042-174f9baac9d8 | default | kubernetes | 1    | x86_64  | 1Gb    | None    | 6    | true     | fuzzball-aws

Delete a Resource Definition

To delete a resource definition use the delete subcommand in combination with the resource ID like so:

This action will take effect immediately. The resource definition will be deleted without any additional prompt and may affect running workflows. It is a best practice to set resource definitions to inactive before deleting them.
$ fuzzball admin definition delete a02624b5-4bfb-4ad9-9042-174f9baac9d8

Deleted definition id: a02624b5-4bfb-4ad9-9042-174f9baac9d8