Schema

Schema are top-level asset families : Devices, Applications, Laptops, Projects, Customers, Books, Facilities, Cooking Receipes, Invoices, etc.

Create a simple Schema

To manage laptops (for example), you can use a simple Schema:

- classname: _schema
  keyname: laptop
  displayname: User Laptops      

Go to the import tool from the left sidebar, and paste this YAML snippet. Clic on import. You can now manage laptops objects from the UI.

You can also use the CLI command :

$ cavaliba load laptop.yaml

To create a first laptop object in the new Schema, either use the Web UI (edit), or import the following YAML snippet:

- classname: laptop
  keyname: pc0001
  displayname: Evan's laptop      

Schema Reference


- classname: _schema
  _action: create/delete/update/enable/disable
  keyname: string
  displayname: string
  is_enabled: boolean
  order: int
  page: string
  _options:
      handle_method: [keyname|uuid|external|md5]
      icon: icon_name
      p_admin:  PERMISSION_NAME
      p_read:   PERMISSION_NAME
      p_create: PERMISSION_NAME
      p_update: PERMISSION_NAME
      p_delete: PERMISSION_NAME
      p_import: PERMISSION_NAME
      p_export: PERMISSION_NAME

  FIELDNAME1:
      (...)
   

Reserved Schema names

Some internal/builtin schema names are reserved and are not available for user-defined schemaes:

  • _schema
  • _user
  • _group
  • _role
  • _permission
  • _apikey
  • _enumerate
  • _dataview

Builtin Fields

All Schema share a small number of builtin fields.

  • keyname - primary key - unique name of the Schema ; no special chars ; must be unique. Some options exists to hide/auto-generate keyname if a user friendly value is not needed.
  • displayname - a short label for humans to read
  • is_enabled - true/false ; disabled objects are not available to regular users.
  • _options - dictionary of Schema options. See below
  • page - string, page name in the Web UI displaying the list of available DataClasses
  • order - int, display order in the Web UI

Schema _options

  • icon - string, name of a FontAwsome Icon to display in UI
  • permissions… - a set of permissions to control authorizations on instances
  • keyname_label : User friendly label for builtin keyname field.
  • keyname_mode : either edit (default) or auto (automatic uuid string)
  • displayname_label : User friendly label for builtin displayname field.
  • handle_method - method to create a unique HTML friendly primary key for instances
  • handle_show : true/false(default); hide or show handle field in UI

Schema Fields

Each Schema can have zero or more custom fields. These fields can be single-valued or multi-valued. They have a type from one of the available field types.

Field name must be a valid slug string (unique, no special chararcter) within the Schema.

See Field Types

Schema Example

This example create a Schema to manage user Laptops.

# Asset = User Laptops

- classname: _schema
  keyname: laptop
  displayname: User Laptops
  is_enabled: yes
  order: 200
  page: Data
  _options:
     icon: fa-laptop
     handle_method: md5

  serial:
        displayname: serial_number
        page: General
        order: 100
        dataformat: string
               
  name:
        displayname: hostname
        page: General
        order: 110
        dataformat: string

  os:
        displayname: Operating System
        page: General
        order: 120
        dataformat: enumerate
        dataformat_ext: enumerate_os

  site:      
        displayname: Site
        dataformat: schema
        dataformat_ext: site
        order: 130
        page: General
        cardinal_min: 0
        cardinal_max: 1 

  owner:      
        displayname: User
        dataformat: user
        order: 140
        page: General
        cardinal_min: 0
        cardinal_max: 0

  purchase_date:
        displayname: Purchase date
        dataformat: date

  waranty_end_date:
        displayname: Waranty end date
        dataformat: date

  bitlocker:
        displayname: Bitlocker
        page: Security
        order: 500
        dataformat: boolean