Sha256: 99d1140dc718b71dc8d3dc077af8ea0441a3e32bf92199507e6ee6e82507af29

Contents?: true

Size: 1.83 KB

Versions: 24

Compression:

Stored size: 1.83 KB

Contents

require 'fog/core/model'

module Fog
  module Compute
    class Google

      class Image < Fog::Model

        identity :name

        attribute :kind
        attribute :creation_timestamp, :aliases => 'creationTimestamp'
        attribute :description
        attribute :preferred_kernel, :aliases => 'preferredKernel'

        # This attribute is not available in the representation of an
        # 'image' returned by the GCE servser (see GCE API). However,
        # images are a global resource and a user can query for images
        # across projects. Therefore we try to remember which project
        # the image belongs to by tracking it in this attribute.
        attribute :project

        # A RawDisk, e.g. -
        # {
        #   :source         => url_to_gcs_file,
        #   :container_type => 'TAR',
        #   :sha1Checksum   => ,
        # }
        attribute :raw_disk

        attribute :status

        def reload
          requires :name

          data = service.get_image(name, self.project).body

          self.merge_attributes(data)
          self
        end

        def save
          requires :name
          requires :preferred_kernel
          requires :raw_disk

          options = {
            'preferredKernel' => preferred_kernel,
            'rawDisk'         => raw_disk,
            'description'     => description,
          }

          service.insert_image(name, options)

          data = service.backoff_if_unfound {
            service.get_image(self.name).body
          }

          # Track the name of the project in which we insert the image
          data.merge!('project' => service.project)
          self.project = self.service.project

          service.images.merge_attributes(data)
        end

        def resource_url
          "#{self.project}/global/images/#{name}"
        end

      end
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
fog-1.19.0 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131209091424 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131209090811 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131206115947 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131205181604 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131127194823 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131126183714 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131126122111 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131125111730 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131125083406 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131123105121 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131122203507 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131121075022 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131118164830 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131115184302 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131114200144 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131112185232 lib/fog/google/models/compute/image.rb
fog-maestrodev-1.18.0.20131111203459 lib/fog/google/models/compute/image.rb
fog-1.18.0 lib/fog/google/models/compute/image.rb
fog-1.17.0 lib/fog/google/models/compute/image.rb