Class: Fog::Google::Compute::Operation::QuotaInfo

Inherits:
ErrorInfo
  • Object
show all
Defined in:
lib/fog/google/compute/models/operation.rb

Overview

ErrorInfo

Instance Attribute Summary

Attributes inherited from ErrorInfo

#code, #error_details, #location, #message

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ QuotaInfo

Returns a new instance of QuotaInfo.

Raises:

  • (Fog::Errors::Error)


60
61
62
63
64
65
# File 'lib/fog/google/compute/models/operation.rb', line 60

def initialize(attributes = {})
  code = attributes[:code]
  raise Fog::Errors::Error.new("Invalid error code: #{code}") if code != "QUOTA_EXCEEDED"

  super(attributes)
end

Instance Method Details

#message_prettyObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/fog/google/compute/models/operation.rb', line 74

def message_pretty
  msg = super.gsub(/\s*Limit.*region.*[^.]+./, "")

  quota_infos.each do |qi|
    dimensions = qi[:dimensions]  if qi.is_a?(Hash)
    limit      = qi[:limit]       if qi.is_a?(Hash)
    metric     = qi[:metric_name] if qi.is_a?(Hash)

    region = dimensions[:region] if dimensions.is_a?(Hash)

    limit_msg = "  Limit: #{limit.to_f}"           if limit.is_a?(Numeric)
    limit_msg = "#{limit_msg} #{metric}"           if limit_msg && metric
    limit_msg = "#{limit_msg} in region #{region}" if limit_msg && region.is_a?(String)
    limit_msg = "#{limit_msg}."                    if limit_msg

    msg = "#{msg}#{limit_msg}"
  end

  msg
end

#quota_infosObject



67
68
69
70
71
72
# File 'lib/fog/google/compute/models/operation.rb', line 67

def quota_infos
  return [] unless error_details.is_a?(Array)

  error_details_quota_infos = error_details.select{|ed| ed.is_a?(Hash) && ed.has_key?(:quota_info)}
  error_details_quota_infos.map{|ed| ed[:quota_info]}
end