summaryrefslogtreecommitdiffstats
path: root/cloud/lib/cloud.rb
diff options
context:
space:
mode:
Diffstat (limited to 'cloud/lib/cloud.rb')
-rw-r--r--cloud/lib/cloud.rb166
1 files changed, 0 insertions, 166 deletions
diff --git a/cloud/lib/cloud.rb b/cloud/lib/cloud.rb
deleted file mode 100644
index 70b4e19..0000000
--- a/cloud/lib/cloud.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-$: << File.dirname(File.expand_path(__FILE__))
-
-gem 'reststop', '~> 0.2'
-
-require 'yaml'
-require 'fileutils'
-require 'rubygems'
-require 'picnic'
-require 'reststop'
-require 'everest'
-require 'restr'
-require 'xmlrpc/client'
-
-Camping.goes :Cloud
-Cloud.picnic!
-
-module Cloud::Helpers
- class Cobblerd
- def initialize(repo)
- @repo = repo
- @xmlrpc = XMLRPC::Client.new2("http://#{@repo}:25152")
- @token = @xmlrpc.call2("login", "cobbler", "password")[1]
- end
-
- def _call(method, *args)
- return @xmlrpc.call2(method, *args)[1]
- end
-
- def distros
- _call("get_distros", @token)
- end
-
- def profiles
- _call("get_profiles", @token)
- end
-
- def systems
- _call("get_systems", @token)
- end
-
- def repos
- _call("get_repos", @token)
- end
-
- def distro(name)
- _call("get_distro", name, @token)
- end
-
- def distro_for_koan(name)
- _call("get_distro_for_koan", name, @token)
- end
-
- def profile(name)
- _call("get_profile", name, @token)
- end
-
- def profile_for_koan(name)
- _call("get_profile_for_koan", name, @token)
- end
-
- def system(name)
- _call("get_system", name, @token)
- end
-
- def system_for_koan(name)
- _call("get_system_for_koan", name, @token)
- end
-
- def repo(name)
- _call("get_repo", name, @token)
- end
-
- def repo_for_koan(name)
- _call("get_repo_for_koan", name, @token)
- end
-
- end
-end
-
-module Cloud::Controllers
- class Koan < REST 'koan'
- # Retrieve the cobbler profile for the given profile name
- def _get_cobbler_profile(system_name, repo)
- cobblerd = Cloud::Helpers::Cobblerd.new(repo)
- cobbler_system = cobblerd.system(system_name)
- return cobblerd.profile(cobbler_system["profile"])
- end
-
- # Find the best host on which to create a VM that requires
- # the given "disk_size" and "ram"
- def _get_best_host(disk_size, ram)
- return `func-find-resources -m #{ram} -d #{disk_size}`.split(':')
- end
-
- # run the appropriate koan command to create the given "fqdn"
- # on the given "host" and "vol_group"
- def _koan(host, vol_group, fqdn, repo)
- # Run the koan process
- func_cmd = "func \"#{host}\" call virt install #{repo} #{fqdn} True #{fqdn.split('.')[0]} #{vol_group}"
- puts `#{func_cmd}`
-
- # Make the new host autostart
- func_cmd = "func \"#{host}\" call command run \"ln -s /etc/xen/#{fqdn.split('.')[0]} /etc/xen/auto/\""
- puts `#{func_cmd}`
- end
-
- # POST /koan
- def create
- machine_fqdn = input.machine_fqdn
- repo = input.repo
-
- cobbler_profile = _get_cobbler_profile(machine_fqdn, repo)
- @host, vol_group = _get_best_host(cobbler_profile["virt_file_size"], cobbler_profile["virt_ram"])
- _koan(@host, vol_group, machine_fqdn, repo)
- render :_koan
- end
- end
-end
-
-module Cloud::Views
- def initialize(*args)
- super(*args)
- @x = Builder::XmlMarkup.new(:indent => 1)
- end
-
- module HTML
- def layout
- html do
- head do
- title 'Everest Cloud Controller'
- #link :rel => 'stylesheet', :type => 'text/css',
- #:href => self/'/styles.css', :media => 'screen'
- end
- body do
- div.content do
- self << yield
- end
- end
- end
- end
-
- def _koan
- @host
- end
- end
- default_format :HTML
-
- module YAML
- CONTENT_TYPE = 'text/plain'
-
- def layout
- yield
- end
- end
-
- module XML
- def layout
- yield
- end
- end
-end
-
-# Required by picnic
-def Cloud.create; end
-
-Cloud.start_picnic