class DTK::Client::Operation::Service::SetRequiredAttributes

Public Class Methods

execute(args = Args.new) click to toggle source
# File lib/client/operation/service/set_required_attributes.rb, line 21
def self.execute(args = Args.new)
  wrap_operation(args) do |args|
    service_instance    = args.required(:service_instance)
    response            = rest_get "#{BaseRoute}/#{service_instance}/required_attributes"
    required_attributes = response.data

    if required_attributes.empty?
      OsUtil.print_info("No parameters to set.")
    else
      param_bindings = InteractiveWizard.resolve_missing_params(required_attributes)

      post_body = PostBody.new(
        :service_instance => service_instance,
        :av_pairs_hash    => param_bindings.inject(Hash.new){|h,r|h.merge(r[:id] => r[:value])}
      )
      response = rest_post "#{BaseRoute}/#{service_instance}/set_attributes", post_body

      repo_info_args = Args.new(
        :service_instance => service_instance,
        :branch           => response.required(:branch, :name),
        :repo_url         => response.required(:repo, :url)
      )
      ClientModuleDir::GitRepo.pull_from_service_repo(repo_info_args)

      nil
    end
  end
end