Database > Collections

Static Data

By “static data” we mean data held in the database that does not change particularly often, and certainly not through regular use of the CloudForest platform. This could perhaps be thought of as the high-level configuration data for the system.


Our options collection stores configuration options influence how cfserver operates. There are four main categories:

  • server, containing options related to server setup and operation

  • aws, containing AWS-related options (including credentials)

  • comms, containing communication-related options (e.g., Slack channel POST url)

  • and metrics, containing a description of the metrics server

By storing these options online in the database we make online administration possible. Options can be changed and the server “reloaded” with these updated settings from our Admin page, without ever having to actually log in the the instance running cfserver.


The awsdata collection holds data on AWS instances that can be used in the platform. Specifically, awsdata is a collection of json objects describing EC2 instances along with any internal flags like availability (whether we allow the instance or not).


The templates collection keeps the pug templates used to construct the emails we send corresponding to various events. Templates are identified by their name and have body and subject fields (as strings in pug markup form), a description, and a dictionary of variables the pug templates for the body and subject will expect.

Dynamic Data

By “dynamic data” we mean data held in the database that does change often, and primarily through regular use of the CloudForest platform.


The shadow collection holds platform secrets like user passwords (in unix-hashed form, never cleartext) and API keys. There are no large-scale access routines for data from shadow written into cfserver.


Data about who can use the system is stored in the users collection. Each user is primarily identified by their uid, has name details, stores group memberships by MongoDB _id and name:

    "_id" : ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx"), 
    "uid" : "cfuser", 
    "groups" : {
        "xxxxxxxxxxxxxxxxxxxxxxxx" : "test-group", 
        "xxxxxxxxxxxxxxxxxxxxxxxx" : "facultyA"
    "name" : {
        "first" : "Some", 
        "middle" : "C. F.", 
        "last" : "User", 
        "display" : "C. F. User"

There is other data, particularly a user profile, history, created/updated times, as well.


The groups collection stores information about the CloudForest groups. Groups are mainly identified by their name, but can also hold a description, have a list of admins (the uids of the admin users), a list of members (by _id, with name and “rights” in the group), a list of instances the group currently has (by _id and name), and a history of all instances the group has had (by _id and name).





Any alert sent to cfserver from an instance, AWS Lambda functions, or from kapacitor is stored in the alerts collection.


The emails collection holds a permanent record of the emails cfserver sends to users of the platform via AWS’s SES service. This includes the Destination (all to, cc, and Bcc recipients), Message (body and subject), source, state (e.g., sent), and an SES messageId.


The errors collection holds errors that are POSTed to cfserver by the ErrorBoundary in our react.js dashboard.

Was this page useful?   or