Class: Bosh::Cli::Command::PropertyManagement

Inherits:
Base
  • Object
show all
Includes:
DeploymentHelper
Defined in:
lib/cli/commands/property_management.rb

Constant Summary

Constants inherited from Base

Base::BLOBS_DIR, Base::BLOBS_INDEX_FILE

Instance Attribute Summary

Attributes inherited from Base

#cache, #config, #options, #out, #usage, #work_dir

Instance Method Summary collapse

Methods included from DeploymentHelper

#deployment_changed?, #inspect_deployment_changes, #prepare_deployment_manifest

Methods inherited from Base

#blob_manager, #blobstore, command, #confirmed?, #director, #dry_run?, #exit_code, #full_target_name, #initialize, #interactive?, #logged_in?, #non_interactive?, #redirect, #release, #run, #show_usage, #target_name, #target_version, #task_report, #verbose?

Constructor Details

This class inherits a constructor from Bosh::Cli::Command::Base

Instance Method Details

#get(name) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/cli/commands/property_management.rb', line 62

def get(name)
  prepare
  show_header

  status, body = director.get_property(@deployment_name, name)
  if status == 200
    say("Property `#{name.green}' value is " +
        "`#{format_property(body["value"]).green}'")
  else
    err(director.parse_error_message(status, body))
  end
end

#list(*args) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/cli/commands/property_management.rb', line 75

def list(*args)
  prepare
  terse = args.include?("--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 = ["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) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/cli/commands/property_management.rb', line 7

def set(name, value)
  prepare
  show_header

  status, body = director.get_property(@deployment_name, name)
  existing_property = status == 200

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

  prompt = "Are you sure you want to set property" +
      " `#{name.green}' to `#{format_property(value).green}'? " +
      "(type yes to proceed): "

  if interactive? && ask(prompt) != "yes"
    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.green}' set to `#{value.green}'")
  else
    err(director.parse_error_message(status, body))
  end
end

#unset(name) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/cli/commands/property_management.rb', line 42

def unset(name)
  prepare
  show_header

  prompt = "Are you sure you want to unset property " +
      "`#{name.green}'? (type yes to proceed): "

  if interactive? && ask(prompt) != "yes"
    err("Canceled")
  end

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

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