Class: Puppet::Provider::NexusBlobstore::NexusBlobstore

Inherits:
ResourceApi::SimpleProvider
  • Object
show all
Defined in:
lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb

Overview

Implementation for the nexus_blobstore type using the Resource API.

Instance Method Summary collapse

Constructor Details

#initializeNexusBlobstore

Init connection to the rest api



9
10
11
12
13
14
# File 'lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb', line 9

def initialize
  super
  local_device = Puppet::Util::NetworkDevice::Config.devices['localhost_nexus_rest_api']
  config_file = local_device['url'] unless local_device.nil?
  Puppet::ResourceApi::Transport.inject_device('nexus_rest_api', config_file) unless File.exist?(config_file)
end

Instance Method Details

#create(context, name, should) ⇒ Object

Create blobstores not yet existing in nexus repository manager



41
42
43
44
45
46
47
# File 'lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb', line 41

def create(context, name, should)
  attributes = should[:attributes]
  attributes[:name] = name
  res = context.transport.post_request(context, "blobstores/#{should[:type]}", attributes)

  context.err(res.body) unless res.success?
end

#delete(context, name) ⇒ Object

Delete blobstore which is set to absent



57
58
59
60
61
# File 'lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb', line 57

def delete(context, name)
  res = context.transport.delete_request(context, "blobstores/#{name}")

  context.err(res.body) unless res.success?
end

#get(context, names = nil) ⇒ Object

Return requested blobstores as resources



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb', line 17

def get(context, names = nil)
  res = context.transport.get_request(context, 'blobstores')

  context.err(res.body) unless res.success?

  Puppet::Util::Json.load(res.body).map { |blobstore|
    next unless names.include?(blobstore['name'])

    type = blobstore['type'].downcase # API returns 'File' instead of 'file'
    res = context.transport.get_request(context, "blobstores/#{type}/#{blobstore['name']}")

    next unless res.success? # skip unsupported blobstore types

    attributes = Puppet::Util::Json.load(res.body)
    {
      name: blobstore['name'],
      ensure: 'present',
      type: type,
      attributes: attributes
    }
  }.compact
end

#update(context, name, should) ⇒ Object

Update blobstore settings on existing blobstore



50
51
52
53
54
# File 'lib/puppet/provider/nexus_blobstore/nexus_blobstore.rb', line 50

def update(context, name, should)
  res = context.transport.put_request(context, "blobstores/#{should[:type]}/#{name}", should[:attributes])

  context.err(res.body) unless res.success?
end