Skip to content

Releases: pollination/queenbee

v1.14.0

09 Jun 07:09
Compare
Choose a tag to compare

1.14.0 (2020-06-09)

Bug Fixes

  • cli: add tag to new template assets (199d628)
  • config: add jwt auth and utility functiooons (7308bae), closes #93
  • packaging: generate tar files without using filesystem (d70dcae), closes #96
  • recipe: add auth headers to dependency calls in cli (2ef30e7), closes #93
  • recipe: remove old kwarg from package call in cli (5af48e9)

Features

  • auth: integrate auth headers to registry requests (84add41), closes #93
  • config: add config commands to cli (81122e2), closes #93
  • tags: kill version with 🔥 (b866afa), closes #95

v1.13.4

02 Jun 14:18
Compare
Choose a tag to compare

1.13.4 (2020-06-02)

Bug Fixes

  • dependency: seperate tar unpack from global fetch function (882bedf)

v1.13.3

02 Jun 06:40
Compare
Choose a tag to compare

1.13.3 (2020-06-02)

Bug Fixes

  • doc: add license and readme support to folders (9b78c69), closes #92

v1.13.2

01 Jun 14:55
Compare
Choose a tag to compare

1.13.2 (2020-06-01)

Bug Fixes

  • recipe-dep: add extra checks before collecting dependencies (17f35af)

v1.13.1

30 May 18:45
Compare
Choose a tag to compare

1.13.1 (2020-05-30)

Bug Fixes

  • dag: fix is_root method for dags with None dependencies (f5110c8)
  • recipe: add better error message for missing dependency (2d390c2)

v1.13.0

29 May 15:03
Compare
Choose a tag to compare

1.13.0 (2020-05-29)

Bug Fixes

  • dag: add check and warning for empty output artifact paths (99640ed)
  • dag: set sub_folder in DAG Task and allow templating (576a5c5)
  • inputs: for None I/O to empty dict (3c15e25), closes #86

Features

  • loop: add loop control object (030ca32), closes #87

v1.12.0

26 May 13:33
Compare
Choose a tag to compare

1.12.0 (2020-05-26)

Bug Fixes

  • pydantic: allow reuse on recipe flow validators (a0adefb)
  • reference: correct reference string (25c72c6)
  • workflow: from baked recipe (46d5fef)

Features

  • recipe: dependency folder rework and symlinks (237b37e), closes #82

v1.11.0

21 May 13:49
Compare
Choose a tag to compare

1.11.0 (2020-05-21)

Bug Fixes

  • baked recipe: fix inherited validators to work with recipe and baked recipe (f0676cb)
  • cli: clean code and fix docs (d8169e7)
  • cli: replace recipe dependency with simple install (ec1eafd)
  • conf.py: create _static/schemas folder if doesn't exist (b209fa6)
  • dependency: fix package_url (5b6b0c0)
  • function: fix command validation (95001eb)
  • functions: reference value check (7671336)
  • lists: sort schema lists deterministically (84143e3)
  • operator: use snake_case for schema keys (1f1ce5a), closes #50
  • packaging: lenient packaging path location (85264ab)
  • recipe: better validation and validation messages (7af3c2d)
  • recipe: check template names (26783d7)
  • recipe: don't lock dependencies when writin folder (00f26d9)
  • recipe: fix dependency lock and Windows separator (d509da7)
  • recipe: fix entrypoint check to work with classes inheriting from Recipe (4b7d8e8)
  • recipe: read/write from/to folders (c65ef7f)
  • repository: generate from folder, enable merge (4425365)
  • serialization: remove "Enum" classes from dict and pass exclude_unset option (3cf2e22)
  • workflow: nest recipe inside of workflow instead of inheriting (b6e0542)

Features

  • cli: add repository serve and init commands (7f8705f)
  • cli: commands to generate/manage recipes, operators and repositories (6448627), closes #47
  • functions: update function and operator schema (b596a5b)
  • schema: mega refactor! (1171778), closes #39 #41 #42
  • schemas: create repository schema, read/write from folder and create archives (1cb53e5), closes #47 #42
  • workflow: generate workflow from a baked recipe (183561a)

Performance Improvements

  • folders: write yaml folders without empty values (9f3e9d7)

Reverts

  • artifact location: kill it with 🔥 (194862e)

Details

Separate Workflow into Operators, Recipes and Workflows

Two main issues led us to split the old Workflow object into three separate objects:

  • Confusion between Workflow template and Workflow object executed by Argo or Luigi #39
  • Re-usability of Workflows

For this reason we introduce the three following Queenbee Objects:

  • Operator: A list of functions (templated commands) for 1 cli tool (eg: radiance-operator would template command for radiance)
  • Recipe: A reusable DAG definition of Operator Functions or other Recipes (#42) (ie: a recipe can use another recipe inside of itself)
  • Workflow: A Recipe + Input Arguments run by an executor (ie: luigi or argo). The schema will not be used by Queenbee explicitely but serves as a common definitions or interface for the different execution engines to report progress of an executed Recipe.

Introduce Dependency Management

Despite all warnings we went ahead and built a package manager... This was a requirement for Recipes to be shareable and modular (ie: a recipe could refer to a certain operator without having to copy all the operator data).

To do so we drew heavy inspiration from the Helm project (#47 ). This means that Queenbee packaging and sharing remains open sourced and freely available for those who wish to create their own registries of Recipes and Operators.

Artifact Path Context (remove artifact_location)

Artifact Locations have been removed to make recipes more reusable. Hard coding the location to persist a file inside a DAG lead to re-usability issues when nesting Recipes inside each other. It was therefore preferable to establish the concept of artifact path context:

Queenbee Workflow - Cloud Path Context

Queenbee Workflow - Local Run Path Context

Function Path Context

When an artifact path is declared within an Operator Function, this path is only relevant or valid in the context of this function. In practice this means that a Function doesn't care where an artifact is persisted when it is executed because it knows that the executor (argo or luigi) will move copy the artifact to the path it expects it to be in the command.

name: ray-tracing
description: Run ray tracing using some input data!
inputs:
  parameters:
  - name: radiance-parameters
    description: a string of radiance parameters
    default: -b 5
  artifacts:
  - name: grid
    path: grid.pts
  - name: scene-file
    path: scene.oct
command: rtrace -I -h {{inputs.parameters.radiance-parameters}} scene.oct < grid.pts > grid.res
outputs:
  artifacts:
  - name: result-file
    path: grid.res

Recipe Path Context

When an artifact path is declared in a Recipe DAG it points to a folder or S3 bucket location where it expects the artifact to be pulled from (input) or pushed to (output). This path does not overwrite the one in the Operator Function context. Instead the executor (argo or luigi) will copy the artifact from the Recipe Context to the Function Context for inputs and vice versa for outputs

name: main
inputs:
  parameters:
  - name: sensor-grid-count
    description: The maximum number of grid points per parallel execution
    default: 100
  - name: radiance-parameters
    description: The radiance parameters for ray tracing
    default: -I -ab 2 -h
  
  artifacts:
  - name: model
    description: A Honeybee model with radiance properties
    required: true
  - name: input-grid
    description: A grid file
    required: true

tasks:
   ...

- name: daylight-factor-simulation
  template: honeybee-radiance/ray-tracing
  dependencies:
  - split-grid
  - create-octree
  loop:
    from:
      type: tasks
      name: split-grid
      variable: grid-list
    sub_folder:
    - item.name
  arguments:
    parameters:
    - name: radiance-parameters
      from:
        type: inputs
        variable: radiance-parameters
    artifacts:
    - name: grid
      from:
        type: tasks
        name: split-grid
        variable: output-grids-folder
      subpath: '{{item.name}}'
    - name: scene-file
      from:
        type: tasks
        name: create-octree
        variable: scene-file
  outputs:
    artifacts:
    # This file is persisted in a loop sub-folder so the name won't clash
    - name: result-file
      path: grid.res
 ...
outputs:
  artifacts:
  - name: data
    from:
      type: tasks
      name: post-process
      variable: post-process-folder
  parameters:
  - name: average
    from:
      type: tasks
      name: post-process
      variable: daylight-factor-average

Overhaul Documentation...

Read more

v1.10.0

31 Mar 00:14
Compare
Choose a tag to compare

1.10.0 (2020-03-31)

Bug Fixes

  • workflow: add root_validator for workflow referenced values (35aa2f9), closes #32
  • workflow: replace workflow level referenced values on hydration (b6f2867), closes #32
  • yaml: pass exclude_unset var to yaml dump (2f52492)

Features

  • cli: add hydrate option to cli with optional inputs file (b6c7e7d), closes #40

v1.9.0

23 Feb 03:41
Compare
Choose a tag to compare

1.9.0 (2020-02-23)

Features

  • arguments: add an optional field for user_data (1b95ef1), closes #36
  • arguments: add WorkflowArguments object (d72b3a4)
  • workflow: add a new field for info (455c9c0), closes #35