class Bosh::Cli::Command::PropertyManagement

Public Instance Methods

get(name) click to toggle source
# File lib/cli/commands/property_management.rb, line 72
def get(name)
  prepare
  show_header

  status, body = director.get_property(@deployment_name, name)
  if status == 200
    say("Property '#{name.make_green}' value is " +
        "'#{format_property(body["value"]).make_green}'")
  else
    err(director.parse_error_message(status, body))
  end
end
list() click to toggle source
# File lib/cli/commands/property_management.rb, line 89
def list
  prepare
  terse = options[:terse]
  show_header unless terse

  properties = director.list_properties(@deployment_name)
  unless properties.kind_of?(Enumerable)
    err("Invalid properties format, please check your director")
  end

  output = properties.sort do |p1, p2|
    p1["name"] <=> p2["name"]
  end.map do |property|
    [property["name"], format_property(property["value"])]
  end

  if terse
    output.each { |row| say("#{row[0]}\t#{row[1]}") }
  else
    if output.size > 0
      properties_table = table do |t|
        t.headings = %w(Name Value)
        output.each { |row| t << [row[0], row[1].truncate(40)] }
      end
      say(properties_table)
    else
      say("No properties found")
    end
  end
end
set(name, value) click to toggle source
# File lib/cli/commands/property_management.rb, line 8
def set(name, value)
  prepare
  show_header

  begin
    status, body = director.get_property(@deployment_name, name)
    existing_property = status == 200
  rescue Bosh::Cli::DirectorError
    existing_property = false
  end

  if existing_property
    say("Current '#{name.make_green}' value is " +
        "'#{format_property(body["value"]).make_green}'")
  else
    say("This will be a new property")
  end

  prompt = "Are you sure you want to set property" +
    " '#{name.make_green}' to '#{format_property(value).make_green}'?"

  unless confirmed?(prompt)
    err("Canceled")
  end

  if existing_property
    status, body = director.update_property(@deployment_name, name, value)
  else
    status, body = director.create_property(@deployment_name, name, value)
  end

  if status == 204
    say("Property '#{name.make_green}' set to '#{value.make_green}'")
  else
    err(director.parse_error_message(status, body))
  end
end
unset(name) click to toggle source
# File lib/cli/commands/property_management.rb, line 49
def unset(name)
  prepare
  show_header

  prompt = "Are you sure you want to unset property " +
    "'#{name.make_green}'?"

  unless confirmed?(prompt)
    err("Canceled")
  end

  status, body = director.delete_property(@deployment_name, name)

  if status == 204
    say("Property '#{name.make_green}' has been unset")
  else
    err(director.parse_error_message(status, body))
  end
end

Private Instance Methods

format_property(value) click to toggle source
# File lib/cli/commands/property_management.rb, line 133
def format_property(value)
  value.gsub("\n", "\\n")
end
prepare() click to toggle source
# File lib/cli/commands/property_management.rb, line 122
def prepare
  auth_required
  @deployment_name = prepare_deployment_manifest(show_state: true).name
end
show_header() click to toggle source
# File lib/cli/commands/property_management.rb, line 127
def show_header
  say("Target #{target_name.make_green}")
  say("Deployment #{@deployment_name.make_green}")
  nl
end