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 coreos-cloud debian-cloud rhel-cloud rhel-sap-cloud suse-cloud suse-sap-cloud ubuntu-os-cloud windows-cloud windows-sql-cloud opensuse-cloud ).freeze
Instance Method Summary collapse
- #all ⇒ 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 ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/fog/compute/google/models/images.rb', line 26 def all data = all_projects.map do |project| begin images = service.list_images(project).items || [] # Keep track of the project in which we found the image(s) images.map { |img| img.to_h.merge(:project => project) } 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 data = data.flatten load(data) end |
#current ⇒ Object
Only return the non-deprecated list of images
45 46 47 |
# File 'lib/fog/compute/google/models/images.rb', line 45 def current all.reject(&:deprecated) end |
#get(identity, project = nil) ⇒ Object
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 |
# File 'lib/fog/compute/google/models/images.rb', line 49 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
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/fog/compute/google/models/images.rb', line 79 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 |