class Gogetit::CLI
Attributes
result[RW]
config[R]
libvirt[R]
logger[R]
lxd[R]
providers[R]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/gogetit/cli.rb, line 18 def initialize(*args) super @config = Gogetit.config @logger = Gogetit.logger @lxd = Gogetit.lxd @libvirt = Gogetit.libvirt @providers = { lxd: lxd, libvirt: libvirt } end
Public Instance Methods
create(name)
click to toggle source
# File lib/gogetit/cli.rb, line 83 def create(name) abort(":vlans and :ipaddresses can not be set together.") \ if options[:vlans] and options[:ipaddresses] abort(":chef and :zero can not be set together.") \ if options[:chef] and options[:zero] abort("when :'no-maas', the network configuration have to be set by :file.") \ if options[:'no-maas'] and (options[:vlans] or options[:ipaddresses]) abort(":'no-maas' and :file have to be set together.") \ if options[:'no-maas'] ^ !!options[:file] abort(":distro has to be set only with libvirt provider.") \ if options[:distro] and options[:provider] == 'lxd' abort(":alias has to be set with lxd provider.") \ if options[:alias] and options[:provider] == 'libvirt' abort(":spec has to be set only with libvirt provider.") \ if options[:spec] and options[:provider] == 'lxd' case options[:provider] when 'lxd' Gogetit::CLI.result = lxd.create(name, options) when 'libvirt' Gogetit::CLI.result = libvirt.create(name, options) else abort('Invalid argument entered.') end # post-tasks if options[:chef] knife_bootstrap_chef(name, options[:provider], config) update_databags(config) elsif options[:zero] knife_bootstrap_zero(name, options[:provider], config) end end
deploy(name)
click to toggle source
# File lib/gogetit/cli.rb, line 153 def deploy(name) abort(":chef and :zero can not be set together.") \ if options[:chef] and options[:zero] Gogetit::CLI.result = libvirt.deploy(name, options) # post-tasks if options[:chef] knife_bootstrap(name, options[:provider], config) update_databags(config) elsif options[:zero] knife_bootstrap_zero(name, options[:provider], config) end end
destroy(name)
click to toggle source
# File lib/gogetit/cli.rb, line 122 def destroy(name) abort(":chef and :zero can not be set together.") \ if options[:chef] and options[:zero] provider = get_provider_of(name, providers) if provider case provider when 'lxd' Gogetit::CLI.result = lxd.destroy(name) when 'libvirt' Gogetit::CLI.result = libvirt.destroy(name) else abort('Invalid argument entered.') end end # post-tasks if options[:chef] knife_remove(name, options) update_databags(config) elsif options[:zero] knife_remove(name, options) end end
list()
click to toggle source
# File lib/gogetit/cli.rb, line 33 def list case options[:out] when 'custom' Gogetit.list_all_types when 'all' config[:lxd][:nodes].each do |node| puts "Listing LXD containers on #{node[:url]}.." system("lxc list #{node[:name]}:") end puts "Listing KVM domains on #{config[:libvirt][:nodes][0][:url]}.." system("virsh -c #{config[:libvirt][:nodes][0][:url]} list --all") when '' puts "Listing LXD containers on #{config[:lxd][:nodes][0][:url]}.." system("lxc list #{config[:lxd][:nodes][0][:name]}:") puts '' puts "Listing KVM domains on #{config[:libvirt][:nodes][0][:url]}.." system("virsh -c #{config[:libvirt][:nodes][0][:url]} list --all") else puts "Invalid option or command" end end
rebuild(name)
click to toggle source
# File lib/gogetit/cli.rb, line 195 def rebuild(name) abort(":chef and :zero can not be set together.") \ if options[:chef] and options[:zero] provider = get_provider_of(name, providers) if provider case provider when 'lxd' 1.upto(100) { print '_' }; puts puts "Destroying #{name}.." invoke :destroy, [name] alias_name = YAML.load( Gogetit::CLI.result[:info][:config][:"user.user-data"] )['source_image_alias'] 1.upto(100) { print '_' }; puts puts "Creating #{name}.." invoke :create, [name], :alias => alias_name when 'libvirt' invoke :release, [name] distro_name = Gogetit::CLI.result[:info][:machine]['distro_series'] invoke :deploy, [name], :distro => distro_name else abort('Invalid argument entered.') end end # post-tasks if options[:chef] knife_remove(name) if options[:chef] update_databags(config) end end
release(name)
click to toggle source
# File lib/gogetit/cli.rb, line 174 def release(name) abort(":chef and :zero can not be set together.") \ if options[:chef] and options[:zero] Gogetit::CLI.result = libvirt.release(name) # post-tasks if options[:chef] knife_remove(name, options) update_databags(config) elsif options[:zero] knife_remove(name, options) end end