Skip to content

How to express targeting and configuration? #2

Description

@jamesdobson

Neurons need some access to configuration to tell them about their environment so they can perform their checks/mutations.
Also, a synapse may need a way to be targeted at something or be "about" something.

Use case: We have a TeamCity server that is shared across our org. Sometimes users come to us with a question: "why isn't my build running?" They have triggered it, but it doesn't run.

Let's say we are creating a "build_does_not_run" synapse. To be able to diagnose the issue, we need a few pieces of information:

  • Target of the synapse: the build that won't run. Could be any of:
    • URL to a build instance that is in the queue
    • URL to a build configuration that we can't get to run
    • ID of a build configuration that we can't get to run
  • Configuration information:
    • TeamCity server base URL
    • TeamCity server user and password or API token

With just this information, we could do several checks:

  • Check for undefined build parameters on the target build
  • Check for compatible agents defined that can run the target build
  • Check for free compatible agents
  • Check if using agent pools and compatible agents can be started and register successfully

How to collect the input data? I'm not sure what you had planned, perhaps something like:

  • Neurons can declare their inputs, e.g. "teamcity.token", "teamcity.url". If two neurons declare an input with the same name, they share the information.
    • It would be nice if the neurons could document their inputs in natural language and provide other metadata about the inputs
    • Might have to introduce a "config" object on which the neurons could depend, e.g. the neurons in this use case would reference as their input a "teamcity" config object that defines "token" and "url" parameters. Then we could just have one definition of the "teamcity" config object.
  • The user running cortex gets prompted for the set of inputs.
  • Neurons and synapses can declare a "target" that is the thing they're checking (the build in this use case)
  • Synapse can pass its target down to the neurons

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions