summaryrefslogtreecommitdiffstats
path: root/cloudmasterd/lib/cloudmasterd.rb
diff options
context:
space:
mode:
Diffstat (limited to 'cloudmasterd/lib/cloudmasterd.rb')
-rw-r--r--cloudmasterd/lib/cloudmasterd.rb63
1 files changed, 34 insertions, 29 deletions
diff --git a/cloudmasterd/lib/cloudmasterd.rb b/cloudmasterd/lib/cloudmasterd.rb
index 91c4450..8d614af 100644
--- a/cloudmasterd/lib/cloudmasterd.rb
+++ b/cloudmasterd/lib/cloudmasterd.rb
@@ -108,9 +108,9 @@ module Cloudmasterd::Models
t.column :email, :string, :null => false, :limit => 255
t.column :cloud, :string, :null => false, :limit => 255
t.column :state, :string, :null => false, :limit => 255
- t.column :repo, :string, :null => false, :limit => 255
- t.column :hostname, :string, :null => false, :limit => 255
- t.column :created_date, :datetime, :null => true
+ t.column :repo, :string, :limit => 255
+ t.column :hostname, :string, :limit => 255
+ t.column :created_date, :datetime
end
end
def self.down
@@ -155,36 +155,34 @@ module Cloudmasterd::Controllers
# POST /koan
def create
- system_name = input.system_name
- repo = input.repo
- email = input.email
-
- cobbler_profile = _get_cobbler_profile(system_name, repo)
- cobbler_distro = _get_cobbler_distro(cobbler_profile["distro"], repo)
-
- # Synchronize access before making the func calls
- Syncer::lock do
- @host = _get_best_host(cobbler_profile["virt_ram"], cobbler_distro["arch"])
-
- begin
- _koan(@host, system_name, repo)
-
- @machine = Machine.create :name => system_name, :repo => repo, :email => email, :cloud => @host, :state => "Installing", :created_date => DateTime.now()
- render :_koan
- rescue Exception => e
- @exception = e
- render :_error
+ if input.machine_id
+ Machine.find(input.machine_id).update_attribute(:hostname, input.hostname)
+ else
+ system_name = input.system_name
+ repo = input.repo
+ email = input.email
+
+ cobbler_profile = _get_cobbler_profile(system_name, repo)
+ cobbler_distro = _get_cobbler_distro(cobbler_profile["distro"], repo)
+
+ # Synchronize access before making the func calls
+ Syncer::lock do
+ @host = _get_best_host(cobbler_profile["virt_ram"], cobbler_distro["arch"])
+
+ begin
+ _koan(@host, system_name, repo)
+
+ @machine = Machine.create :name => system_name, :repo => repo, :email => email, :cloud => @host, :state => "Installing", :created_date => DateTime.now()
+ render :_koan
+ rescue Exception => e
+ @exception = e
+ render :_error
+ end
end
end
end
- def update
- Machine.find(input.id).update_attribute(:hostname, input.hostname)
- end
-
def destroy(name)
- puts "Destroying image #{name}"
-
Syncer::lock do
Machine.find(:all, :conditions => "name = '#{name}'").each do |machine|
# If the machine is missing, don't bother remotely trying to cleanup
@@ -289,8 +287,15 @@ module Cloudmasterd::Views
th ''
end
@machines[email].each do |machine|
+ name = machine.hostname ? "#{machine.name} (#{machine.hostname})" : machine.name
tr do
- td machine.name
+ td do
+ if machine.repo
+ a name, :href=>"http://#{machine.repo}/genome/nodes/#{machine.name}.html"
+ else
+ a name
+ end
+ end
td machine.cloud
td machine.state
unless machine.created_date == nil then