Class: Helm::Commands::Servers::Edit
Instance Attribute Summary
Attributes inherited from Command
#app_config, #options
Instance Method Summary
collapse
Methods inherited from Command
#if_option, #initialize
Instance Method Details
#edit_tempfile(file) ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/helm/application.rb', line 91
def edit_tempfile(file)
require 'io/console'
edit_shell = Caliph::Shell.new
edit_shell.output_stream = File.new("/dev/null", "a")
edit_shell.run(ENV['EDITOR'] || app_config.editor, file.path) do |cmd|
cmd.redirect_stdin(IO.console.path)
cmd.redirect_stdout(IO.console.path)
end
ensure
edit_shell.output_stream.close
end
|
#execute ⇒ Object
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# File 'lib/helm/application.rb', line 137
def execute
require 'yaml'
require 'helm/persisters/server'
query = server_query
unless query.to_a.length == 1
puts "#{query.to_a.length} servers match #{query.constraint.inspect}"
exit 1
end
begin
file = Tempfile.new('server', app_config.tempdir)
server_id = put_server_record_in_file(query, file)
edit_tempfile(file)
save_server_record_to_database(server_id, file)
ensure
file.unlink if file
end
end
|
#put_server_record_in_file(query, file) ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/helm/application.rb', line 116
def put_server_record_in_file(query, file)
server = query.first
server_hash = server.to_hash
server_id = server_hash.delete(:server_id)
file.write("# Edit this file to update the server\n")
file.write(server_hash.to_yaml)
file.close
return server_id
end
|
#save_server_record_to_database(server_id, file) ⇒ Object
129
130
131
132
133
134
135
|
# File 'lib/helm/application.rb', line 129
def save_server_record_to_database(server_id, file)
file.open
new_hash = YAML.load(file.read).merge(:server_id => server_id)
store = Helm::Persisters::Server.new(app_config.connstring)
store.insert_or_update(new_hash)
end
|
#server_query ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/helm/application.rb', line 104
def server_query
query = Helm::Queries::Server.new(app_config.connstring)
if_option(:id){|server_id| query.server_id = server_id }
if_option(:client){|client| query.client = client }
if_option(:role){|role| query.role = role }
if_option(:name){|name| query.name = name }
if_option(:platform){|platform| query.platform = platform }
query
end
|