compute/helloworld/app.php (150 lines of code) (raw):

<?php /* * Copyright 2021 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ require_once 'vendor/autoload.php'; use Google\Cloud\Compute\V1\Client\DisksClient; use Google\Cloud\Compute\V1\Client\FirewallsClient; use Google\Cloud\Compute\V1\Client\GlobalOperationsClient; use Google\Cloud\Compute\V1\Client\ImagesClient; use Google\Cloud\Compute\V1\Client\InstancesClient; use Google\Cloud\Compute\V1\Client\MachineTypesClient; use Google\Cloud\Compute\V1\Client\NetworksClient; use Google\Cloud\Compute\V1\Client\ZonesClient; use Google\Cloud\Compute\V1\ListDisksRequest; use Google\Cloud\Compute\V1\ListFirewallsRequest; use Google\Cloud\Compute\V1\ListGlobalOperationsRequest; use Google\Cloud\Compute\V1\ListImagesRequest; use Google\Cloud\Compute\V1\ListInstancesRequest; use Google\Cloud\Compute\V1\ListMachineTypesRequest; use Google\Cloud\Compute\V1\ListNetworksRequest; use Google\Cloud\Compute\V1\ListZonesRequest; use Google\Protobuf\Internal\Message; /** * Set these variables to your project and zone. */ $projectId = 'php-docs-samples-kokoro'; $zoneName = 'us-central1-f'; // Instantiate clients for calling the Compute API. $instancesClient = new InstancesClient(); $zonesClient = new ZonesClient(); $disksClient = new DisksClient(); $machineTypesClient = new MachineTypesClient(); $imagesClient = new ImagesClient(); $firewallsClient = new FirewallsClient(); $networksClient = new NetworksClient(); $globalOperationsClient = new GlobalOperationsClient(); /** * Helper function to pretty-print a Protobuf message. */ function print_message(Message $message) { return json_encode( json_decode($message->serializeToJsonString(), true), JSON_PRETTY_PRINT ); } $request = (new ListInstancesRequest()) ->setProject($projectId) ->setZone($zoneName); $request2 = (new ListZonesRequest()) ->setProject($projectId); $request3 = (new ListDisksRequest()) ->setProject($projectId) ->setZone($zoneName); $request4 = (new ListMachineTypesRequest()) ->setProject($projectId) ->setZone($zoneName); $request5 = (new ListImagesRequest()) ->setProject($projectId); $request6 = (new ListFirewallsRequest()) ->setProject($projectId); $request7 = (new ListNetworksRequest()) ->setProject($projectId); $request8 = (new ListGlobalOperationsRequest()) ->setProject($projectId); ?> <!doctype html> <html> <head><meta charset="utf-8"></head> <body> <header><h1>Google Cloud Compute Sample App</h1></header> <div class="main-content"> <h2 class="collapsible">List Instances</h2> <div id="listInstances" class="collapsible-content"> <?php foreach ($instancesClient->list($request) as $instance): ?> <pre><?= print_message($instance) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Zones</h2> <div id="listZones" class="collapsible-content"> <?php foreach ($zonesClient->list($request2) as $zone): ?> <pre><?= print_message($zone) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Disks</h2> <div id="listDisks" class="collapsible-content"> <?php foreach ($disksClient->list($request3) as $disk): ?> <pre><?= print_message($disk) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Machine Types</h2> <div id="listMachineTypes" class="collapsible-content"> <?php foreach ($machineTypesClient->list($request4) as $machineType): ?> <pre><?= print_message($machineType) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Images</h2> <div id="listImages" class="collapsible-content"> <?php foreach ($imagesClient->list($request5) as $image): ?> <pre><?= print_message($image) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Firewalls</h2> <div id="listFirewalls" class="collapsible-content"> <?php foreach ($firewalls = $firewallsClient->list($request6) as $firewall): ?> <pre><?= print_message($firewall) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Networks</h2> <div id="listNetworks" class="collapsible-content"> <?php foreach ($networksClient->list($request7) as $network): ?> <pre><?= print_message($network) ?></pre> <?php endforeach ?> </div> <h2 class="collapsible">List Operations</h2> <div id="listGlobalOperations" class="collapsible-content"> <?php foreach ($globalOperationsClient->list($request8) as $operation): ?> <pre><?= print_message($operation) ?></pre> <?php endforeach ?> </div> </div> </body> </html> <style> .collapsible { background-color: #eee; color: #444; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px; } .active, .collapsible:hover { background-color: #ccc; } .collapsible-content { padding: 0 18px; display: none; overflow: hidden; background-color: #f1f1f1; } </style> <script> var coll = document.getElementsByClassName("collapsible"); var i; for (i = 0; i < coll.length; i++) { coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block") { content.style.display = "none"; } else { content.style.display = "block"; } }); } </script>