class Chef::Knife::IonoscloudIpblockCreate

Attributes

description[R]
required_options[R]

Public Class Methods

new(args = []) click to toggle source
Calls superclass method
# File lib/chef/knife/ionoscloud_ipblock_create.rb, line 27
def initialize(args = [])
  super(args)
  @description =
  'Reserves an IP block at a specified location that can be used by resources '\
  'within any VDCs provisioned in that same location. An IP block consists of '\
  'one or more static IP addresses. The IP block size \(number of IP addresses\) '\
  'and location are required to reserve an IP block.'
  @required_options = [:size, :location, :ionoscloud_username, :ionoscloud_password]
end

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/ionoscloud_ipblock_create.rb, line 37
def run
  $stdout.sync = true
  handle_extra_config
  validate_required_params(@required_options, config)

  print "#{ui.color('Allocating IP block...', :magenta)}"

  params = {
    location: config[:location],
    size: config[:size],
    name: config[:name],
  }.compact

  ipblock, _, headers = Ionoscloud::IPBlocksApi.new(api_client).ipblocks_post_with_http_info({ properties: params.compact })

  dot = ui.color('.', :magenta)
  api_client.wait_for { print dot; is_done? get_request_id headers }

  puts "\n"
  puts "#{ui.color('ID', :cyan)}: #{ipblock.id}"
  puts "#{ui.color('Name', :cyan)}: #{ipblock.properties.name}"
  puts "#{ui.color('Location', :cyan)}: #{ipblock.properties.location}"
  puts "#{ui.color('IP Addresses', :cyan)}: #{ipblock.properties.ips.to_s}"
  puts 'done'
end