class Fog::Google::SQL::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/google/sql.rb, line 86
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.rb, line 82
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.rb, line 97
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 = {})
  self.data[:instances][destination_name] = self.data[:instances][instance_id]
  self.data[:instances][destination_name]['instance'] = destination_name
  self.data[:ssl_certs][destination_name] = {}
  self.data[:backup_runs][destination_name] = {}

  operation = self.random_operation
  self.data[:operations][destination_name] ||= {}
  self.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 = self.random_operation
  self.data[:operations][instance_id] ||= {}
  self.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.rb, line 101
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 self.data[:instances].has_key?(instance_id)
    self.data[:instances].delete(instance_id)
    self.data[:ssl_certs].delete(instance_id)
    self.data[:backup_runs].delete(instance_id)

    operation = self.random_operation
    self.data[:operations][instance_id] ||= {}
    self.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 self.data[:ssl_certs].has_key?(instance_id)
    self.data[:ssl_certs][instance_id].delete(sha1_fingerprint)

    operation = self.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#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 = self.random_operation
  self.data[:operations][instance_id] ||= {}
  self.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 self.data[:instances].has_key?(instance_id)
    body = self.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 self.data[:operations].has_key?(instance_id)
    if self.data[:operations][instance_id].has_key?(operation_id)
      body = self.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 self.data[:ssl_certs].has_key?(instance_id)
    if self.data[:ssl_certs][instance_id].has_key?(sha1_fingerprint)
      body = self.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 = self.random_operation
  self.data[:operations][instance_id] ||= {}
  self.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 68
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 = self.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 self.data[:ssl_certs].has_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' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'allowedStringValues' => ['TABLE', 'NONE'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'general_log',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'log_queries_not_using_indexes',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'log_bin_trust_function_creators',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'slow_query_log',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'read_only',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'max_allowed_packet',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '16384',
        'maxValue' => '1073741824',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'long_query_time',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '0',
        'maxValue' => '30000000',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'group_concat_max_len',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '4',
        'maxValue' => '17179869184',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'wait_timeout',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '1',
        'maxValue' => '31536000',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'innodb_lock_wait_timeout',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '1',
        'maxValue' => '1073741824',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'lower_case_table_names',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '0',
        'maxValue' => '2',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'innodb_flush_log_at_trx_commit',
        'type' => 'INTEGER',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'minValue' => '0',
        'maxValue' => '2',
      },
      {
        'kind' => 'sql#flag',
        'name' => 'skip_show_database',
        'type' => 'NONE',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'event_scheduler',
        'type' => 'BOOLEAN',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
      },
      {
        'kind' => 'sql#flag',
        'name' => 'character_set_server',
        'type' => 'STRING',
        'appliesTo' => ['MYSQL_5_5', 'MYSQL_5_6'],
        'allowedStringValues' => ['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' => self.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 self.data[:operations].has_key?(instance_id)
    body = {
      'kind' => 'sql#operationsList',
      'items' => self.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 self.data[:ssl_certs].has_key?(instance_id)
    body = {
      'kind' => 'sql#sslCertsList',
      'items' => self.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.rb, line 109
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.rb, line 105
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 = self.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#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 = self.random_operation
  self.data[:operations][instance_id] ||= {}
  self.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 = self.random_operation
  self.data[:operations][instance_id] ||= {}
  self.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 = self.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