class Chef::Knife::IonoscloudDatacenterList

Attributes

description[R]
required_options[R]

Public Class Methods

new(args = []) click to toggle source
Calls superclass method
# File lib/chef/knife/ionoscloud_datacenter_list.rb, line 12
def initialize(args = [])
  super(args)
  @description =
  'Ionoscloud introduces the concept of virtual data centers. '\
  'These are logically separated from one another and allow you '\
  'to have a self-contained environment for all servers, volumes, '\
  'networking, and other resources. The goal is to give you the same '\
  'experience as you would have if you were running your own physical '\
  'data center. A list of available data centers can be obtained with the following command.'
  @required_options = [:ionoscloud_username, :ionoscloud_password]
end

Public Instance Methods

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

  datacenter_list = [
    ui.color('ID', :bold),
    ui.color('Name', :bold),
    ui.color('Description', :bold),
    ui.color('Location', :bold),
    ui.color('Version', :bold),
  ]

  datacenter_api = Ionoscloud::DataCenterApi.new(api_client)

  datacenter_api.datacenters_get({ depth: 1 }).items.each do |datacenter|
    datacenter_list << datacenter.id
    datacenter_list << datacenter.properties.name
    datacenter_list << datacenter.properties.description || ''
    datacenter_list << datacenter.properties.location
    datacenter_list << datacenter.properties.version.to_s
  end

  puts ui.list(datacenter_list, :uneven_columns_across, 5)
end