Class: Puppetfactory::Cli

Inherits:
Object
  • Object
show all
Defined in:
lib/puppetfactory/cli.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Cli

Returns a new instance of Cli.



8
9
10
11
12
13
14
15
16
17
# File 'lib/puppetfactory/cli.rb', line 8

def initialize(options = {})
  if options[:server]
    @server = options[:server]
  else
    @server = 'localhost'
  end
  @server = "http://#{@server}:#{options[:port]}" unless @server.start_with? 'http'
  @master = options[:master]
  @debug  = options[:debug]
end

Instance Method Details

#create(user, password) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/puppetfactory/cli.rb', line 36

def create(user, password)
  begin
    params = {
      body: {
        username: user,
        password: password
      }
    }
    response = HTTParty.post("#{@server}/api/users", params)
    raise "PuppetFactory error: #{response.body}" unless response.code == 200

    data = JSON.parse(response.body)
    raise data['message'] unless data['status'] == 'success'

    puts "User #{user} created."
  rescue => e
    puts "API error creating user #{user}: #{e.message}"
    puts e.backtrace if @debug
  end
end

#delete(user) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/puppetfactory/cli.rb', line 57

def delete(user)
  begin
    response = HTTParty.delete("#{@server}/api/users/#{user}")
    raise "Puppetfactory error: #{response.body}" unless response.code == 200

    data = JSON.parse(response.body)
    raise data['message'] unless data['status'] == 'success'

    puts "User #{user} deleted."
  rescue => e
    puts "API error deleting user #{user}: #{e.message}"
    puts e.backtrace if @debug
  end
end

#listObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/puppetfactory/cli.rb', line 19

def list()
  begin
    puts ' Username        Sandbox URL                   Certname                 Container | Node Group'
    response = HTTParty.get("#{@server}/api/users")
    raise "PuppetFactory service not responding: #{@server}" unless response.code == 200

    JSON.parse(response.body).each do |user, params|
      container = params['container_status']['Dead'] ? 'X' : '+' rescue '?'
      nodegroup = params['node_group_url'].nil?      ? 'X' : '+'
      printf("%-14s  https://%s%10s        %-25s     %1s          %1s\n", user, @master, params['url'], params['certname'], container, nodegroup)
    end
  rescue => e
    puts "API error listing users: #{e.message}"
    puts e.backtrace if @debug
  end
end

#redeploy(user) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/puppetfactory/cli.rb', line 90

def redeploy(user)
  begin
    response = HTTParty.put("#{@server}/api/users/#{user}",
                            { body: {
                                username: user,
                                action: "redeploy"}
                            })
    raise "Puppetfactory error: #{response.body}" unless response.code == 200

    data = JSON.parse(response.body)
    raise data['message'] unless data['status'] == 'success'

    puts "User #{user} repaired."
  rescue => e
    puts "API error redeploying environment #{user}: #{e.message}"
    puts e.backtrace if @debug
  end
end

#repair(user) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/puppetfactory/cli.rb', line 72

def repair(user)
  begin
    response = HTTParty.put("#{@server}/api/users/#{user}",
                            { body: {
                                username: user,
                                action: "repair"}
                            })
    raise "Puppetfactory error: #{response.body}" unless response.code == 200

    data = JSON.parse(response.body)
    raise data['message'] unless data['status'] == 'success'

    puts "User #{user} repaired."
  rescue => e
    puts "API error repair user #{user}: #{e.message}"
    puts e.backtrace if @debug
  end
end

#testObject



109
110
111
112
# File 'lib/puppetfactory/cli.rb', line 109

def test()
  require 'pry'
  binding.pry
end