class Fog::Compute::Google::ResourceView

the resource view model creates either a region view or zone view depending on which is parameter is passed

Constants

RUNNING_STATE

Public Instance Methods

add_resources(resources) click to toggle source
# File lib/fog/compute/google/models/resource_view.rb, line 75
def add_resources(resources)
  resources = [resources] unless resources.class == Array
  resources.map { |resource| resource.class == String ? resource : resource.self_link }
  service.add_zone_view_resources(self, resources, @zone) if @zone
  service.add_region_view_resources(self, reources, @region) if @region
  reload
end
destroy(async = false) click to toggle source
# File lib/fog/compute/google/models/resource_view.rb, line 53
def destroy(async = false)
  requires :name
  # parse the self link to get the zone or region
  selflink = self_link.split("/")
  if selflink[7] == "regions"
    operation = service.delete_region_view(name, selflink[8])
  end

  if selflink[7] == "zones"
    operation = service.delete_zone_view(name, selflink[8])
  end

  unless async
    # wait until "DONE" to ensure the operation doesn't fail, raises
    # exception on error
    Fog.wait_for do
      operation.body.nil?
    end
  end
  operation
end
ready?() click to toggle source
# File lib/fog/compute/google/models/resource_view.rb, line 83
def ready?
  service.get_zone_view(name, @zone) if @zone
  service.get_region_view(name, @region) if @region
  true
rescue Fog::Errors::NotFound
  false
end
reload() click to toggle source
# File lib/fog/compute/google/models/resource_view.rb, line 91
def reload
  requires :name

  return unless data = begin
    collection.get(name, region, zone)
  rescue Excon::Errors::SocketError
    nil
  end

  new_attributes = data.attributes
  merge_attributes(new_attributes)
  self
end
save() click to toggle source
# File lib/fog/compute/google/models/resource_view.rb, line 20
def save
  requires :name
  labels ||= []
  members ||= []

  if region
    options = {
      "description" => description,
      "labels" => labels,
      "lastModified" => last_modified,
      "members" => members,
      "numMembers" => num_members
    }
    @region = region
    data = service.insert_region_view(name, region, options).body
    operation = service.get_region_view(data["resource"]["name"], nil, @region).body
  end

  if zone
    options = {
      "description" => description,
      "labels" => labels,
      "lastModified" => last_modified,
      "members" => members,
      "numMembers" => num_members
    }
    @zone = zone
    data = service.insert_zone_view(name, zone, options).body
    operation = service.get_zone_view(data["resource"]["name"], @zone).body
  end
  reload
end