Skip to main content

Bulk data management

Topaz offers four commands to manage data (objects and relations) in bulk:

  import             import directory objects
export export directory objects
backup backup directory data
restore restore directory data

Importing objects and relations​

topaz directory import imports objects and relations in JSON format into the Topaz directory. It takes a directory argument and attempts to import all JSON files in that directory.

Example:

topaz directory import -d .
>>> importing data from /Users/ogazitt/.local/share/topaz/todo/data
object types skipped
permissions skipped
relation types skipped
objects 19
relations 20

JSON format​

The format for the JSON files looks like this:

Each file is a JSON object with an objects key or a relations key, which in turn provide an array of object or relation objects.

Objects​

{
"objects": [
{
"type": "group",
"id": "admin",
"display_name": "admin-group",
"properties": {},
},
...
]
}

Note that each object must have a type key, and the value must be defined as one of the types in the manifest. Each object also must have a unique id key (within the scope of that type). Finally, an object may have an optional display_name and an optional properties bag.

Relations​

{
"relations": [
{
"object_type": "group",
"object_id": "admin",
"relation": "member",
"subject_type": "user",
"subject_id": "rick@the-citadel.com"
},
...
]
}

Note that each relation has at least five fields:

  • object_type: type of the source object (defined in the manifest)
  • object_id: unique ID of the source object
  • relation: a valid relation for object_type, defined in the manifest
  • subject_type: the type of the target of the relationship (defined in the manifest)
  • subject_id: unique ID of the target object
  • subject_relation: (OPTIONAL) target relation, in case the manifest defines the relation target as type#relation.

Exporting objects and relations​

topaz directory export dumps the objects and relations into two files called objects.json and relations.json, in the directory specified with the -d option.

Example:

topaz directory export -d . -i
>>> exporting data to .
object types skipped
permissions skipped
relation types skipped
objects 19
relations 20

Backing up a directory​

topaz directory backup creates a tarball with the objects.json and relations.json files. The file is named backup.tar.gz by default. To choose a different name, pass in the filename argument.

Example:

topaz directory backup -i b.tar.gz
>>> backup to b.tar.gz
object types skipped
permissions skipped
relation types skipped
objects 19
relations 20

Restoring a directory from a backup​

topaz directory restore restores the directory data from a tarball named backup.tar.gz by default. To choose a different name, pass in the filename argument.

Example:

topaz directory restore  -i backup.tar.gz
>>> restore from /tmp/new/backup.tar.gz
object types skipped
permissions skipped
relation types skipped
objects 19
relations 20