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 <C_CkStringBuilder.h>
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
void ChilkatSample(void)
{
BOOL success;
HCkStringBuilder sbToken;
HCkHttp http;
HCkStringBuilder sbResponseBody;
HCkJsonObject jResp;
int respStatusCode;
const char *v_type;
const char *ipAddress;
const char *kind;
const char *state;
const char *databaseVersion;
const char *settingsTier;
const char *settingsKind;
const char *settingsPricingPlan;
const char *settingsReplicationType;
const char *settingsActivationPolicy;
BOOL settingsIpConfigurationIpv4Enabled;
const char *settingsLocationPreferenceZone;
const char *settingsLocationPreferenceKind;
const char *settingsDataDiskType;
const char *settingsBackupConfigurationStartTime;
const char *settingsBackupConfigurationKind;
BOOL settingsBackupConfigurationEnabled;
BOOL settingsBackupConfigurationPointInTimeEnabled;
const char *settingsSettingsVersion;
const char *settingsStorageAutoResizeLimit;
BOOL settingsStorageAutoResize;
const char *settingsDataDiskSizeGb;
const char *etag;
const char *serverCaCertKind;
const char *serverCaCertCertSerialNumber;
const char *serverCaCertCert;
const char *serverCaCertCommonName;
const char *serverCaCertSha1Fingerprint;
const char *serverCaCertInstance;
const char *serverCaCertCreateTime;
const char *serverCaCertExpirationTime;
const char *instanceType;
const char *project;
const char *serviceAccountEmailAddress;
const char *backendType;
const char *selfLink;
const char *connectionName;
const char *name;
const char *region;
const char *gceZone;
int i;
int count_i;
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..
sbToken = CkStringBuilder_Create();
CkStringBuilder_LoadFile(sbToken,"qa_data/tokens/google_cloud_sql_access_token.txt","utf-8");
http = CkHttp_Create();
// 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.
CkHttp_putAuthToken(http,CkStringBuilder_getAsString(sbToken));
// 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".)
sbResponseBody = CkStringBuilder_Create();
success = CkHttp_QuickGetSb(http,"https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",sbResponseBody);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkStringBuilder_Dispose(sbToken);
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbResponseBody);
return;
}
jResp = CkJsonObject_Create();
CkJsonObject_LoadSb(jResp,sbResponseBody);
CkJsonObject_putEmitCompact(jResp,FALSE);
printf("Response Body:\n");
printf("%s\n",CkJsonObject_emit(jResp));
respStatusCode = CkHttp_getLastStatus(http);
printf("Response Status Code = %d\n",respStatusCode);
if (respStatusCode == 401) {
printf("It may be that your access token expired.\n");
printf("Try refreshing the access token by re-fetching it.\n");
}
if (respStatusCode >= 400) {
printf("Response Header:\n");
printf("%s\n",CkHttp_lastHeader(http));
printf("Failed.\n");
CkStringBuilder_Dispose(sbToken);
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
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.
kind = CkJsonObject_stringOf(jResp,"kind");
state = CkJsonObject_stringOf(jResp,"state");
databaseVersion = CkJsonObject_stringOf(jResp,"databaseVersion");
settingsTier = CkJsonObject_stringOf(jResp,"settings.tier");
settingsKind = CkJsonObject_stringOf(jResp,"settings.kind");
settingsPricingPlan = CkJsonObject_stringOf(jResp,"settings.pricingPlan");
settingsReplicationType = CkJsonObject_stringOf(jResp,"settings.replicationType");
settingsActivationPolicy = CkJsonObject_stringOf(jResp,"settings.activationPolicy");
settingsIpConfigurationIpv4Enabled = CkJsonObject_BoolOf(jResp,"settings.ipConfiguration.ipv4Enabled");
settingsLocationPreferenceZone = CkJsonObject_stringOf(jResp,"settings.locationPreference.zone");
settingsLocationPreferenceKind = CkJsonObject_stringOf(jResp,"settings.locationPreference.kind");
settingsDataDiskType = CkJsonObject_stringOf(jResp,"settings.dataDiskType");
settingsBackupConfigurationStartTime = CkJsonObject_stringOf(jResp,"settings.backupConfiguration.startTime");
settingsBackupConfigurationKind = CkJsonObject_stringOf(jResp,"settings.backupConfiguration.kind");
settingsBackupConfigurationEnabled = CkJsonObject_BoolOf(jResp,"settings.backupConfiguration.enabled");
settingsBackupConfigurationPointInTimeEnabled = CkJsonObject_BoolOf(jResp,"settings.backupConfiguration.pointInTimeEnabled");
settingsSettingsVersion = CkJsonObject_stringOf(jResp,"settings.settingsVersion");
settingsStorageAutoResizeLimit = CkJsonObject_stringOf(jResp,"settings.storageAutoResizeLimit");
settingsStorageAutoResize = CkJsonObject_BoolOf(jResp,"settings.storageAutoResize");
settingsDataDiskSizeGb = CkJsonObject_stringOf(jResp,"settings.dataDiskSizeGb");
etag = CkJsonObject_stringOf(jResp,"etag");
serverCaCertKind = CkJsonObject_stringOf(jResp,"serverCaCert.kind");
serverCaCertCertSerialNumber = CkJsonObject_stringOf(jResp,"serverCaCert.certSerialNumber");
serverCaCertCert = CkJsonObject_stringOf(jResp,"serverCaCert.cert");
serverCaCertCommonName = CkJsonObject_stringOf(jResp,"serverCaCert.commonName");
serverCaCertSha1Fingerprint = CkJsonObject_stringOf(jResp,"serverCaCert.sha1Fingerprint");
serverCaCertInstance = CkJsonObject_stringOf(jResp,"serverCaCert.instance");
serverCaCertCreateTime = CkJsonObject_stringOf(jResp,"serverCaCert.createTime");
serverCaCertExpirationTime = CkJsonObject_stringOf(jResp,"serverCaCert.expirationTime");
instanceType = CkJsonObject_stringOf(jResp,"instanceType");
project = CkJsonObject_stringOf(jResp,"project");
serviceAccountEmailAddress = CkJsonObject_stringOf(jResp,"serviceAccountEmailAddress");
backendType = CkJsonObject_stringOf(jResp,"backendType");
selfLink = CkJsonObject_stringOf(jResp,"selfLink");
connectionName = CkJsonObject_stringOf(jResp,"connectionName");
name = CkJsonObject_stringOf(jResp,"name");
region = CkJsonObject_stringOf(jResp,"region");
gceZone = CkJsonObject_stringOf(jResp,"gceZone");
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"settings.authorizedGaeApplications");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
i = i + 1;
}
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"settings.ipConfiguration.authorizedNetworks");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
i = i + 1;
}
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"ipAddresses");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
v_type = CkJsonObject_stringOf(jResp,"ipAddresses[i].type");
ipAddress = CkJsonObject_stringOf(jResp,"ipAddresses[i].ipAddress");
i = i + 1;
}
CkStringBuilder_Dispose(sbToken);
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
}