Plugins

Schema

OpenAPI Docs

You can find the Open API Docs formatted by redoc here.

OpenAPI Definition

You can find the OpenAPI JSON definition here.

JSON Schema Definition

You can find the JSON Schema definition here.

Examples

Minimal

The minimal configuration for a plugin can be found below. The keys indicated here are the ones you absolutely have to fill in for this plugin to be validated by Queenbee.

metadata:
  name: minimum-viable-plugin
  tag: 0.0.1
config:
  docker:
    image: some/docker-image:latest
    workdir: /some/absolute/directory
functions: []

Fully Configured

The plugin below shows example values for every possible key in the Plugin object.

metadata:
  name: full-plugin
  tag: 0.0.1
  app_version: 3.4.3
  description: A test plugin with every possible bit of metadata included
  keywords:
  - test
  - full
  maintainers:
  - name: ladybugbot
    email: ladybugbot@ladybug.tools
  home: https://ladybug.tools/full-plugin
  sources:
  - https://github.com/ladybug-tools/full-plugin
  - https://gihtub.com/ladybug-tools/queenbee
  icon: https://www.ladybug.tools/assets/img/logo.png
  deprecated: false
config:
  docker:
    image: some/docker-image:latest
    registry: https://docker.pkg.github.com # Github Registry
    workdir: /some/absolute/directory
functions:
- name: minimum-function
  command: echo woop

Energy Plus

This plugin is the one created when following the Plugin Creation Guide.

annotations: {}
metadata:
  annotations: {}
  name: energy-plus
  tag: 0.1.0
  app_version: 9.0.1
  keywords:
  - energyplus
  maintainers: null
  home: https://energyplus.net
  sources:
  - https://github.com/nrel/energyplus
  icon: https://energyplus.net/sites/default/files/eplus_logo.png
  deprecated: null
  description: A plugin to run EnergyPlus functions
  license: null
config:
  annotations: {}
  docker:
    annotations: {}
    image: nrel/energyplus:9.0.1
    registry: null
    workdir: /var/simdata
  local: null
functions:
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: idf
    description: null
    default: null
    required: true
    spec: null
    path: input.idf
    extensions: null
  outputs:
  - annotations: {}
    type: FunctionFileOutput
    name: outputs
    description: null
    path: simulation-outputs
  name: design-day-simulation
  description: Run an EnergyPlus Design Day simulation using a weather file and an
    idf
  command: energyplus -D -x -d simulation-outputs input.idf
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: idf
    description: null
    default: null
    required: true
    spec: null
    path: input.idf
    extensions: null
  - annotations: {}
    type: FunctionFileInput
    name: weather
    description: null
    default: null
    required: true
    spec: null
    path: weather.epw
    extensions: null
  outputs:
  - annotations: {}
    type: FunctionFolderOutput
    name: outputs
    description: null
    path: simulation-outputs
  name: run-simulation
  description: Run an EnergyPlus simulation using a weather file and an idf
  command: energyplus -w weather.epw -x -d simulation-outputs input.idf

Honeybee Radiance

This is an example plugin called honeybee-radiance. This plugin uses the honeybee-radiance CLI in a Docker container which has radiance installed on it. Each function is templated with parameter inputs and explicitely indicates the artifacts (files) it expects to find at a certain path.

Note

The app_version matches the docker container release tag.

annotations: {}
metadata:
  annotations: {}
  name: honeybee-radiance
  tag: 1.2.3
  app_version: 2.3.2
  keywords:
  - honeybee
  - radiance
  - ladybug-tools
  maintainers:
  - annotations: {}
    name: mostapha
    email: mostapha@ladybug.tools
  home: https://ladybug.tools/honeybee-radiance/docs
  sources:
  - https://github.com/ladybug-tools/honeybee-radiance
  icon: https://www.ladybug.tools/assets/img/logo.png
  deprecated: null
  description: A plugin to run all things honeybee and radiance!
  license: null
config:
  annotations: {}
  docker:
    annotations: {}
    image: ladybugtools/honeybee-radiance:2.3.2
    registry: null
    workdir: /opt/run/
  local: null
functions:
- annotations: {}
  inputs: []
  outputs:
  - annotations: {}
    type: FunctionFileOutput
    name: sky
    description: The resulting sky object
    path: sky.sky
  name: 10000-lux-sky
  description: Generates a 10000 lux sky
  command: honeybee radiance sky illuminance 100000
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: model
    description: null
    default: null
    required: true
    spec: null
    path: model.json
    extensions: null
  - annotations: {}
    type: FunctionFileInput
    name: sky
    description: null
    default: null
    required: true
    spec: null
    path: sky.sky
    extensions: null
  outputs:
  - annotations: {}
    type: FunctionFileOutput
    name: scene-file
    description: null
    path: scene.oct
  name: create-octree
  description: Generate an octree
  command: honeybee radiance oconv -s sky.sky -m model.json --output scene.oct
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: raw-results-folder
    description: null
    default: null
    required: true
    spec: null
    path: raw
    extensions: null
  outputs:
  - annotations: {}
    type: FunctionNumberOutput
    name: daylight-factor-average
    description: null
    path: output/avg
  - annotations: {}
    type: FunctionNumberOutput
    name: daylight-factor-max
    description: null
    path: output/max
  - annotations: {}
    type: FunctionFileOutput
    name: post-process-folder
    description: null
    path: output
  name: post-process
  description: Post process your results and $$$
  command: honeybee radiance grid merge raw --folder output
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: grid
    description: null
    default: null
    required: true
    spec: null
    path: grid.pts
    extensions: null
  - annotations: {}
    type: FunctionStringInput
    name: radiance-parameters
    description: a string of radiance parameters
    default: -ab 5
    spec: null
  - annotations: {}
    type: FunctionFileInput
    name: scene-file
    description: null
    default: null
    required: true
    spec: null
    path: scene.oct
    extensions: null
  outputs:
  - annotations: {}
    type: FunctionFileOutput
    name: result-file
    description: null
    path: grid.res
  name: ray-tracing
  description: Run ray tracing using some input data!
  command: rtrace -I -h {{inputs.radiance-parameters}} scene.oct < grid.pts > grid.res
- annotations: {}
  inputs:
  - annotations: {}
    type: FunctionFileInput
    name: grid
    description: The input grid to split
    default: null
    required: true
    spec: null
    path: grid.pts
    extensions: null
  - annotations: {}
    type: FunctionIntegerInput
    name: grid-count
    description: null
    default: null
    required: true
    spec: null
  outputs:
  - annotations: {}
    type: FunctionArrayOutput
    name: grid-list
    description: null
    path: output/grids.txt
    items_type: String
  - annotations: {}
    type: FunctionFolderOutput
    name: output-grids-folder
    description: null
    path: output
  name: split-grid
  description: null
  command: honeybee radiance grid split grid.pts --folder output --log-file output/grids.txt