C++
C++
Google Cloud SQL - Get Instance Information
See more Google Cloud SQL Examples
Demonstrates how to get information about your Cloud SQL instances, including instance summary information, usage data, operation logs, and database logs.Chilkat C++ Downloads
#include <CkStringBuilder.h>
#include <CkHttp.h>
#include <CkJsonObject.h>
void ChilkatSample(void)
{
bool success = false;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// In this example, Get Google Cloud SQL OAuth2 Access Token,
// the service account access token was saved to a text file. This example fetches the access token from the file..
CkStringBuilder sbToken;
sbToken.LoadFile("qa_data/tokens/google_cloud_sql_access_token.txt","utf-8");
CkHttp http;
// Implements the following CURL command:
// curl -X GET \
// -H "Authorization: Bearer access-token" \
// https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
// Causes the "Authorization: Bearer "$(gcloud auth print-access-token)" header to be added.
http.put_AuthToken(sbToken.getAsString());
// Replace "project-id" with your actual Google project ID.
// Replace "instance-id" with your database instance ID, which is the name of your database. (For example, when I created my test database I named it "chilkat", and therefore my instance-id is "chilkat".)
CkStringBuilder sbResponseBody;
success = http.QuickGetSb("https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",sbResponseBody);
if (success == false) {
std::cout << http.lastErrorText() << "\r\n";
return;
}
CkJsonObject jResp;
jResp.LoadSb(sbResponseBody);
jResp.put_EmitCompact(false);
std::cout << "Response Body:" << "\r\n";
std::cout << jResp.emit() << "\r\n";
int respStatusCode = http.get_LastStatus();
std::cout << "Response Status Code = " << respStatusCode << "\r\n";
if (respStatusCode == 401) {
std::cout << "It may be that your access token expired." << "\r\n";
std::cout << "Try refreshing the access token by re-fetching it." << "\r\n";
}
if (respStatusCode >= 400) {
std::cout << "Response Header:" << "\r\n";
std::cout << http.lastHeader() << "\r\n";
std::cout << "Failed." << "\r\n";
return;
}
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "kind": "sql#instance",
// "state": "RUNNABLE",
// "databaseVersion": "MYSQL_5_7",
// "settings": {
// "authorizedGaeApplications": [
// ],
// "tier": "db-f1-micro",
// "kind": "sql#settings",
// "pricingPlan": "PER_USE",
// "replicationType": "SYNCHRONOUS",
// "activationPolicy": "ALWAYS",
// "ipConfiguration": {
// "authorizedNetworks": [
// ],
// "ipv4Enabled": true
// },
// "locationPreference": {
// "zone": "asia-east1-a",
// "kind": "sql#locationPreference"
// },
// "dataDiskType": "PD_SSD",
// "backupConfiguration": {
// "startTime": "08:00",
// "kind": "sql#backupConfiguration",
// "enabled": true,
// "pointInTimeEnabled": true
// },
// "settingsVersion": "13",
// "storageAutoResizeLimit": "0",
// "storageAutoResize": true,
// "dataDiskSizeGb": "10"
// },
// "etag": "etag-id",
// "ipAddresses": [
// {
// "type": "PRIMARY",
// "ipAddress": "10.0.0.1"
// }
// ],
// "serverCaCert": {
// "kind": "sql#sslCert",
// "certSerialNumber": "0",
// "cert": "certificate-id",
// "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
// "sha1Fingerprint": "sha-id",
// "instance": "instance-id",
// "createTime": "2019-06-28T22:46:35.052Z",
// "expirationTime": "2029-06-25T22:47:35.052Z"
// },
// "instanceType": "CLOUD_SQL_INSTANCE",
// "project": "project-id",
// "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
// "backendType": "SECOND_GEN",
// "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
// "connectionName": "project-id:region:instance-id",
// "name": "instance-id",
// "region": "asia-east1",
// "gceZone": "asia-east1-a"
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
// See this example explaining how this memory should be used: const char * functions.
const char *v_type = 0;
const char *ipAddress = 0;
const char *kind = jResp.stringOf("kind");
const char *state = jResp.stringOf("state");
const char *databaseVersion = jResp.stringOf("databaseVersion");
const char *settingsTier = jResp.stringOf("settings.tier");
const char *settingsKind = jResp.stringOf("settings.kind");
const char *settingsPricingPlan = jResp.stringOf("settings.pricingPlan");
const char *settingsReplicationType = jResp.stringOf("settings.replicationType");
const char *settingsActivationPolicy = jResp.stringOf("settings.activationPolicy");
bool settingsIpConfigurationIpv4Enabled = jResp.BoolOf("settings.ipConfiguration.ipv4Enabled");
const char *settingsLocationPreferenceZone = jResp.stringOf("settings.locationPreference.zone");
const char *settingsLocationPreferenceKind = jResp.stringOf("settings.locationPreference.kind");
const char *settingsDataDiskType = jResp.stringOf("settings.dataDiskType");
const char *settingsBackupConfigurationStartTime = jResp.stringOf("settings.backupConfiguration.startTime");
const char *settingsBackupConfigurationKind = jResp.stringOf("settings.backupConfiguration.kind");
bool settingsBackupConfigurationEnabled = jResp.BoolOf("settings.backupConfiguration.enabled");
bool settingsBackupConfigurationPointInTimeEnabled = jResp.BoolOf("settings.backupConfiguration.pointInTimeEnabled");
const char *settingsSettingsVersion = jResp.stringOf("settings.settingsVersion");
const char *settingsStorageAutoResizeLimit = jResp.stringOf("settings.storageAutoResizeLimit");
bool settingsStorageAutoResize = jResp.BoolOf("settings.storageAutoResize");
const char *settingsDataDiskSizeGb = jResp.stringOf("settings.dataDiskSizeGb");
const char *etag = jResp.stringOf("etag");
const char *serverCaCertKind = jResp.stringOf("serverCaCert.kind");
const char *serverCaCertCertSerialNumber = jResp.stringOf("serverCaCert.certSerialNumber");
const char *serverCaCertCert = jResp.stringOf("serverCaCert.cert");
const char *serverCaCertCommonName = jResp.stringOf("serverCaCert.commonName");
const char *serverCaCertSha1Fingerprint = jResp.stringOf("serverCaCert.sha1Fingerprint");
const char *serverCaCertInstance = jResp.stringOf("serverCaCert.instance");
const char *serverCaCertCreateTime = jResp.stringOf("serverCaCert.createTime");
const char *serverCaCertExpirationTime = jResp.stringOf("serverCaCert.expirationTime");
const char *instanceType = jResp.stringOf("instanceType");
const char *project = jResp.stringOf("project");
const char *serviceAccountEmailAddress = jResp.stringOf("serviceAccountEmailAddress");
const char *backendType = jResp.stringOf("backendType");
const char *selfLink = jResp.stringOf("selfLink");
const char *connectionName = jResp.stringOf("connectionName");
const char *name = jResp.stringOf("name");
const char *region = jResp.stringOf("region");
const char *gceZone = jResp.stringOf("gceZone");
int i = 0;
int count_i = jResp.SizeOfArray("settings.authorizedGaeApplications");
while (i < count_i) {
jResp.put_I(i);
i = i + 1;
}
i = 0;
count_i = jResp.SizeOfArray("settings.ipConfiguration.authorizedNetworks");
while (i < count_i) {
jResp.put_I(i);
i = i + 1;
}
i = 0;
count_i = jResp.SizeOfArray("ipAddresses");
while (i < count_i) {
jResp.put_I(i);
v_type = jResp.stringOf("ipAddresses[i].type");
ipAddress = jResp.stringOf("ipAddresses[i].ipAddress");
i = i + 1;
}
}