File: openstack.rb

package info (click to toggle)
puppet-module-barbican 25.0.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,116 kB
  • sloc: ruby: 2,722; python: 38; sh: 10; makefile: 10
file content (87 lines) | stat: -rw-r--r-- 2,079 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/barbican')
Puppet::Type.type(:barbican_secret).provide(
  :openstack,
  :parent => Puppet::Provider::Barbican
) do

  desc "Provider to manage Barbican secrets."

  @credentials = Puppet::Provider::Openstack::CredentialsV3.new

  def initialize(value={})
    super(value)
    @property_flush = {}
  end

  def self.get_url(myname)
    opts = []
    opts << "--name" << myname
    list = request('secret', 'list', opts)
    reallist = list.collect do |secret|
      url = secret[:'Secret href']
      return url
    end
  end

  def create
    opts = []
    opts << "--name=#{@resource[:name]}"
    opts << '--algorithm=aes'
    opts << '--bit-length=256'
    opts << '--mode=ctr'
    opts << '--secret-type=symmetric'
    opts << "--payload=#{@resource[:payload]}"

    @property_hash = self.class.request('secret', 'store', opts)
  end

  def destroy
    url = self.get_url(@resource[:name])
    self.self.request('secret', 'delete', url)
    @property_hash.clear
  end

  def flush
    @property_flush.clear
  end

#  def exists?
#    return true if @property_hash[:ensure] == :present
#    url = self.class.get_url(@resource[:name])
#    return false if url.nil?
#    true
#  end
  def exists?
    @property_hash[:ensure] == :present
  end

  mk_resource_methods

  # Types properties
  def payload=(value)
    @property_flush[:payload] = value
  end

  def self.instances
    list = request('secret', 'list')
    reallist = list.collect do |secret|
      debug "Found secret, calling get_url()"
      url = self.get_url(secret[:name])
#      properties = Hash[attrs[:properties].scan(/(\S+)='([^']*)'/)] rescue nil
      new(
        :ensure           => :present,
        :name             => secret[:name],
        :url              => url,
      )
    end
  end

  def self.prefetch(resources)
    secret = instances
    resources.keys.each do |name|
       if provider = secret.find{ |secret| secret.name == name.downcase }
        resources[name].provider = provider
      end
    end
  end
end