Module: CloudImagesRunDeck::Do

Extended by:
Do
Included in:
Do
Defined in:
lib/cloudimages-rundeck/do.rb

Overview

> This is the Do Module. It interacts with DigitalOcean resources.

Instance Method Summary collapse

Instance Method Details

#do_clientObject



20
21
22
23
# File 'lib/cloudimages-rundeck/do.rb', line 20

def do_client
  # => Instantiate a new DigitalOcean Client
  DropletKit::Client.new(access_token: Util.filestring(Config.do_api_key))
end

#imagesObject

> Grab the Private Images from DigitalOcean



28
29
30
31
32
33
34
# File 'lib/cloudimages-rundeck/do.rb', line 28

def images
  do_client.images.all.select do |image|
    image.public == false && image.type.casecmp('snapshot').zero?
  end.sort_by(&:id).reverse
rescue DropletKit::Error => e
  e
end

#list_imagesObject

> Custom-Tailor for Resource-JSON & Optionally Filter by Image Name



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cloudimages-rundeck/do.rb', line 39

def list_images # rubocop:disable AbcSize, MethodLength
  list = images
  return list.message if list.is_a?(DropletKit::Error)
  list = list.collect do |image|
    {
      'name' => image['name'] || image['message'],
      'value' => image['id'].to_s
    }
  end
  filter = Util.serialize_csv(Config.query_params['filter'])
  return list.select { |i| filter.any? { |f| i['name'] =~ /#{f}/i } } if filter
  list
end