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
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:
With just this information, we could do several checks:
How to collect the input data? I'm not sure what you had planned, perhaps something like: