Class: Maas::Client::CLI

Inherits:
Thor
  • Object
show all
Includes:
Util
Defined in:
lib/maas/client/cli.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Util

#symbolize_keys

Constructor Details

#initialize(*args) ⇒ CLI

Returns a new instance of CLI.



16
17
18
19
# File 'lib/maas/client/cli.rb', line 16

def initialize(*args)
  super
  @conn = init_rbmaas
end

Instance Attribute Details

#connObject (readonly)

Returns the value of attribute conn.



14
15
16
# File 'lib/maas/client/cli.rb', line 14

def conn
  @conn
end

Instance Method Details

#clear(resource) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/maas/client/cli.rb', line 51

def clear(resource)
  case resource
  when 'dns'
    domains = []
    conn.request(:get, ['dnsresources']).each do |d|
      if d['ip_addresses'] == [] or d['ip_addresses'][0]['ip'] == nil
        domains << {id: d['id'], fqdn: d['fqdn']}
      end
    end

    if domains == []
      abort("There is no dnsresource to clear.")
    end

    domains.each do |d|
      puts "Deleting #{d[:fqdn]}..."
      conn.request(:delete, ['dnsresources', d[:id].to_s])
    end
  else
    puts "To clear #{resource} is not available."
  end
end

#generate(resource) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/maas/client/cli.rb', line 75

def generate(resource)
  case resource
  when 'hosts'
    records = []
    conn.request(:get, ['dnsresources']).each do |d|
      records << { ip: d['ip_addresses'][0]['ip'], fqdn: d['fqdn'] }
    end
    records.sort_by! { |h| h[:fqdn] }
    domain = conn.request(:get, ['domains'])[0]['name']
    to_slice = ".#{domain}"
    records.each do |r|
      hostname = r[:fqdn].gsub(to_slice, '')
      # to except the records for physical interfaces
      # such as eth0.10.foo.example.com
      if hostname.split('.').length < 3
        printf "%-20s %-20s %s\n", r[:ip], hostname, r[:fqdn]
      end
    end
    puts "# Updated date: #{Time.now.to_s}"
  else
    puts "To generate #{resource} is not available."
  end
end