class Fog::Compute::Google::Images
Constants
- 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.
Public Instance Methods
all(opts = {})
click to toggle source
# 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()
click to toggle source
Only return the non-deprecated list of images
# File lib/fog/compute/google/models/images.rb, line 53 def current all.reject(&:deprecated) end
get(identity, project = nil)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
all_projects()
click to toggle source
# File lib/fog/compute/google/models/images.rb, line 106 def all_projects # Search own project before global projects project_list = [service.project] + GLOBAL_PROJECTS + service.extra_global_projects unless service.exclude_projects.empty? project_list.delete_if { |project| service.exclude_projects.include?(project) } end project_list end