module Google::Cloud::Dns

# Google Cloud DNS

Google Cloud DNS is a high-performance, resilient, global DNS service that provides a cost-effective way to make your applications and services available to your users. This programmable, authoritative DNS service can be used to easily publish and manage DNS records using the same infrastructure relied upon by Google. To learn more, read [What is Google Cloud DNS?](cloud.google.com/dns/what-is-cloud-dns).

See {file:OVERVIEW.md Google Cloud DNS Overview}.

Constants

VERSION

Public Class Methods

configure() { |configure.dns| ... } click to toggle source

Configure the Google Cloud DNS library.

The following DNS configuration parameters are supported:

  • `project_id` - (String) Identifier for a DNS project. (The parameter `project` is considered deprecated, but may also be used.)

  • `credentials` - (String, Hash, Google::Auth::Credentials) The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See {Dns::Credentials}) (The parameter `keyfile` is considered deprecated, but may also be used.)

  • `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access.

  • `retries` - (Integer) Number of times to retry requests on server error.

  • `timeout` - (Integer) Default timeout to use in requests.

  • `endpoint` - (String) Override of the endpoint host name, or `nil` to use the default endpoint.

@return [Google::Cloud::Config] The configuration object the

Google::Cloud::Dns library uses.
# File lib/google/cloud/dns.rb, line 122
def self.configure
  yield Google::Cloud.configure.dns if block_given?

  Google::Cloud.configure.dns
end
default_credentials(scope: nil) click to toggle source

@private Default credentials.

# File lib/google/cloud/dns.rb, line 138
def self.default_credentials scope: nil
  Google::Cloud.configure.dns.credentials ||
    Google::Cloud.configure.credentials ||
    Dns::Credentials.default(scope: scope)
end
default_project_id() click to toggle source

@private Default project.

# File lib/google/cloud/dns.rb, line 130
def self.default_project_id
  Google::Cloud.configure.dns.project_id ||
    Google::Cloud.configure.project_id ||
    Google::Cloud.env.project_id
end
new(project_id: nil, credentials: nil, scope: nil, retries: nil, timeout: nil, endpoint: nil, project: nil, keyfile: nil) click to toggle source

Creates a new `Project` instance connected to the DNS service. Each call creates a new connection.

For more information on connecting to Google Cloud see the {file:AUTHENTICATION.md Authentication Guide}.

@param [String] project_id Identifier for a DNS project. If not present,

the default project for the credentials is used.

@param [String, Hash, Google::Auth::Credentials] credentials The path to

the keyfile as a String, the contents of the keyfile as a Hash, or a
Google::Auth::Credentials object. (See {Dns::Credentials})

@param [String, Array<String>] scope The OAuth 2.0 scopes controlling

the set of resources and operations that the connection can access.
See [Using OAuth 2.0 to Access Google
APIs](https://developers.google.com/identity/protocols/OAuth2).

The default scope is:

* `https://www.googleapis.com/auth/ndev.clouddns.readwrite`

@param [Integer] retries Number of times to retry requests on server

error. The default value is `3`. Optional.

@param [Integer] timeout Default timeout to use in requests. Optional. @param [String] endpoint Override of the endpoint host name. Optional.

If the param is nil, uses the default endpoint.

@param [String] project Alias for the `project_id` argument. Deprecated. @param [String] keyfile Alias for the `credentials` argument.

Deprecated.

@return [Google::Cloud::Dns::Project]

@example

require "google/cloud/dns"

dns = Google::Cloud::Dns.new(
        project_id: "my-dns-project",
        credentials: "/path/to/keyfile.json"
      )

zone = dns.zone "example-com"
# File lib/google/cloud/dns.rb, line 77
def self.new project_id: nil, credentials: nil, scope: nil, retries: nil,
             timeout: nil, endpoint: nil, project: nil, keyfile: nil
  scope       ||= configure.scope
  retries     ||= configure.retries
  timeout     ||= configure.timeout
  endpoint    ||= configure.endpoint
  credentials ||= (keyfile || default_credentials(scope: scope))

  unless credentials.is_a? Google::Auth::Credentials
    credentials = Dns::Credentials.new credentials, scope: scope
  end

  project_id = resolve_project_id(project_id || project, credentials)
  raise ArgumentError, "project_id is missing" if project_id.empty?

  Dns::Project.new(
    Dns::Service.new(
      project_id, credentials,
      retries: retries, timeout: timeout, host: endpoint, quota_project: configure.quota_project
    )
  )
end
resolve_project_id(given_project, credentials) click to toggle source

@private Resolve project.

# File lib/google/cloud/dns.rb, line 146
def self.resolve_project_id given_project, credentials
  project_id = given_project || default_project_id
  if credentials.respond_to? :project_id
    project_id ||= credentials.project_id
  end
  project_id.to_s # Always cast to a string
end