class OVH::Provisioner::Cli

The command line runner

The command line runner

Constants

NAME_DOMAIN
NAME_SCHEME

Public Class Methods

all(targets) click to toggle source
# File lib/ovh/provisioner/self_cli.rb, line 49
def self.all(targets)
  targets.empty? ? [''] : targets
end
ask_validation(question, what = nil) click to toggle source
# File lib/ovh/provisioner/self_cli.rb, line 30
def self.ask_validation(question, what = nil)
  say question
  say what unless what.nil?
  exit unless HighLine.agree('Do you want to proceed?')
end
check_service_input(search, services, allow_many = true) click to toggle source
# File lib/ovh/provisioner/self_cli.rb, line 36
def self.check_service_input(search, services, allow_many = true)
  ok = true
  if services.empty?
    puts "No registered services of your account match #{search}"
    ok = false
  end
  if !allow_many && services.size > 1
    puts "Need one service, got many: #{services.map(&:id)}"
    ok = false
  end
  ok
end
exit_on_failure?() click to toggle source

Exit 1 on failure

# File lib/ovh/provisioner/self_cli.rb, line 26
def self.exit_on_failure?
  true
end

Public Instance Methods

get(url) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 148
def get(url)
  Provisioner.init(options)
  puts Provisioner.client.get url
end
init_rename(targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 163
def init_rename(targets)
  spawner = Provisioner.init(options)
  servers = spawner.get('DedicatedServer', *self.class.all(targets))
  name_domain = Provisioner.config['name_domain']
  domain = spawner.get('DomainZone', id: name_domain)
  [servers, domain]
end
install(*targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 88
def install(*targets)
  spawner = Provisioner.init(options)
  servers = spawner.get('DedicatedServer', *self.class.all(targets))
  self.class.ask_validation(
    'You are going to (re)install those servers:',
    servers.format('install_status', 'flavor')
  )
  servers.puts_each(:install)
end
ipmi(*targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 135
def ipmi(*targets)
  spawner = Provisioner.init(options)
  servers = spawner.get('DedicatedServer', *self.class.all(targets))
  list = servers.list
  unless list.size == 1
    puts 'Please select one and only one target! You have targeted:'
    puts servers.format('flavor')
    exit 1
  end
  list.first.ipmi
end
list(*targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 52
def list(*targets)
  spawner = Provisioner.init(options)
  puts spawner
    .get('DedicatedServer', *self.class.all(targets))
    .format('vrack', 'flavor')
end
rename(*targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 112
def rename(*targets)
  servers, domain = init_rename(targets)
  # Add check on duplication?
  self.class.ask_validation(
    'You are going to rename those servers:',
    servers.list.map do |s|
      "  #{s.reverse} => #{s.newname}.#{domain.id}"
    end.join("\n")
  )
  servers.puts_each(:rename, [domain])
  puts 'To complete renaming, call "set_reverse" in a few minute'
end
set_reverse(*targets) click to toggle source
# File lib/ovh/provisioner/cli.rb, line 128
def set_reverse(*targets) # rubocop:disable Style/AccessorMethodName
  servers, domain = init_rename(targets)
  servers.puts_each(:define_reverse, [domain])
end
version() click to toggle source
# File lib/ovh/provisioner/cli.rb, line 46
def version
  say "OVH Provisioner version #{OVH::Provisioner::VERSION}"
end