Skip to content

Commit

Permalink
Add component and action specific filters to dtk service describe com…
Browse files Browse the repository at this point in the history
…mand
  • Loading branch information
aldin committed May 28, 2018
1 parent 81d0d61 commit 4a50c83
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Expand Up @@ -4,7 +4,7 @@ ruby '2.2.9'
# dtk gems
gem 'dtk-common', :github => 'dtk/dtk-common'
gem 'dtk-common-core', :github => 'dtk/dtk-common-core'
gem 'dtk-dsl', :github => 'dtk/dtk-dsl'
gem 'dtk-dsl'#, :github => 'dtk/dtk-dsl'


# required to start a server
Expand Down
2 changes: 1 addition & 1 deletion application/model/assembly/instance/describe.rb
Expand Up @@ -23,7 +23,7 @@ module Describe
require_relative('describe/dependencies')

def describe(path)
describe_adapter, *params = ret_adapter_and_params_from_path(path)
describe_adapter, params = ret_adapter_and_params_from_path(path)
describe_class = load_for(describe_adapter)

raise ErrorUsage, "Unexpected that describe adapter #{describe_class} does not implement describe method!" unless describe_class.respond_to?(:describe)
Expand Down
2 changes: 1 addition & 1 deletion application/model/assembly/instance/describe/actions.rb
Expand Up @@ -22,7 +22,7 @@ def self.describe(service_instance, params)
assembly_instance = service_instance.copy_as_assembly_instance
dsl_version = service_instance.get_service_instance_branch.dsl_version

actions_content_input = CommonDSL::ObjectLogic::Assembly::Workflow.generate_content_input(assembly_instance)
actions_content_input = CommonDSL::ObjectLogic::Assembly::Workflow.generate_content_input(assembly_instance, (params || []).first )
top_level_content_input = CommonDSL::ObjectLogic::ContentInputHash.new('actions' => actions_content_input)

yaml_content = CommonDSL::Generate::FileGenerator.generate_yaml_text(:workflow, top_level_content_input, dsl_version)
Expand Down
4 changes: 2 additions & 2 deletions application/model/assembly/instance/describe/components.rb
Expand Up @@ -21,8 +21,8 @@ module Components
def self.describe(service_instance, params)
assembly_instance = service_instance.copy_as_assembly_instance
dsl_version = service_instance.get_service_instance_branch.dsl_version
components_content_input = CommonDSL::ObjectLogic::Assembly::Component.generate_content_input(assembly_instance)

components_content_input = CommonDSL::ObjectLogic::Assembly::Component.generate_content_input(assembly_instance, (params || []).first)
top_level_content_input = CommonDSL::ObjectLogic::ContentInputHash.new('components' => components_content_input)

yaml_content = CommonDSL::Generate::FileGenerator.generate_yaml_text(:component, top_level_content_input, dsl_version)
Expand Down
11 changes: 9 additions & 2 deletions lib/common_dsl/object_logic/assembly/component.rb
Expand Up @@ -30,12 +30,15 @@ def initialize(aug_component, assembly_instance, assembly_component_links)
end
private :initialize

def self.generate_content_input(assembly_instance)
def self.generate_content_input(assembly_instance, component_name = nil)
assembly_component_links = assembly_instance.get_augmented_port_links

# get_augmented_nested_components returns components with nested components
augmented_components = NodeComponent.get_augmented_nested_components(assembly_instance)
extract_single_component!(augmented_components, component_name) if component_name

ret = ContentInputHash.new
NodeComponent.get_augmented_nested_components(assembly_instance).each do |aug_component|
augmented_components.each do |aug_component|
next if aug_component[:to_be_deleted]
ret.merge!(component_name(aug_component) => new(aug_component, assembly_instance, assembly_component_links).generate_content_input!)
end
Expand Down Expand Up @@ -105,6 +108,10 @@ def tags?
nil
end

def self.extract_single_component!(augmented_components, component_name)
augmented_components.reject!{ |aug_cmp| aug_cmp[:display_name] != component_name.gsub('::', '__') }
end

end
end
end
Expand Down
8 changes: 7 additions & 1 deletion lib/common_dsl/object_logic/assembly/workflow.rb
Expand Up @@ -27,10 +27,12 @@ def initialize(workflow)
@workflow = workflow
end

def self.generate_content_input(assembly_instance)
def self.generate_content_input(assembly_instance, action_name = nil)
# Generates a create workflow if one not explicitly given in dsl which causes this to be written to dsl
Task::Template::ConfigComponents.get_or_generate_template_content(:assembly, assembly_instance, { subtask_order: 'sequential' })
workflows = assembly_instance.get_task_templates(set_display_names: true)
extract_single_action!(workflows, action_name) if action_name

unsorted = workflows.inject({}) do |h, workflow|
h.merge(workflow.display_name => new(workflow).generate_content_input!)
end
Expand Down Expand Up @@ -74,6 +76,10 @@ def self.sorted_workflow_names(workflow_names)
end
ret + names.sort
end

def self.extract_single_action!(workflows, action_name)
workflows.reject!{ |action| action[:display_name] != action_name }
end

end
end
Expand Down

0 comments on commit 4a50c83

Please sign in to comment.