use of com.google.spanner.admin.instance.v1.Instance in project java-docs-samples by GoogleCloudPlatform.
the class CreateInstanceDeleteProtection method createInstanceDeleteProtection.
// Send an instance creation request to the Compute Engine API and wait for it to complete.
public static void createInstanceDeleteProtection(String projectId, String zone, String instanceName, boolean deleteProtection) throws IOException, ExecutionException, InterruptedException {
String machineType = String.format("zones/%s/machineTypes/e2-small", zone);
String sourceImage = String.format("projects/debian-cloud/global/images/family/%s", "debian-11");
long diskSizeGb = 10L;
String networkName = "default";
// Instance creation requires at least one persistent disk and one network interface.
try (InstancesClient instancesClient = InstancesClient.create()) {
AttachedDisk disk = AttachedDisk.newBuilder().setBoot(true).setAutoDelete(true).setType(AttachedDisk.Type.PERSISTENT.toString()).setInitializeParams(// Describe the size and source image of the boot disk to attach to the instance.
AttachedDiskInitializeParams.newBuilder().setSourceImage(sourceImage).setDiskSizeGb(diskSizeGb).build()).build();
// Use the default VPC network.
NetworkInterface networkInterface = NetworkInterface.newBuilder().setName(networkName).build();
// Collect information into the Instance object.
Instance instanceResource = Instance.newBuilder().setName(instanceName).setMachineType(machineType).addDisks(disk).addNetworkInterfaces(networkInterface).setDeletionProtection(deleteProtection).build();
System.out.printf("Creating instance: %s at %s %n", instanceName, zone);
// Prepare the request to insert an instance.
InsertInstanceRequest insertInstanceRequest = InsertInstanceRequest.newBuilder().setProject(projectId).setZone(zone).setInstanceResource(instanceResource).build();
// Wait for the create operation to complete.
Operation response = instancesClient.insertAsync(insertInstanceRequest).get();
if (response.hasError()) {
System.out.println("Instance creation failed ! ! " + response);
return;
}
System.out.printf("Instance created : %s", instanceName);
System.out.println("Operation Status: " + response.getStatus());
}
}
use of com.google.spanner.admin.instance.v1.Instance in project java-docs-samples by GoogleCloudPlatform.
the class AutoLabelInstance method accept.
@Override
public void accept(CloudEvent event) throws Exception {
// Extract CloudEvent data
if (event.getData() != null) {
String cloudEventData = new String(event.getData().toBytes(), StandardCharsets.UTF_8);
// Convert data to JSON
JsonObject eventData;
try {
Gson gson = new Gson();
eventData = gson.fromJson(cloudEventData, JsonObject.class);
} catch (JsonSyntaxException error) {
throw new RuntimeException("CloudEvent data is not valid JSON: " + error.getMessage());
}
// Extract the Cloud Audit Logging entry from the data's protoPayload
JsonObject payload = eventData.getAsJsonObject("protoPayload");
JsonObject auth = payload.getAsJsonObject("authenticationInfo");
// Extract the email address of the authenticated user
// (or service account on behalf of third party principal) making the request
String creator = auth.get("principalEmail").getAsString();
if (creator == null) {
throw new RuntimeException("`principalEmail` not found in protoPayload.");
}
// Format the 'creator' parameter to match GCE label validation requirements
creator = creator.toLowerCase().replaceAll("\\W", "-");
// Get relevant VM instance details from the CloudEvent `subject` property
// Example: compute.googleapis.com/projects/<PROJECT>/zones/<ZONE>/instances/<INSTANCE>
String subject = event.getSubject();
if (subject == null || subject == "") {
throw new RuntimeException("Missing CloudEvent `subject`.");
}
String[] params = subject.split("/");
// Validate data
if (params.length < 7) {
throw new RuntimeException("Can not parse resource from CloudEvent `subject`: " + subject);
}
String project = params[2];
String zone = params[4];
String instanceName = params[6];
// Instantiate the Compute Instances client
try (InstancesClient instancesClient = InstancesClient.create()) {
// Get the newly-created VM instance's label fingerprint
// This is required by the Compute Engine API to prevent duplicate labels
GetInstanceRequest getInstanceRequest = GetInstanceRequest.newBuilder().setInstance(instanceName).setProject(project).setZone(zone).build();
Instance instance = instancesClient.get(getInstanceRequest);
String fingerPrint = instance.getLabelFingerprint();
// Label the instance with its creator
SetLabelsInstanceRequest setLabelRequest = SetLabelsInstanceRequest.newBuilder().setInstance(instanceName).setProject(project).setZone(zone).setInstancesSetLabelsRequestResource(InstancesSetLabelsRequest.newBuilder().putLabels("creator", creator).setLabelFingerprint(fingerPrint).build()).build();
instancesClient.setLabels(setLabelRequest);
logger.info(String.format("Adding label, \"{'creator': '%s'}\", to instance, \"%s\".", creator, instanceName));
} catch (Exception error) {
throw new RuntimeException(String.format("Error trying to label VM instance, %s: %s", instanceName, error.toString()));
}
}
}
use of com.google.spanner.admin.instance.v1.Instance in project java-redis by googleapis.
the class ITSystemTest method testGetInstance.
@Test
public void testGetInstance() {
Instance response = client.getInstance(INSTANCE_NAME);
assertEquals(TIER, response.getTier());
assertEquals(INSTANCE_NAME.toString(), response.getName());
}
use of com.google.spanner.admin.instance.v1.Instance in project java-redis by googleapis.
the class ITSystemTest method testUpdateInstance.
@Test
public void testUpdateInstance() throws ExecutionException, InterruptedException {
int memorySizeGb = 4;
FieldMask updateMask = FieldMask.newBuilder().addAllPaths(Arrays.asList("memory_size_gb")).build();
Instance instance = Instance.newBuilder().setName(INSTANCE_NAME.toString()).setMemorySizeGb(memorySizeGb).build();
UpdateInstanceRequest updateInstanceRequest = UpdateInstanceRequest.newBuilder().setInstance(instance).setUpdateMask(updateMask).build();
Instance actualInstance = client.updateInstanceAsync(updateInstanceRequest).get();
assertEquals(memorySizeGb, actualInstance.getMemorySizeGb());
}
use of com.google.spanner.admin.instance.v1.Instance in project java-redis by googleapis.
the class ITSystemTest method testListInstances.
@Test
public void testListInstances() {
List<Instance> instances = Lists.newArrayList(client.listInstances(PARENT).iterateAll());
for (Instance instance : instances) {
if (INSTANCE_NAME.toString().equals(instance.getName())) {
assertEquals(TIER, instance.getTier());
assertEquals(INSTANCE_NAME.toString(), instance.getName());
}
}
}
Aggregations