module GClouderUndefinedResources::RemoteResources::Remote::GCloud::ResourcesList

FIXME: refactor

Public Class Methods

fetch(project_id) click to toggle source
# File lib/gclouder_undefined_resources/remote_resources/remote.rb, line 31
def self.fetch(project_id)
  json = JSON.parse(Shell.run("gcloud --project #{project_id} alpha resources list --format json"))

  json.select do |resource|
    result = true

    if resource.key?("projectId")
      result = nil if resource["projectId"] != project_id
      #puts "skipping resource because project id does not match: #{resource['projectId']}"
    elsif resource.key?("selfLink")
      result = nil if resource["selfLink"] !~ /projects\/#{project_id}\//
      #puts "skipping resource because project id does not match: #{resource['selfLink']}"
    else
      ap resource
      puts "error: resource has no selfLink or projectId property, unable to determine project id"
      exit 1
    end

    if !resource.key?("name")
      puts "resource has no name key:"
      ap resource
    end

    result
  end.map do |resource|
    if !resource.key?("name")
      ap resource
      puts "error: resource has no name key"
      exit 1
    end

    Resource.new(resource["name"], resource)
  end
end