Class: Fog::Compute::Google::Images
- Inherits:
-
Fog::Collection
- Object
- Fog::Collection
- Fog::Compute::Google::Images
- Defined in:
- lib/fog/compute/google/models/images.rb
Constant Summary collapse
- GLOBAL_PROJECTS =
NOTE: some of these operating systems are premium and users will be charged a license fee beyond the base Google Compute Engine VM charges. See cloud.google.com/compute/docs/operating-systems/ for more info.
%w( centos-cloud cos-cloud debian-cloud fedora-coreos-cloud rhel-cloud rhel-sap-cloud rocky-linux-cloud suse-cloud suse-sap-cloud ubuntu-os-cloud ubuntu-os-pro-cloud windows-cloud windows-sql-cloud ).freeze
Instance Method Summary collapse
- #all(opts = {}) ⇒ Object
-
#current ⇒ Object
Only return the non-deprecated list of images.
- #get(identity, project = nil) ⇒ Object
- #get_from_family(family, project = nil) ⇒ Object
Instance Method Details
#all(opts = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/fog/compute/google/models/images.rb', line 27 def all(opts = {}) items = [] all_projects.each do |project| begin next_page_token = nil loop do opts[:page_token] = next_page_token data = service.list_images(project, **opts) images = data.items&.map(&:to_h) || [] # Keep track of the project in which we found the image(s) images.each { |img| img.merge!(:project => project) } items.concat(images) next_page_token = data.next_page_token break if next_page_token.nil? || next_page_token.empty? end rescue ::Google::Apis::ClientError => e raise e unless e.status_code == 404 # Not everyone has access to every Global Project. Requests # return 404 if you don't have access. next end end load(items) end |
#current ⇒ Object
Only return the non-deprecated list of images
53 54 55 |
# File 'lib/fog/compute/google/models/images.rb', line 53 def current all.reject(&:deprecated) end |
#get(identity, project = nil) ⇒ Object
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 |
# File 'lib/fog/compute/google/models/images.rb', line 57 def get(identity, project = nil) if project begin image = service.get_image(identity, project).to_h # TODO: Remove response modification - see #405 image[:project] = project return new(image) rescue ::Google::Apis::ClientError => e raise e unless e.status_code == 404 nil end elsif identity projects = all_projects projects.each do |proj| begin response = service.get_image(identity, proj).to_h # TODO: Remove response modification - see #405 response[:project] = proj image = response return new(image) rescue ::Google::Apis::ClientError => e next if e.status_code == 404 break end end # If nothing is found - return nil nil end end |
#get_from_family(family, project = nil) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/fog/compute/google/models/images.rb', line 87 def get_from_family(family, project = nil) project.nil? ? projects = all_projects : projects = [project] data = nil projects.each do |proj| begin data = service.get_image_from_family(family, proj).to_h data[:project] = proj rescue ::Google::Apis::ClientError => e next if e.status_code == 404 break end end return nil if data.nil? new(data) end |