Class: Gogetit::CLI
Class Attribute Summary collapse
-
.result ⇒ Object
Returns the value of attribute result.
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#libvirt ⇒ Object
readonly
Returns the value of attribute libvirt.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#lxd ⇒ Object
readonly
Returns the value of attribute lxd.
-
#providers ⇒ Object
readonly
Returns the value of attribute providers.
Instance Method Summary collapse
- #create(name) ⇒ Object
- #deploy(name) ⇒ Object
- #destroy(name) ⇒ Object
-
#initialize(*args) ⇒ CLI
constructor
A new instance of CLI.
- #list ⇒ Object
- #rebuild(name) ⇒ Object
- #release(name) ⇒ Object
Methods included from Util
#check_ip_available, #get_gateway, #get_http_content, #get_provider_of, #is_port_open?, #knife_bootstrap, #knife_remove, #ping_available?, #run_command, #run_through_ssh, #ssh_available?, #update_databags, #wait_until_available
Constructor Details
#initialize(*args) ⇒ CLI
Returns a new instance of CLI.
18 19 20 21 22 23 24 25 26 27 28 |
# 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 |
Class Attribute Details
.result ⇒ Object
Returns the value of attribute result.
13 14 15 |
# File 'lib/gogetit/cli.rb', line 13 def result @result end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
16 17 18 |
# File 'lib/gogetit/cli.rb', line 16 def config @config end |
#libvirt ⇒ Object (readonly)
Returns the value of attribute libvirt.
16 17 18 |
# File 'lib/gogetit/cli.rb', line 16 def libvirt @libvirt end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
16 17 18 |
# File 'lib/gogetit/cli.rb', line 16 def logger @logger end |
#lxd ⇒ Object (readonly)
Returns the value of attribute lxd.
16 17 18 |
# File 'lib/gogetit/cli.rb', line 16 def lxd @lxd end |
#providers ⇒ Object (readonly)
Returns the value of attribute providers.
16 17 18 |
# File 'lib/gogetit/cli.rb', line 16 def providers @providers end |
Instance Method Details
#create(name) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/gogetit/cli.rb', line 56 def create(name) abort("'vlans' and 'ipaddresses' can not be set together.") \ if ['vlans'] and ['ipaddresses'] abort("when 'no-maas', the network configuration have to be set by 'file'.") \ if ['no-maas'] and (['vlans'] or ['ipaddresses']) abort("'no-maas' and 'file' have to be set together.") \ if ['no-maas'] ^ !!['file'] abort("'distro' has to be set with libvirt provider.") \ if ['distro'] and ['provider'] == 'lxd' abort("'alias' has to be set with lxd provider.") \ if ['alias'] and ['provider'] == 'libvirt' case ['provider'] when 'lxd' Gogetit::CLI.result = lxd.create(name, .to_hash) when 'libvirt' Gogetit::CLI.result = libvirt.create(name, .to_hash) else abort('Invalid argument entered.') end # post-tasks if ['chef'] knife_bootstrap(name, [:provider], config, logger) update_databags(config, logger) end end |
#deploy(name) ⇒ Object
114 115 116 117 118 119 120 121 122 |
# File 'lib/gogetit/cli.rb', line 114 def deploy(name) Gogetit::CLI.result = libvirt.deploy(name, .to_hash) # post-tasks if ['chef'] knife_bootstrap(name, [:provider], config, logger) update_databags(config, logger) end end |
#destroy(name) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/gogetit/cli.rb', line 90 def destroy(name) 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 ['chef'] knife_remove(name) if [:chef] update_databags(config) end end |
#list ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/gogetit/cli.rb', line 31 def list 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") end |
#rebuild(name) ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/gogetit/cli.rb', line 140 def rebuild(name) 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 ['chef'] knife_remove(name, logger) if [:chef] update_databags(config, logger) end end |
#release(name) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/gogetit/cli.rb', line 126 def release(name) Gogetit::CLI.result = libvirt.release(name) # post-tasks if ['chef'] knife_remove(name) if [:chef] update_databags(config) end end |