diff options
| author | root <root@hackathon1-repo.usersys.redhat.com> | 2008-06-19 15:36:54 -0400 |
|---|---|---|
| committer | root <root@hackathon1-repo.usersys.redhat.com> | 2008-06-19 15:36:54 -0400 |
| commit | cf796141ac01c866e81663f20699ccd56ce2d50b (patch) | |
| tree | 9061bb3c95d638bfed4d880db21e49f9f36cf1ec /cloud/lib/cloud.rb | |
| parent | 4f244d65c5c2e4ffb4b38e00baa5f83de89c20d8 (diff) | |
| download | tools-cf796141ac01c866e81663f20699ccd56ce2d50b.tar.gz tools-cf796141ac01c866e81663f20699ccd56ce2d50b.tar.xz tools-cf796141ac01c866e81663f20699ccd56ce2d50b.zip | |
Moved the cloud daemon to cloudmasterd to give it a better name
Diffstat (limited to 'cloud/lib/cloud.rb')
| -rw-r--r-- | cloud/lib/cloud.rb | 166 |
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 |
