lib/fog/compute/google/models/target_https_proxy.rb
module Fog
module Compute
class Google
class TargetHttpsProxy < Fog::Model
identity :name
attribute :creation_timestamp, :aliases => "creationTimestamp"
attribute :description, :aliases => "description"
attribute :id, :aliases => "id"
attribute :kind, :aliases => "kind"
attribute :self_link, :aliases => "selfLink"
attribute :url_map, :aliases => "urlMap"
# Array of SSL Certificates
# @example
#
# [cert_one.self_link', cert_two.self_link]
#
# , where 'cert_one' and 'cert_two' are instances of
# Fog::Compute::Google::SslCertificate
#
# @return [Array<String>]
attribute :ssl_certificates, :aliases => "sslCertificates"
def save
requires :identity, :url_map, :ssl_certificates
unless ssl_certificates.is_a?(Array)
raise Fog::Errors::Error.new("ssl_certificates attribute must be an array")
end
data = service.insert_target_https_proxy(
identity,
:description => description,
:url_map => url_map,
:ssl_certificates => ssl_certificates
)
operation = Fog::Compute::Google::Operations.new(:service => service)
.get(data.name)
operation.wait_for { ready? }
reload
end
def destroy(async = true)
requires :identity
data = service.delete_target_https_proxy(identity)
operation = Fog::Compute::Google::Operations.new(:service => service)
.get(data.name)
operation.wait_for { ready? } unless async
operation
end
def set_url_map(url_map, async = true)
requires :identity
data = service.set_target_https_proxy_url_map(
identity, url_map
)
operation = Fog::Compute::Google::Operations.new(:service => service)
.get(data.name)
operation.wait_for { ready? } unless async
reload
end
def set_ssl_certificates(ssl_certificates, async = true)
requires :identity
data = service.set_target_https_proxy_ssl_certificates(
identity, ssl_certificates
)
operation = Fog::Compute::Google::Operations.new(:service => service)
.get(data.name)
operation.wait_for { ready? } unless async
reload
end
def ready?
requires :identity
service.get_target_https_proxy(identity)
true
rescue ::Google::Apis::ClientError => e
raise e unless e.status_code == 404
false
end
def reload
requires :identity
return unless data = begin
collection.get(identity)
rescue Excon::Errors::SocketError
nil
end
new_attributes = data.attributes
merge_attributes(new_attributes)
self
end
RUNNING_STATE = "READY".freeze
end
end
end
end