Sha256: 5d08d1bf89879235f1af1c4c2509534f5c86cb88236429f9c95b0e76e1c8d1dd
Contents?: true
Size: 1.83 KB
Versions: 7
Compression:
Stored size: 1.83 KB
Contents
module Kuroko2 module Workflow module Task class Fork < Base def execute if fork_children_ids.empty? message = "(token #{token.uuid}) Start to fork." token.job_instance.logs.info(message) Kuroko2.logger.info(message) extract_child_nodes :pass elsif token.children.where(id: fork_children_ids).all?(&:finished?) message = "(token #{token.uuid}) All children are finished." token.job_instance.logs.info(message) Kuroko2.logger.info(message) :next_sibling else :pass end end def validate if node.children.empty? raise Workflow::AssertionError, "#{self.class} must have children node" end end private def fork_children_ids token.context['fork_children_ids'] ||= {} token.context['fork_children_ids'][token.path] ||= [] end def extract_child_nodes node.children.each do |child| create_child_token(child_node: child) end end def create_child_token(child_node:, env: {}) attributes = token.attributes.except('id', 'uuid', 'script', 'path', 'message', 'created_at', 'updated_at') attributes = attributes.merge(uuid: SecureRandom.uuid, parent: token, script: child_node.to_script, path: '/') attributes['context']['ENV'] = (attributes['context']['ENV'] || {}).merge(env) Token.create!(attributes).tap do |created| fork_children_ids << created.id message = "(token #{created.uuid}) New token are created for #{child_node.path}" created.job_instance.logs.info(message) Kuroko2.logger.info(message) end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems