class Fog::Google::SQL::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/google/sql/mock.rb, line 11
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :backup_runs => {},
      :instances => {},
      :operations => {},
      :ssl_certs => {}
    }
  end
end
new(options) click to toggle source
# File lib/fog/google/sql/mock.rb, line 7
def initialize(options)
  shared_initialize(options[:google_project], GOOGLE_SQL_API_VERSION, GOOGLE_SQL_BASE_URL)
end
reset() click to toggle source
# File lib/fog/google/sql/mock.rb, line 22
def self.reset
  @data = nil
end

Public Instance Methods

clone_instance(instance_id, destination_name, _options = {}) click to toggle source
# File lib/fog/google/requests/sql/clone_instance.rb, line 40
def clone_instance(instance_id, destination_name, _options = {})
  data[:instances][destination_name] = data[:instances][instance_id]
  data[:instances][destination_name]["instance"] = destination_name
  data[:ssl_certs][destination_name] = {}
  data[:backup_runs][destination_name] = {}

  operation = random_operation
  data[:operations][destination_name] ||= {}
  data[:operations][destination_name][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => destination_name,
    "operation" => operation,
    "operationType" => "CREATE",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "CLONE",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesClone',
    "operation" => operation
  }

  build_excon_response(body)
end
data() click to toggle source
# File lib/fog/google/sql/mock.rb, line 26
def data
  self.class.data[project]
end
delete_instance(instance_id) click to toggle source
# File lib/fog/google/requests/sql/delete_instance.rb, line 22
def delete_instance(instance_id)
  if data[:instances].key?(instance_id)
    data[:instances].delete(instance_id)
    data[:ssl_certs].delete(instance_id)
    data[:backup_runs].delete(instance_id)

    operation = random_operation
    data[:operations][instance_id] ||= {}
    data[:operations][instance_id][operation] = {
      "kind" => 'sql#instanceOperation',
      "instance" => instance_id,
      "operation" => operation,
      "operationType" => "DELETE",
      "state" => Fog::Google::SQL::Operation::PENDING_STATE,
      "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
      "enqueuedTime" => Time.now.iso8601
    }

    body = {
      "kind" => 'sql#instancesDelete',
      "operation" => operation
    }
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
delete_ssl_cert(instance_id, sha1_fingerprint) click to toggle source
# File lib/fog/google/requests/sql/delete_ssl_cert.rb, line 23
def delete_ssl_cert(instance_id, sha1_fingerprint)
  if data[:ssl_certs].key?(instance_id)
    data[:ssl_certs][instance_id].delete(sha1_fingerprint)

    operation = random_operation
    data[:operations][instance_id] ||= {}
    data[:operations][instance_id][operation] = {
      "kind" => 'sql#instanceOperation',
      "instance" => instance_id,
      "operation" => operation,
      "operationType" => "UPDATE",
      "state" => Fog::Google::SQL::Operation::DONE_STATE,
      "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
      "enqueuedTime" => Time.now.iso8601,
      "startTime" => Time.now.iso8601,
      "endTime" => Time.now.iso8601
    }

    body = {
      "kind" => 'sql#sslCertsDelete',
      "operation" => operation
    }
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
export_instance(instance_id, _uri, _options = {}) click to toggle source
# File lib/fog/google/requests/sql/export_instance.rb, line 31
def export_instance(instance_id, _uri, _options = {})
  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "EXPORT",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesExport',
    "operation" => operation
  }

  build_excon_response(body)
end
get_backup_run(_instance_id, _backup_configuration_id, _due_time) click to toggle source
# File lib/fog/google/requests/sql/get_backup_run.rb, line 24
def get_backup_run(_instance_id, _backup_configuration_id, _due_time)
  Fog::Mock.not_implemented
end
get_instance(instance_id) click to toggle source
# File lib/fog/google/requests/sql/get_instance.rb, line 22
def get_instance(instance_id)
  if data[:instances].key?(instance_id)
    body = data[:instances][instance_id]
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
get_operation(instance_id, operation_id) click to toggle source
# File lib/fog/google/requests/sql/get_operation.rb, line 23
def get_operation(instance_id, operation_id)
  if data[:operations].key?(instance_id)
    if data[:operations][instance_id].key?(operation_id)
      body = data[:operations][instance_id][operation_id]
      status = 200
    else
      body = {
        "error" => {
          "errors" => [
            {
              "domain" => "global",
              "reason" => "operationDoesNotExist",
              "message" => "The Cloud SQL instance operation does not exist."
            }
          ],
          "code" => 404,
          "message" => "The Cloud SQL instance operation does not exist."
        }
      }
      status = 404
    end
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
get_ssl_cert(instance_id, sha1_fingerprint) click to toggle source
# File lib/fog/google/requests/sql/get_ssl_cert.rb, line 23
def get_ssl_cert(instance_id, sha1_fingerprint)
  if data[:ssl_certs].key?(instance_id)
    if data[:ssl_certs][instance_id].key?(sha1_fingerprint)
      body = data[:ssl_certs][instance_id][sha1_fingerprint]
      status = 200
    else
      body = {
        "error" => {
          "errors" => [
            {
              "domain" => "global",
              "reason" => "sslCertificateDoesNotExist",
              "message" => "The SSL certificate does not exist."
            }
          ],
          "code" => 404,
          "message" => "The SSL certificate does not exist."
        }
      }
      status = 404
    end
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
import_instance(instance_id, _uri, _options = {}) click to toggle source
# File lib/fog/google/requests/sql/import_instance.rb, line 30
def import_instance(instance_id, _uri, _options = {})
  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "IMPORT",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesImport',
    "operation" => operation
  }

  build_excon_response(body)
end
insert_instance(name, tier, options = {}) click to toggle source
# File lib/fog/google/requests/sql/insert_instance.rb, line 66
def insert_instance(name, tier, options = {})
  data = {
    "kind" => 'sql#instance',
    "instance" => name,
    "etag" => Fog::Mock.random_base64(32),
    "project" => @project,
    "state" => Fog::Google::SQL::Instance::RUNNABLE_STATE,
    "databaseVersion" => "MYSQL_5_5",
    "region" => options[:region] || "us-central",
    "currentDiskSize" => "86245269",
    "maxDiskSize" => "268435456000",
    "settings" => {
      "kind" => 'sql#settings',
      "settingsVersion" => "1",
      "tier" => tier,
      "backupConfiguration" => [
        {
          "kind" => 'sql#backupConfiguration',
          "startTime" => "04:00",
          "enabled" => false,
          "id" => Fog::Mock.random_hex(32),
          "binaryLogEnabled" => false
        }
      ],
      "pricingPlan" => options[:pricing_plan] || "PER_USE",
      "replicationType" => options[:replication_type] || "SYNCHRONOUS",
      "activationPolicy" => options[:activation_policy] || "ON_DEMAND",
      "ipConfiguration" => {
        "enabled" => false
      },
      "locationPreference" => {
        "kind" => 'sql#locationPreference'
      }
    },
    "serverCaCert" => {
      "kind" => 'sql#sslCert',
      "instance" => name,
      "sha1Fingerprint" => Fog::Mock.random_hex(40),
      "commonName" => 'C=US,O=Google\, Inc,CN=Google Cloud SQL Server CA',
      "certSerialNumber" => "0",
      "cert" => "-----BEGIN CERTIFICATE-----\nMIIDITCCAgmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMSMwIQYDVQQDExpHb29n\nbGUgQ2xvdWQgU1FMIFNlcnZlciBDQTEUMBIGA1UEChMLR29vZ2xlLCBJbmMxCzAJ\nBgNVBAYTAlVTMB4XDTE0MDYwNDA1MjkxMVoXDTI0MDYwMTA1MjkxMVowSDEjMCEG\nA1UEAxMaR29vZ2xlIENsb3VkIFNRTCBTZXJ2ZXIgQ0ExFDASBgNVBAoTC0dvb2ds\nZSwgSW5jMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBALlRjq3zccH5ed6NMfCFcTYd9XxYXyvLurxxjDIA6A7/ymVM9qdQC0uckf7C\nsi4uMi2yfK+PHZ0jXC+g0uPx5RTm+nbKl4I++VOh2g6oZHeNdFt4rVJpr+jzGUMf\nr67SymUr70TQOTEVpx2Ud3rBB2szulxWUSXEy2AGA3uNUGe/IgENh7p56s00Sr97\nTRP1S5/JVMalncgNVLH2nNqBQJZTx9t9qvGatoUfmHUU0+M//J5sXLbgdzeEeeot\nHJUyoXjA2sRkH1+F/d6PpFrcr1I8dVmCBEbTAnm7HpKh5Mx2nRYi+t/y9D2Mblwx\n9dBRfr3WIJ1JDxzt3L8CtBGZbvUCAwEAAaMWMBQwEgYDVR0TAQH/BAgwBgEB/wIB\nADANBgkqhkiG9w0BAQUFAAOCAQEAmHuBecPc265sbd26B1HXUAD6FHdzoZLrAZVW\n+1eIK4E669P4y6LkLuoCkLd64/YwA4K2FioksqgHOahbYWJJYPymy4ae+IPXzXcY\nPv3gmBsKk++sHb64D9Cj/k5n8BEiVmmrsUCUiL75nJAzK+El3hvKKWWl76XX/qHP\nk8ZAxIrn8bCiVOaj6NR4+p1OmcZSPNWxz7j/EwQxoABRxgPgt+B/YRseevww7an2\n/rGs0sk7RE0QDjLfZblYGh+xVPBBLuLmf4L5JNJkFEoeGSWrxTzvXnS+2LZeHdM/\nJ9nsiKu5JKPhMUS0vOcTymOkh8tJ6Np8gwg6ca4g6dT3llE6uQ==\n-----END CERTIFICATE-----",
      "createTime" => Time.now.iso8601,
      "expirationTime" => Time.now.iso8601
    }
  }

  if options[:autorized_gae_applications]
    data["settings"]["authorizedGaeApplications"] = Array(options[:autorized_gae_applications])
  end
  if options[:backup_configuration]
    data["settings"]["backupConfiguration"] = options[:backup_configuration]
  end
  if options[:ip_configuration_authorized_networks]
    data["settings"]["ipConfiguration"]["authorizedNetworks"] = Array(options[:ip_configuration_authorized_networks])
  end
  if options[:ip_configuration_enabled]
    data["settings"]["ipConfiguration"]["enabled"] = options[:ip_configuration_enabled]
  end
  if options[:ip_configuration_require_ssl]
    data["settings"]["ipConfiguration"]["requireSsl"] = options[:ip_configuration_require_ssl]
  end
  if options[:location_preference_zone_follow_gae_application]
    data["settings"]["locationPreference"]["followGaeApplication"] = options[:location_preference_zone_follow_gae_application]
  end
  if options[:location_preference_zone]
    data["settings"]["locationPreference"]["zone"] = options[:location_preference_zone]
  end

  self.data[:instances][name] = data
  self.data[:ssl_certs][name] = {}
  self.data[:backup_runs][name] = {}

  operation = random_operation
  self.data[:operations][name] ||= {}
  self.data[:operations][name][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => name,
    "operation" => operation,
    "operationType" => "CREATE",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesInsert',
    "operation" => operation
  }
  status = 200

  build_excon_response(body, status)
end
insert_ssl_cert(instance_id, common_name) click to toggle source
# File lib/fog/google/requests/sql/insert_ssl_cert.rb, line 26
def insert_ssl_cert(instance_id, common_name)
  if data[:ssl_certs].key?(instance_id)
    sha1_fingerprint = Fog::Mock.random_hex(40)
    data = {
      "kind" => 'sql#sslCert',
      "instance" => instance_id,
      "sha1Fingerprint" => sha1_fingerprint,
      "commonName" => common_name,
      "certSerialNumber" => Fog::Mock.random_numbers(9),
      "cert" => "-----BEGIN CERTIFICATE-----\nMIIC/zCCAeegAwIBAgIELAk5vzANBgkqhkiG9w0BAQUFADBNMSgwJgYDVQQDEx9H\nb29nbGUgQ2xvdWQgU1FMIENsaWVudCBDQSB0ZXN0MRQwEgYDVQQKEwtHb29nbGUs\nIEluYzELMAkGA1UEBhMCVVMwHhcNMTQwNjA0MDY1MjAwWhcNMjQwNjAxMDY1MjAw\nWjAyMQ0wCwYDVQQDEwR0ZXN0MRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UE\nBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9G9ZG19n978EW\n5bQ/TM1Fnb4fd/FRT8XMs2D5C7+dKLEgbeUOvZQt4EsQ6cC+UVhoK7N6DvnXAZ1M\ng+B159Xlqjv8Mh5RihfGjPCdlw2pF7Pu68LyYghvQLhi7yhuNeaN+FBeKvjcW9k0\ni54AM8Ub2a/kxAwMtXm1kGtgc1+qkUlyBxfn1UoKI5Dhvw/InxgI1kS/VUkkk9kv\n0q/oyPrboE/vuSitDq+pHjRFwrIQcS6Pz9DYHhZVyDDkTIh7vLXM0JEQRT1SiA8k\n+4hwXI3WBqPRZRI4H1KmYSSIKvZtci63SbM/rHitXkGipFF1lw0gSqfpM8gG36fl\naITBPI97AgMBAAGjAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQCOvRWYdcaYl/qHgif8\nvD4QEQLiy3+Hn5zSLQEcqP/BymhUw4LSGhu8NJxJ26PvlHzAnWa2/OkTCkgSpM4k\nkebO2vyuU8XY/7FeRO3uNktEAp2Aw1RYJ/IqSDvjpg5/hJTHKADrAkiu2SyCJvoO\nqblzBO7TvLj5BBdvcr1/hfWRuAt5NykOww9AMEAzrfLzrF7f98RntOZzIwwX+UvF\nLXQZwc/b55d97Y249pLRQCBnHdaEtZLQTEQulj1zMx2lkH5CrQWGwDCVFuIyt/rN\nzFJGN09McKrWkBZuwPtkkyb+sBVXZX6cEFgHHA+7D91QRH4lbEjjO8OjQgaA6qWN\n5iGN\n-----END CERTIFICATE-----",
      "createTime" => Time.now.iso8601,
      "expirationTime" => Time.now.iso8601
    }
    self.data[:ssl_certs][instance_id][sha1_fingerprint] = data
    body = {
      "kind" => 'sql#sslCertsInsert',
      "serverCaCert" => {
        "kind" => 'sql#sslCert',
        "instance" => instance_id,
        "sha1Fingerprint" => Fog::Mock.random_hex(40),
        "commonName" => 'C=US,O=Google\, Inc,CN=Google Cloud SQL Server CA',
        "certSerialNumber" => "0",
        "cert" => "-----BEGIN CERTIFICATE-----\nMIIDITCCAgmgAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMSMwIQYDVQQDExpHb29n\nbGUgQ2xvdWQgU1FMIFNlcnZlciBDQTEUMBIGA1UEChMLR29vZ2xlLCBJbmMxCzAJ\nBgNVBAYTAlVTMB4XDTE0MDYwNDA1MjkxMVoXDTI0MDYwMTA1MjkxMVowSDEjMCEG\nA1UEAxMaR29vZ2xlIENsb3VkIFNRTCBTZXJ2ZXIgQ0ExFDASBgNVBAoTC0dvb2ds\nZSwgSW5jMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBALlRjq3zccH5ed6NMfCFcTYd9XxYXyvLurxxjDIA6A7/ymVM9qdQC0uckf7C\nsi4uMi2yfK+PHZ0jXC+g0uPx5RTm+nbKl4I++VOh2g6oZHeNdFt4rVJpr+jzGUMf\nr67SymUr70TQOTEVpx2Ud3rBB2szulxWUSXEy2AGA3uNUGe/IgENh7p56s00Sr97\nTRP1S5/JVMalncgNVLH2nNqBQJZTx9t9qvGatoUfmHUU0+M//J5sXLbgdzeEeeot\nHJUyoXjA2sRkH1+F/d6PpFrcr1I8dVmCBEbTAnm7HpKh5Mx2nRYi+t/y9D2Mblwx\n9dBRfr3WIJ1JDxzt3L8CtBGZbvUCAwEAAaMWMBQwEgYDVR0TAQH/BAgwBgEB/wIB\nADANBgkqhkiG9w0BAQUFAAOCAQEAmHuBecPc265sbd26B1HXUAD6FHdzoZLrAZVW\n+1eIK4E669P4y6LkLuoCkLd64/YwA4K2FioksqgHOahbYWJJYPymy4ae+IPXzXcY\nPv3gmBsKk++sHb64D9Cj/k5n8BEiVmmrsUCUiL75nJAzK+El3hvKKWWl76XX/qHP\nk8ZAxIrn8bCiVOaj6NR4+p1OmcZSPNWxz7j/EwQxoABRxgPgt+B/YRseevww7an2\n/rGs0sk7RE0QDjLfZblYGh+xVPBBLuLmf4L5JNJkFEoeGSWrxTzvXnS+2LZeHdM/\nJ9nsiKu5JKPhMUS0vOcTymOkh8tJ6Np8gwg6ca4g6dT3llE6uQ==\n-----END CERTIFICATE-----",
        "createTime" => Time.now.iso8601,
        "expirationTime" => Time.now.iso8601
      },
      "clientCert" => {
        "certInfo" => data,
        "certPrivateKey" => "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAvRvWRtfZ/e/BFuW0P0zNRZ2+H3fxUU/FzLNg+Qu/nSixIG3l\nDr2ULeBLEOnAvlFYaCuzeg751wGdTIPgdefV5ao7/DIeUYoXxozwnZcNqRez7uvC\n8mIIb0C4Yu8objXmjfhQXir43FvZNIueADPFG9mv5MQMDLV5tZBrYHNfqpFJcgcX\n59VKCiOQ4b8PyJ8YCNZEv1VJJJPZL9Kv6Mj626BP77korQ6vqR40RcKyEHEuj8/Q\n2B4WVcgw5EyIe7y1zNCREEU9UogPJPuIcFyN1gaj0WUSOB9SpmEkiCr2bXIut0mz\nP6x4rV5BoqRRdZcNIEqn6TPIBt+n5WiEwTyPewIDAQABAoIBAH89e6+vDL4P05vU\ncrMkufldac9CpNxREIXrLBRmE0drWcK4Lqb8Z/d2MwvuPAHSOendfaVi7jf8nhod\noamzk/gz0qieEEhM4jJ2Im/mcwqTKD5Z45Gy5Hn20hm/UTTWj4p2yZySzV93bW4t\nguIf80AJ+I+0WWczs/C2e4kqF/RrIf4ff7UF/2TPS+sEmkTA74APWIMqjkr0cjTP\nrIJCp8jFn/639dVLeHcw2abduZSV8PkQSNdqPeH2P+GpqkYLREPMAw/jPGZYoVli\npQ57cB1THj/juYFYMS7dlJ3hr0pDo6Vw30L6EcE63dvXzJvhOfPXtFufdfanPiey\nUSICtAECgYEA/qP7ZJ9ohqg4D5v9TM4fVlUpo68/jMaWlPPoLQwNXZ81rTN4yOxm\nUJLhDvQCWYZie1jwn9+UA1bdp4PceSbEWh4iM0h4TcxmhHmos6pxGYb/uw6jGLw4\nqjCqDP69/Jgmkfobs4u/h9xtZEHo6u5rrbDZIu0EezL7ArMrSOYVRsMCgYEAvh5K\n4H5EVMhiHnjvbpToOzGjMpqoBr0XSq63Cx45U5on5Bp8oc/iQPnCzpwcrJb4vwRV\nVYYtD/PWpdjzhTVy6SgVnkTKoo6N/Y9vFAYCf67eb4Yu4L8MonlYU2IY7bA3SChw\nesHlwsVZdlNqieWmOuacA8IbgXW4ftbtZDzBuOkCgYEArA8rn+simtJxxwJVHp+s\nhw5Wa3bQDxRkzVMdz8p0AY3BnD3KYKFz5P/KOOth5xIp20TWmoBdKAB7F2S/BdHP\nHUF9RH+0YoU5xEvcVUJW17PjeobCZ8VO2Ji3Xr6Gq3Y3oa2JKEHGckvcUsFCW/Qs\nKBn2LmZO/9wLxeBA4CovuDcCgYAVGTWEDl807Xv+F7uykPHox8xtrD4jaU6xagxE\nPplsDrqIlOvp5TEdttoIpciE2shGIov5zscncw8KHrZ/vPvApkMn6kh2m81kK0vP\ndA9I7jYfOEvxgyI60a6cqlFL53drGZnJ9cSyxcX03LMBFKxK8xazUBJPXqoX4XA8\n5IU3KQKBgQDCPVBZbZcwcfI+fGRZX8DLE61tscK1uy0ySQPmz/tm3ixDAdQNgGvD\nXjyPvMCEtHx7+ZbykLS7SJZG4924LKyGxF9bw5AYTPyxietOUfoqaS8v3kJ03Ebu\nkVDmZkAiMk5E+oGchYsD613QRFjF4nlmrHfxtRqTPqa/OpNDimdG+w==\n-----END RSA PRIVATE KEY-----"
      }
    }
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
list_backup_runs(_instance_id, _backup_configuration_id) click to toggle source
# File lib/fog/google/requests/sql/list_backup_runs.rb, line 24
def list_backup_runs(_instance_id, _backup_configuration_id)
  Fog::Mock.not_implemented
end
list_flags() click to toggle source
# File lib/fog/google/requests/sql/list_flags.rb, line 19
def list_flags
  body = {
    "kind" => 'sql#flagsList',
    "items" => [
      {
        "kind" => 'sql#flag',
        "name" => "log_output",
        "type" => "STRING",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "allowedStringValues" => %w(TABLE NONE)
      },
      {
        "kind" => 'sql#flag',
        "name" => "general_log",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "log_queries_not_using_indexes",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "log_bin_trust_function_creators",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "slow_query_log",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "read_only",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "max_allowed_packet",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "16384",
        "maxValue" => "1073741824"
      },
      {
        "kind" => 'sql#flag',
        "name" => "long_query_time",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "0",
        "maxValue" => "30000000"
      },
      {
        "kind" => 'sql#flag',
        "name" => "group_concat_max_len",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "4",
        "maxValue" => "17179869184"
      },
      {
        "kind" => 'sql#flag',
        "name" => "wait_timeout",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "1",
        "maxValue" => "31536000"
      },
      {
        "kind" => 'sql#flag',
        "name" => "innodb_lock_wait_timeout",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "1",
        "maxValue" => "1073741824"
      },
      {
        "kind" => 'sql#flag',
        "name" => "lower_case_table_names",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "0",
        "maxValue" => "2"
      },
      {
        "kind" => 'sql#flag',
        "name" => "innodb_flush_log_at_trx_commit",
        "type" => "INTEGER",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "minValue" => "0",
        "maxValue" => "2"
      },
      {
        "kind" => 'sql#flag',
        "name" => "skip_show_database",
        "type" => "NONE",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "event_scheduler",
        "type" => "BOOLEAN",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6)
      },
      {
        "kind" => 'sql#flag',
        "name" => "character_set_server",
        "type" => "STRING",
        "appliesTo" => %w(MYSQL_5_5 MYSQL_5_6),
        "allowedStringValues" => %w(utf8 utf8mb4)
      }
    ]
  }

  build_excon_response(body)
end
list_instances() click to toggle source
# File lib/fog/google/requests/sql/list_instances.rb, line 21
def list_instances
  body = {
    "kind" => 'sql#instancesList',
    "items" => data[:instances].values
  }

  build_excon_response(body)
end
list_operations(instance_id) click to toggle source
# File lib/fog/google/requests/sql/list_operations.rb, line 23
def list_operations(instance_id)
  if data[:operations].key?(instance_id)
    body = {
      "kind" => 'sql#operationsList',
      "items" => data[:operations][instance_id].values
    }
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
list_ssl_certs(instance_id) click to toggle source
# File lib/fog/google/requests/sql/list_ssl_certs.rb, line 22
def list_ssl_certs(instance_id)
  if data[:ssl_certs].key?(instance_id)
    body = {
      "kind" => 'sql#sslCertsList',
      "items" => data[:ssl_certs][instance_id].values
    }
    status = 200
  else
    body = {
      "error" => {
        "errors" => [
          {
            "domain" => "global",
            "reason" => "notAuthorized",
            "message" => "The client is not authorized to make this request."
          }
        ],
        "code" => 403,
        "message" => "The client is not authorized to make this request."
      }
    }
    status = 403
  end

  build_excon_response(body, status)
end
list_tiers() click to toggle source
# File lib/fog/google/requests/sql/list_tiers.rb, line 21
def list_tiers
  body = {
    "kind" => 'sql#tiersList',
    "items" => [
      {
        "kind"      => 'sql#tier',
        "tier"      => "D0",
        "RAM"       => "134217728",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D1",
        "RAM"       => "536870912",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D2",
        "RAM"       => "1073741824",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D4",
        "RAM"       => "2147483648",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D8",
        "RAM"       => "4294967296",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D16",
        "RAM"       => "8589934592",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central", "europe-west1", "asia-east1"]
      },
      {
        "kind"      => 'sql#tier',
        "tier"      => "D32",
        "RAM"       => "17179869184",
        "DiskQuota" => "268435456000",
        "region"    => ["us-central"]
      }
    ]
  }

  build_excon_response(body)
end
random_operation() click to toggle source
# File lib/fog/google/sql/mock.rb, line 34
def random_operation
  "operation-#{Fog::Mock.random_numbers(13)}-#{Fog::Mock.random_hex(13)}-#{Fog::Mock.random_hex(8)}"
end
reset_data() click to toggle source
# File lib/fog/google/sql/mock.rb, line 30
def reset_data
  self.class.data.delete(project)
end
reset_instance_ssl_config(instance_id) click to toggle source
# File lib/fog/google/requests/sql/reset_instance_ssl_config.rb, line 24
def reset_instance_ssl_config(instance_id)
  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "UPDATE",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesResetSslConfig',
    "operation" => operation
  }

  build_excon_response(body)
end
restart_instance(instance_id) click to toggle source
# File lib/fog/google/requests/sql/restart_instance.rb, line 22
def restart_instance(instance_id)
  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "RESTART",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesRestart',
    "operation" => operation
  }

  build_excon_response(body)
end
restore_instance_backup(_identity, _backup_configuration, _due_time) click to toggle source
# File lib/fog/google/requests/sql/restore_instance_backup.rb, line 24
def restore_instance_backup(_identity, _backup_configuration, _due_time)
  Fog::Mock.not_implemented
end
set_instance_root_password(instance_id, _password) click to toggle source
# File lib/fog/google/requests/sql/set_instance_root_password.rb, line 29
def set_instance_root_password(instance_id, _password)
  operation = random_operation
  data[:operations][instance_id] ||= {}
  data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "INJECT_USER",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesSetRootPassword',
    "operation" => operation
  }

  build_excon_response(body)
end
update_instance(instance_id, _settings_version, tier, options = {}) click to toggle source
# File lib/fog/google/requests/sql/update_instance.rb, line 67
def update_instance(instance_id, _settings_version, tier, options = {})
  data = self.data[:instances][instance_id]
  data["tier"] = tier
  if options[:activation_policy]
    data["settings"]["activationPolicy"] = options[:activation_policy]
  end
  if options[:autorized_gae_applications]
    data["settings"]["authorizedGaeApplications"] = Array(options[:autorized_gae_applications])
  end
  if options[:backup_configuration]
    data["settings"]["backupConfiguration"] = options[:backup_configuration]
  end
  if options[:ip_configuration_authorized_networks]
    data["settings"]["ipConfiguration"] ||= {}
    data["settings"]["ipConfiguration"]["authorizedNetworks"] = Array(options[:ip_configuration_authorized_networks])
  end
  if options[:ip_configuration_enabled]
    data["settings"]["ipConfiguration"] ||= {}
    data["settings"]["ipConfiguration"]["enabled"] = options[:ip_configuration_enabled]
  end
  if options[:ip_configuration_require_ssl]
    data["settings"]["ipConfiguration"] ||= {}
    data["settings"]["ipConfiguration"]["requireSsl"] = options[:ip_configuration_require_ssl]
  end
  if options[:location_preference_zone_follow_gae_application]
    data["settings"]["locationPreference"] ||= {}
    data["settings"]["locationPreference"]["followGaeApplication"] = options[:location_preference_zone_follow_gae_application]
  end
  if options[:location_preference_zone]
    data["settings"]["locationPreference"] ||= {}
    data["settings"]["locationPreference"]["zone"] = options[:location_preference_zone]
  end
  if options[:pricing_plan]
    data["settings"]["pricingPlan"] = options[:pricing_plan]
  end
  if options[:replication_type]
    data["settings"]["replicationType"] = options[:replication_type]
  end
  self.data[:instances][instance_id] = data

  operation = random_operation
  self.data[:operations][instance_id] ||= {}
  self.data[:operations][instance_id][operation] = {
    "kind" => 'sql#instanceOperation',
    "instance" => instance_id,
    "operation" => operation,
    "operationType" => "UPDATE",
    "state" => Fog::Google::SQL::Operation::DONE_STATE,
    "userEmailAddress" => "google_client_email@developer.gserviceaccount.com",
    "enqueuedTime" => Time.now.iso8601,
    "startTime" => Time.now.iso8601,
    "endTime" => Time.now.iso8601
  }

  body = {
    "kind" => 'sql#instancesUpdate',
    "operation" => operation
  }
  status = 200

  build_excon_response(body, status)
end