zcli brand commands for the manufacturer brands that group models, and zcli model commands for creating, viewing, updating, importing, and deleting hardware models, uploading model logos, and managing PCR (Platform Configuration Register) templates, with syntax and examples for each operation.
A hardware model is a JSON description of a device: its processor architecture, resources, and I/O adapters. Every hardware model belongs to a brand, so create or identify the brand first.
Before You Start
- ZCLI is installed and authenticated against your enterprise. See Get Started.
- You have the SysManager or SysAdmin role in your enterprise. See Manage Roles. Creating a model from scratch in the global catalog through the console is restricted to cluster and CSP (cloud service provider) administrators. See Create a Custom Hardware Model.
- You have a hardware model JSON file that describes the device. For how to discover adapter information and what each field means, see Create a Custom Hardware Model.
- Any file you pass to ZCLI (a hardware model JSON file, a logo image, or a PCR template) must be inside the ZCLI Docker container. Copy files in with
docker cpbefore you run the command. - For GUI-based hardware model management, see Hardware Models, Import Hardware Models, and Create a Custom Hardware Model.
docker ps.
Manage Brands
A brand is the manufacturer grouping that a hardware model belongs to. Before you create a model, list the existing brands and create the brand only if it does not already exist.View brands
Runzcli brand show without arguments to list all brands. Pass a brand name for a single brand, add --detail for its full configuration, or use --name-pattern to filter the list by a substring of the name.
Create a brand
If your hardware brand does not appear inzcli brand show, create it. If you omit --title, ZCLI uses the name as the title.
In the current version of ZCLI,
zcli brand create fails with an error when you pass --systemmfgname. If you omit the flag, ZCLI uses the brand name as the manufacturer name. To set a different manufacturer name, create the brand without --systemmfgname, then set the value with zcli brand update <name> --systemmfgname=<system-mfg-name>.Update a brand
You can update the title, description, logo, manufacturer name, or origin type of a brand. The brand name cannot be changed. Passing--logo replaces any existing brand logo.
Delete a brand
ZCLI prompts for confirmation unless you pass-f.
Manage Hardware Models
Create a hardware model
Create a hardware model from a JSON definition file and attach it to a brand. The--brand and --hardware-details options are required. If you omit --title, ZCLI uses the model name as the title.
spec.sh on a device running EVE-OS (Edge Virtualization Engine). ZCLI reads the following top-level keys and ignores anything else: arch, attr, ioMemberList, logo, productURL, and productStatus. The arch value is 2 for AMD64 or 4 for ARM64. ZCLI also accepts the strings AMD64 and ARM64. Each entry in ioMemberList describes one adapter. For the meaning of ztype, phylabel, logicallabel, and assigngrp, and for how to discover them on a device, see Create a Custom Hardware Model.
The following is a trimmed, representative example of a hardware details file.
logo object contains file paths, ZCLI uploads those files as the model logos during creation. If you do not have logo images yet, leave the values empty as shown. Placeholder paths that do not exist in the container produce an error. You can add logos later with zcli model add-artifact. See Update Hardware Model Logos.
View hardware models
Runzcli model show without arguments to list all hardware models in your enterprise. Pass a model name or --uuid for a single model, and add --detail to print its full configuration, including the adapter list. Use --brand, --name-pattern, or --origin-type to filter the list. Use --origin-type=global to view models in the global catalog that you have not yet imported.
Update a hardware model
Update the title, description, brand, origin type, or hardware details of an existing model. To change the adapter list or resources, edit the hardware model JSON file, copy it into the ZCLI container again, and pass it with--hardware-details.
Changes to a hardware model apply to every edge node that references the model.
If the hardware details file contains a logo object, ZCLI deletes the model’s existing logos and uploads the image files that the logo object lists. If the file has no logo object, the existing logos stay unchanged. See Export a hardware model manifest before you reuse an exported manifest.
Import a hardware model from the global catalog
Create a copy of a ZEDEDA-published hardware model in your enterprise library, optionally overriding its memory, storage, and CPU attributes. Usezcli model show --origin-type=global to find the parent model name. ZCLI runs the import as a background job and waits for it to finish.
Export a hardware model manifest
Export the configuration of a hardware model to a local directory inside the ZCLI container. ZCLI creates a directory named after the model, writes the configuration tomanifest.json inside it, and downloads any logo images into an artifacts subdirectory. The command fails if a file or directory with the model name already exists. Use --signed-url to download the logo images through signed URLs.
manifest.json is a valid hardware details file. You can edit it and pass it back with zcli model update --hardware-details.
Delete a hardware model
ZCLI prompts for confirmation unless you pass-f.
Update Hardware Model Logos
Logos are front and back images of the physical device that appear with the model in the Marketplace. Obtain the images from a source that complies with your organization’s copyright and licensing standards, and copy both image files into the ZCLI container before you start.zcli model add-artifact or by editing an exported manifest.
Add a logo with add-artifact
Upload one image and attach it to the model under the given type. Run the command once for the front logo and once for the back logo. The type is the key that the logo is stored under in the model’slogo object, so use logo_front and logo_back to match the keys in the hardware details file. [TBD: verify the accepted --type values; the original Help Center example used logo-front and logo-rear, while hardware details files and spec.sh output use logo_front and logo_back.]
Remove a logo with drop-artifact
Remove the logo stored under the given type from the model and delete the uploaded image.Update logos through the manifest
Alternatively, export the model manifest, point thelogo entries at the image files in the container, and update the model from the edited manifest.
- Export the model manifest. ZCLI creates a directory named after the model.
- Edit
UNO-148/manifest.jsonand set thelogoobject to the paths of the image files inside the container.
- Update the model from the edited manifest. ZCLI uploads both images and replaces any existing logos.
- Confirm the change in the console. In the sidebar, select Marketplace, then My Library, and open the hardware model.
Manage PCR Templates
A PCR template is a named set of expected PCR values for a specific EVE-OS version that Edge Infrastructure Services compares against a node during remote attestation. Templates are attached to hardware models in your enterprise library. For background and the GUI procedure, see Manage PCR Templates. PCR template files are JSON. A single-template file haseveVersion, firmwareVersion, name, and a PCRValues array, where each entry has type, index, and value. The following is a trimmed example.
Add a PCR template
Add one PCR template to a model from a file. Values in the file take precedence over the--eve-version, --pcr-template-name, and --firmware-version options; the options fill in any field the file leaves empty. Use --index one or more times to upload only the listed PCR indices from the file. If you do not provide a firmware version, the template matches any firmware version. The template name must be unique on the model.
Add several PCR templates at once
Add a list of PCR templates from a single file. The file contains a JSON array in which each element has the same structure as a single-template file.View PCR templates
Fetch the PCR templates configured on a model and write them to a file named<name>.pcr-templates in the current directory. Without a filter, ZCLI writes all templates. Filter by --eve-version or --pcr-template-name, and add --partial-match to match a substring instead of the full value.
zcli model show <name> --pcr-template-summary.
Update a PCR template
Replace the contents of an existing PCR template with the contents of a file. ZCLI identifies the template by theid field in the file, or, if the file has no id, by --pcr-template-name. Use --index to upload only the listed PCR indices from the file. The easiest way to produce an update file is to run zcli model get-pcr-template, edit the exported template, and pass it back.
Delete a PCR template
Remove a PCR template from a model, selected by EVE-OS version or by template name. With--partial-match, ZCLI removes every template whose version or name contains the given substring.
Next Steps
Hardware Models
Browse the ZEDEDA hardware catalog in the console.
Import Hardware Models
Import catalog models into your enterprise library with the GUI.
Create a Custom Hardware Model
Discover adapter information and the hardware model field reference.
Overview
All ZCLI command procedures, organized by resource type.