--- # This emulates the contents of a Consul instance which serves all O² configuration. o2: control: # Root for O² Control configuration # Here we have 2 main sections: tasks and workflows. # The tasks section contains a list of task templates, i.e. descriptors for the generic kind of process to be run. # These task templates are then referenced by workflow templates later on. tasks: - name: fairmq-ex-1-n-1-sampler # Name of the task, used as a unique identifier in workflows control: mode: fairmq # The control mode to be used. This is "fairmq" for all FairMQ devices and "direct" otherwise. wants: # Includes fields "cpu", "memory", "ports". The first two are float, respectively for number of cores # and MB of RAM. "ports" is a string, formatted as a comma-separated sequence of static port ranges # such as "8080-8083,9091-10100". # Note: the "ports" string has nothing to do with channels, these are static requests for specific ports # and they should be used sparingly, if at all. cpu: 0.1 memory: 128 bind: # "bind" contains a list of *inbound* channels to configure, and it only applies to FairMQ # devices (method: bind). - name: "data1" # channel name type: "push" # channel type, can be push, pull, pub, sub sndBufSize: 1000 # other FairMQ channel properties to push rcvBufSize: 1000 rateLogging: 0 properties: # Contains a key-value map of FairMQ properties to push severity: trace color: false command: # Specification of the command to run env: [] # List of strings, each of which is an environment variable to set like "VAR=value" shell: true # Generally must be true if we use environment modules arguments: [] # List of arguments for the command # "value" is the actual command to run in the shell (if shell == true) or otherwise the path # of the executable. Since we use environment modules, we must take care to load them # beforehand, including the Control-OCCPlugin module. # The module list line is added here for debug purposes. value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-1-n-1-sampler - name: fairmq-ex-1-n-1-processor control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: [] properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-1-n-1-processor - name: fairmq-ex-1-n-1-sink control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: - name: "data2" type: "pull" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-1-n-1-sink - name: fairmq-ex-copypush-sampler control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: - name: "data" type: "push" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-copypush-sampler - name: fairmq-ex-copypush-sink control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: [] properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-copypush-sink - name: fairmq-ex-multiple-channels-sampler control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: - name: "data" type: "push" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-multiple-channels-sampler - name: fairmq-ex-multiple-channels-sink control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: [] properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-multiple-channels-sink - name: fairmq-ex-multiple-channels-broadcaster control: mode: fairmq wants: cpu: 0.1 memory: 128 bind: - name: "broadcast" type: "pub" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 properties: severity: trace color: false command: env: [] shell: true arguments: [] value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load FairMQ && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && fairmq-ex-multiple-channels-broadcaster - name: qc-basic-producer control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_producer_to_Dispatcher" type: "push" rateLogging: 60 properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "producer" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunBasic - name: qc-basic-dispatcher control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_Dispatcher_to_QcTask" type: "push" rateLogging: 60 properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "Dispatcher" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunBasic - name: qc-basic-qctask control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_QcTask_to_checker_0" type: "push" rateLogging: 60 properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "QcTask" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunBasic - name: qc-basic-qctask-checker control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_checker_0_to_printer" type: "push" rateLogging: 60 properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "checker_0" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunBasic - name: qc-basic-printer control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: [] properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "printer" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunBasic ## QC-advanced tasks - name: source-1 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_source-1_to_step-1" type: "push" - name: "from_source-1_to_sink-1" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "source-1" - name: step-1 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_step-1_to_sink-1" type: "push" - name: "from_step-1_to_Dispatcher1" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "step-1" - name: Dispatcher1 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_Dispatcher1_to_dataSizeTask1" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "Dispatcher1" - name: dataSizeTask1 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_dataSizeTask1_to_dataSizeTask-merger" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dataSizeTask1" - name: source-2 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_source-2_to_step-2" type: "push" - name: "from_source-2_to_sink-2" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "source-2" - name: step-2 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_step-2_to_sink-2" type: "push" - name: "from_step-2_to_Dispatcher2" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "step-2" - name: sink-2 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_sink-2_to_Dispatcher2" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "sink-2" - name: Dispatcher2 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_Dispatcher2_to_dataSizeTask2" type: "push" - name: "from_Dispatcher2_to_someNumbersTask" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "Dispatcher2" - name: dataSizeTask2 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_dataSizeTask2_to_dataSizeTask-merger" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dataSizeTask2" - name: source-3 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_source-3_to_step-3" type: "push" - name: "from_source-3_to_sink-3" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "source-3" - name: step-3 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_step-3_to_sink-3" type: "push" - name: "from_step-3_to_Dispatcher3" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "step-3" - name: Dispatcher3 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_Dispatcher3_to_dataSizeTask3" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "Dispatcher3" - name: dataSizeTask3 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_dataSizeTask3_to_dataSizeTask-merger" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dataSizeTask3" - name: dataSizeTask-merger control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_dataSizeTask-merger_to_dataSizeTask-checker" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dataSizeTask-merger" - name: dataSizeTask-checker control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_dataSizeTask-checker_to_dpl-global-binary-file-sink" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dataSizeTask-checker" - name: someNumbersTask control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_someNumbersTask_to_someNumbersTask-checker" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "someNumbersTask" - name: someNumbersTask-checker control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_someNumbersTask-checker_to_dpl-global-binary-file-sink" type: "push" properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "someNumbersTask-checker" - name: sink-1 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: [] properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "sink-1" - name: sink-3 control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: [] properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "sink-3" - name: dpl-global-binary-file-sink control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: [] properties: severity: trace color: false command: shell: true value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load QualityControl && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && qcRunAdvanced arguments: - "-b" - "--monitoring-backend" - "no-op://" - "--id" - "dpl-global-binary-file-sink" - "--keep" - "--outfile" - "dpl-out.bin" - name: o2-dpl-A control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_A_to_B" type: "push" - name: "from_A_to_C" type: "push" properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "A" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load O2 && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && o2DiamondWorkflow - name: o2-dpl-B control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_B_to_D" type: "push" properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "B" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load O2 && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && o2DiamondWorkflow - name: o2-dpl-C control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: - name: "from_C_to_D" type: "push" properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "C" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load O2 && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && o2DiamondWorkflow - name: o2-dpl-D control: mode: fairmq wants: cpu: 0.15 memory: 128 bind: [] properties: severity: trace color: false command: env: [] shell: true arguments: - "--id" - "D" - "-b" - "--monitoring-backend" - "no-op://" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load O2 && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && o2DiamondWorkflow - name: readout control: mode: direct wants: cpu: 0.15 memory: 128 bind: [] properties: {} command: env: [] shell: true arguments: - "file:/opt/readout-occ/readout.cfg" value: >- source /etc/profile.d/modules.sh && MODULEPATH=/opt/alisw/el7/modulefiles module load Readout/master-1 && MODULEPATH=/opt/alisw/el7/modulefiles module load Control-OCCPlugin && MODULEPATH=/opt/alisw/el7/modulefiles module list && readout.exe # The workflows section is a key-value map of workflow templates. A workflow is a prototype which, when loaded, # generates a control tree. The nodes of this tree are roles. # Each role has a name, and it has either 1-* child roles, or exactly 1 child task. # There are aggregator and iterator roles which fill the intermediate levels of the control tree, and there are task # roles which constitute the leaves. workflows: readout-1: name: "readout" roles: - name: "readout-role" task: load: readout fairmq-ex-1-n-1: # The name of the workflow, which can then be loaded to create an environment. name: "diamond" # The name of the root role, which happens to be an aggregator role. vars: {} # Not used yet. roles: # A list of child roles. # Parametrized name of an iterator role, which generates task roles. # {{}} delimits a string template entry, and the "." operator reads in a variable # from the current context. - name: "processor{{ .it }}" # We know that this is an iterator role because it has a "for" entry. With this # we declare that we generate 4 roles based on the present template, parametrized # against a variable called "it" which runs from 0 to 3. # Note that if there's a "for", the role name must reference the declared variable, and vice versa, otherwise # the behavior is undefined. # For more information on the template syntax, see Go package text/template. for: begin: 0 end: 3 var: it # "connect" is the *outbound* channel equivalent of the "bind" specification found in the tasks section. # This is a list of outbound channels, with the same meaning as the entries in "bind", the only difference # being the "target" value. # Note that "inbound" and "outbound" here refers only to the initiation of the TCP connections. The data flow # direction is dictated by the "type" parameter. connect: - name: "data1" # The target entry is a string, with some template functions available for traversing the control tree. # Available functions: # parent() - returns the path of the parent role (example: {{parent}}.someRoleName to get a sibling role) # up(int n) - returns the path of the n-th ancestor (example: {{up 2}}.someRole.otherRole to get a cousin role) # this() - returns the path of the current role (example: {{this}}.someRole to get a child role) # Please note that these paths operate on the in-memory control tree and not on the workflow template # as it appears in the configuration file (or database): the control tree is traversed after the iterator # roles have already been resolved and expanded. Thus, one can never reference "processor{{.it}}", only # a specific "processor3". # By whatever means, the target must ultimately contain a valid complete path to a role, followed by a ":" # and the name of the inbound channel (as it appears in the bind spec of the task template). target: "{{ parent }}.sampler:data1" type: "pull" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 - name: "data2" target: "{{ up 1 }}.sink:data2" # Same as {{ parent }}.sink:data2 type: "push" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 task: # The current is an iterator role which templates for a task role, so instead of a "roles" entry # we have a "task" entry. load: fairmq-ex-1-n-1-processor # Currently the only key-value item in a task entry is "load", which points # to a task template # The following is a plain task role, with no iterator semantics. It simply has a name and a reference to a task # template as it appears in the "tasks" section. - name: "sampler" task: load: fairmq-ex-1-n-1-sampler - name: "sink" task: load: fairmq-ex-1-n-1-sink fairmq-ex-1-n-1-aggregated: name: "diamond" vars: {} roles: - name: "processors" roles: - name: "processor{{ .it }}" for: begin: 0 end: 3 var: it connect: - name: "data1" target: "{{ up 2 }}.sampler:data1" type: "pull" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 - name: "data2" target: "{{ up 2 }}.sink:data2" type: "push" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 task: load: fairmq-ex-1-n-1-processor - name: "sampler" task: load: fairmq-ex-1-n-1-sampler - name: "sink" task: load: fairmq-ex-1-n-1-sink # FIXME: OCTRL-69 # fairmq-ex-1-nxm-1: # name: "diamond" # vars: {} # roles: # - name: "processor{{ .it }}" # for: # begin: 0 # end: 3 # var: it # roles: # - name: "processor{{ .it }}{{ .jt}}" # for: # begin: 0 # end: 1 # var: jt # connect: # - name: "data1" # target: "{{ up 2 }}.sampler:data1" # type: "pull" # sndBufSize: 1000 # rcvBufSize: 1000 # rateLogging: 0 # - name: "data2" # target: "{{ up 2 }}.sink:data2" # type: "push" # sndBufSize: 1000 # rcvBufSize: 1000 # rateLogging: 0 # task: # load: fairmq-ex-1-n-1-processor # - name: "sampler" # task: # load: fairmq-ex-1-n-1-sampler # - name: "sink" # task: # load: fairmq-ex-1-n-1-sink fairmq-ex-copypush: name: "copypush" vars: {} roles: - name: "sink{{ .it }}" for: begin: 0 end: 3 var: it connect: - name: "data" target: "{{ parent }}.sampler:data" type: "pull" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 task: load: fairmq-ex-copypush-sink - name: "sampler" task: load: fairmq-ex-copypush-sampler fairmq-ex-multiple-channels: name: "multichan" vars: {} roles: - name: "sink" connect: - name: "data" target: "{{ parent }}.sampler:data" type: "pull" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 - name: "broadcast" target: "{{ parent }}.broadcaster:broadcast" type: "sub" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 task: load: fairmq-ex-multiple-channels-sink - name: "sampler" connect: - name: "broadcast" target: "{{ parent }}.broadcaster:broadcast" type: "sub" sndBufSize: 1000 rcvBufSize: 1000 rateLogging: 0 task: load: fairmq-ex-multiple-channels-sampler - name: "broadcaster" task: load: fairmq-ex-multiple-channels-broadcaster qc-basic: name: "qc-basic" vars: {} roles: - name: "producer" task: load: qc-basic-producer - name: "dispatcher" connect: - name: "from_producer_to_Dispatcher" target: "{{ parent }}.producer:from_producer_to_Dispatcher" type: "pull" rateLogging: 60 task: load: qc-basic-dispatcher - name: "qctask" connect: - name: "from_Dispatcher_to_QcTask" target: "{{ parent }}.dispatcher:from_Dispatcher_to_QcTask" type: "pull" rateLogging: 60 task: load: qc-basic-qctask - name: "qctask-checker" connect: - name: "from_QcTask_to_checker_0" target: "{{ parent }}.qctask:from_QcTask_to_checker_0" type: "pull" rateLogging: 60 task: load: qc-basic-qctask-checker - name: "printer" connect: - name: "from_checker_0_to_printer" target: "{{ parent }}.qctask-checker:from_checker_0_to_printer" type: "pull" rateLogging: 60 task: load: qc-basic-printer o2-dpl-example: name: "o2-dpl-ex-root" vars: {} roles: - name: "A" task: load: o2-dpl-A - name: "B" connect: - name: "from_A_to_B" target: "{{ parent }}.A:from_A_to_B" type: "pull" task: load: o2-dpl-B - name: "C" connect: - name: "from_A_to_C" target: "{{ parent }}.A:from_A_to_C" type: "pull" task: load: o2-dpl-C - name: "D" connect: - name: "from_B_to_D" target: "{{ parent }}.B:from_B_to_D" type: "pull" - name: "from_C_to_D" target: "{{ parent }}.C:from_C_to_D" type: "pull" task: load: o2-dpl-D qc-advanced: name: "qc-advanced-root" roles: - name: "source-1" task: load: source-1 - name: "step-1" connect: - name: "from_source-1_to_step-1" target: "{{parent}}.source-1:from_source-1_to_step-1" type: "pull" task: load: step-1 - name: "Dispatcher1" connect: - name: "from_step-1_to_Dispatcher1" target: "{{parent}}.step-1:from_step-1_to_Dispatcher1" type: "pull" task: load: Dispatcher1 - name: "dataSizeTask1" connect: - name: "from_Dispatcher1_to_dataSizeTask1" target: "{{parent}}.Dispatcher1:from_Dispatcher1_to_dataSizeTask1" type: "pull" task: load: dataSizeTask1 - name: "source-2" task: load: source-2 - name: "step-2" connect: - name: "from_source-2_to_step-2" target: "{{parent}}.source-2:from_source-2_to_step-2" type: "pull" task: load: step-2 - name: "sink-2" connect: - name: "from_source-2_to_sink-2" target: "{{parent}}.source-2:from_source-2_to_sink-2" type: "pull" - name: "from_step-2_to_sink-2" target: "{{parent}}.step-2:from_step-2_to_sink-2" type: "pull" task: load: sink-2 - name: "Dispatcher2" connect: - name: "from_step-2_to_Dispatcher2" target: "{{parent}}.step-2:from_step-2_to_Dispatcher2" type: "pull" - name: "from_sink-2_to_Dispatcher2" target: "{{parent}}.sink-2:from_sink-2_to_Dispatcher2" type: "pull" task: load: Dispatcher2 - name: "dataSizeTask2" connect: - name: "from_Dispatcher2_to_dataSizeTask2" target: "{{parent}}.Dispatcher2:from_Dispatcher2_to_dataSizeTask2" type: "pull" task: load: dataSizeTask2 - name: "source-3" task: load: source-3 - name: "step-3" connect: - name: "from_source-3_to_step-3" target: "{{parent}}.source-3:from_source-3_to_step-3" type: "pull" task: load: step-3 - name: "Dispatcher3" connect: - name: "from_step-3_to_Dispatcher3" target: "{{parent}}.step-3:from_step-3_to_Dispatcher3" type: "pull" task: load: Dispatcher3 - name: "dataSizeTask3" connect: - name: "from_Dispatcher3_to_dataSizeTask3" target: "{{parent}}.Dispatcher3:from_Dispatcher3_to_dataSizeTask3" type: "pull" task: load: dataSizeTask3 - name: "dataSizeTask-merger" connect: - name: "from_dataSizeTask1_to_dataSizeTask-merger" target: "{{parent}}.dataSizeTask1:from_dataSizeTask1_to_dataSizeTask-merger" type: "pull" - name: "from_dataSizeTask2_to_dataSizeTask-merger" target: "{{parent}}.dataSizeTask2:from_dataSizeTask2_to_dataSizeTask-merger" type: "pull" - name: "from_dataSizeTask3_to_dataSizeTask-merger" target: "{{parent}}.dataSizeTask3:from_dataSizeTask3_to_dataSizeTask-merger" type: "pull" task: load: dataSizeTask-merger - name: "dataSizeTask-checker" connect: - name: "from_dataSizeTask-merger_to_dataSizeTask-checker" target: "{{parent}}.dataSizeTask-merger:from_dataSizeTask-merger_to_dataSizeTask-checker" type: "pull" task: load: dataSizeTask-checker - name: "someNumbersTask" connect: - name: "from_Dispatcher2_to_someNumbersTask" target: "{{parent}}.Dispatcher2:from_Dispatcher2_to_someNumbersTask" type: "pull" task: load: someNumbersTask - name: "someNumbersTask-checker" connect: - name: "from_someNumbersTask_to_someNumbersTask-checker" target: "{{parent}}.someNumbersTask:from_someNumbersTask_to_someNumbersTask-checker" type: "pull" task: load: someNumbersTask-checker - name: "sink-1" connect: - name: "from_source-1_to_sink-1" target: "{{parent}}.source-1:from_source-1_to_sink-1" type: "pull" - name: "from_step-1_to_sink-1" target: "{{parent}}.step-1:from_step-1_to_sink-1" type: "pull" task: load: sink-1 - name: "sink-3" connect: - name: "from_source-3_to_sink-3" target: "{{parent}}.source-3:from_source-3_to_sink-3" type: "pull" - name: "from_step-3_to_sink-3" target: "{{parent}}.step-3:from_step-3_to_sink-3" type: "pull" task: load: sink-3 - name: "dpl-global-binary-file-sink" connect: - name: "from_dataSizeTask-checker_to_dpl-global-binary-file-sink" target: "{{parent}}.dataSizeTask-checker:from_dataSizeTask-checker_to_dpl-global-binary-file-sink" type: "pull" - name: "from_someNumbersTask-checker_to_dpl-global-binary-file-sink" target: "{{parent}}.someNumbersTask-checker:from_someNumbersTask-checker_to_dpl-global-binary-file-sink" type: "pull" task: load: dpl-global-binary-file-sink