Class: PuppetX::Profitbricks::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet_x/profitbricks/helper.rb

Class Method Summary collapse

Class Method Details

.count_by_name(res_name, items) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/puppet_x/profitbricks/helper.rb', line 22

def self.count_by_name(res_name, items)
  count = 0
  unless items.empty?
    name_key = res_name.strip.downcase
    items.each do |item|
      unless item.properties['name'].nil? || item.properties['name'].empty?
        item_name = item.properties['name'].strip.downcase
        count += 1 if item_name == name_key
      end
    end
  end
  count
end

.group_from_name(group_name) ⇒ Object



66
67
68
69
70
# File 'lib/puppet_x/profitbricks/helper.rb', line 66

def self.group_from_name(group_name)
  group = Group.list.find { |group| group.properties['name'] == group_name }
  fail "Group named '#{group_name}' cannot be found." unless group
  group
end

.lan_from_name(lan_name, datacenter_id) ⇒ Object



54
55
56
57
58
# File 'lib/puppet_x/profitbricks/helper.rb', line 54

def self.lan_from_name(lan_name, datacenter_id)
  lan = LAN.list(datacenter_id).find { |lan| lan.properties['name'] == lan_name }
  fail "LAN named '#{lan_name}' cannot be found." unless lan
  lan
end

.profitbricks_config(depth = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/puppet_x/profitbricks/helper.rb', line 6

def self.profitbricks_config(depth = nil)
  ProfitBricks.configure do |config|
    config.username = ENV['PROFITBRICKS_USERNAME']
    config.password = ENV['PROFITBRICKS_PASSWORD']
    config.timeout = 600

    config.depth = depth unless depth.nil?

    url = ENV['PROFITBRICKS_API_URL']
    config.url = url unless url.nil? || url.empty?

    config.headers = Hash.new
    config.headers['User-Agent'] = "Puppet/#{Puppet.version}"
  end
end

.resolve_datacenter_id(dc_id, dc_name) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/puppet_x/profitbricks/helper.rb', line 36

def self.resolve_datacenter_id(dc_id, dc_name)
  return dc_id unless dc_id.nil? || dc_id.empty?
  unless dc_name.nil? || dc_name.empty?
    datacenters = Datacenter.list

    Puppet.info("Validating if data center name is unique.")
    if count_by_name(dc_name, datacenters) > 1
      fail "Found more than one data center named '#{dc_name}'."
    end

    datacenters.each do |dc|
      return dc.id if dc_name.casecmp(dc.properties['name']) == 0
    end
    fail "Data center named '#{dc_name}' cannot be found."
  end
  fail "Data center ID or name must be provided."
end

.resolve_group_id(group_id, group_name) ⇒ Object



72
73
74
75
# File 'lib/puppet_x/profitbricks/helper.rb', line 72

def self.resolve_group_id(group_id, group_name)
  return group_id unless group_id.nil? || group_id.empty?
  return group_from_name(group_name).id
end

.server_from_name(server_name, datacenter_id) ⇒ Object



60
61
62
63
64
# File 'lib/puppet_x/profitbricks/helper.rb', line 60

def self.server_from_name(server_name, datacenter_id)
  server = Server.list(datacenter_id).find { |server| server.properties['name'] == server_name }
  fail "Server named '#{server_name}' cannot be found." unless server
  server
end

.user_from_name(user_email) ⇒ Object



77
78
79
80
81
# File 'lib/puppet_x/profitbricks/helper.rb', line 77

def self.user_from_name(user_email)
  user = User.list.find { |user| user.properties['email'] == user_email }
  fail "User with email '#{user_email}' cannot be found." unless user
  user
end