class Crowbar::Client::Command::Proposal::Create
Implementation for the proposal create command
Public Instance Methods
execute()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 38 def execute validate_barclamp! args.barclamp request.process do |request| case request.code when 200 say "Successfully created #{args.proposal} proposal" else err request.parsed_response["error"] end end end
request()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 30 def request @request ||= Request::Proposal::Create.new( args.easy_merge!( payload: payload_content.to_hash ) ) end
Protected Instance Methods
from_data()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 70 def from_data json = begin JSON.load( options[:data] ) rescue JSON::ParserError err "Failed to parse JSON" end if json["id"] != args.proposal json["id"] = args.proposal say "Using id(#{json["id"]}) as proposal name" end if options[:merge] proposal_preload.easy_merge( json ) else json end end
from_editor()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 126 def from_editor editor = Util::Editor.new content: proposal_preload editor.edit! editor.result rescue EditorAbortError => e err e.message rescue EditorStartupError => e err e.message rescue InvalidJsonError => e err e.message rescue SimpleCatchableError => e err e.message rescue err "Editing content failed" end
from_file()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 93 def from_file json = begin file = File.read( options[:file] ) JSON.load( file ) rescue Errno::EACCES err "Failed to access file" rescue Errno::ENOENT err "Failed to read file" rescue JSON::ParserError err "Failed to parse JSON" rescue err "Failed to process file" end if json["id"] != args.proposal json["id"] = args.proposal say "Using id(#{json["id"]}) as proposal name" end if options[:merge] proposal_preload.easy_merge( json ) else json end end
payload_content()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 143 def payload_content case when options[:data] from_data when options[:file] from_file when options[:default] proposal_preload else from_editor end end
proposal_preload()
click to toggle source
# File lib/crowbar/client/command/proposal/create.rb, line 53 def proposal_preload result = Request::Proposal::Template.new( barclamp: args.barclamp ).process case result.code when 200 result.parsed_response.easy_merge( "id" => args.proposal ) when 404 err "Failed to preload template" else err result.parsed_response["error"] end end