setMetadata?

65 views
Skip to first unread message

pitbred 2

unread,
Nov 10, 2015, 5:41:52 AM11/10/15
to gce-discussion
Hello!

Can not set Metadata through API.
Code:

        $computeService = new Google_Service_Compute($client);
        $postBody = new Google_Service_Compute_Metadata();
        $key_arr = array('sshKeys' => $ssh_key);
        $postBody->setFingerprint($fingerprint);
        $postBody->setItems($key_arr);
        $instances = $computeService->instances->setMetadata($project_name, $zone, $name, $postBody);

No errors in "Compute Engine" => "Operations"
Just: "This operation has finished." green label.
Status: "Done"

Works!!!
:(

pitbred 2

unread,
Nov 10, 2015, 8:58:24 AM11/10/15
to gce-discussion
Resolved.
working code:

        $computeService = new Google_Service_Compute($client);
        $postBody = new Google_Service_Compute_Metadata();
        $items = new Google_Service_Compute_MetadataItems();
         
        $items->setKey('sshKeys');
        $items->setValue($ssh_key);
        $items_arr = array($items);
        $postBody->setFingerprint($fingerprint);
        $postBody->setItems($items_arr);
        $instances = $computeService->instances->setMetadata($project_name, $zone, $name, $postBody);





вторник, 10 ноября 2015 г., 13:41:52 UTC+3 пользователь pitbred 2 написал:

Vikram Saggu

unread,
Jun 16, 2016, 1:39:57 AM6/16/16
to gce-discussion
Hello,

For single key/value it is working fine, but when i try to do with multiple metadata key/values it is just taking the single value. Here below is my code.

/// META-DATA
    $googleMetadataItemsObj = new Google_Service_Compute_MetadataItems();
    $googleMetadataItemsObj->setKey('dirname','gslocation');
    $googleMetadataItemsObj->setValue($dirlocation,$zone);
    $items_arr = array($googleMetadataItemsObj);

    $googleMetadataObj = new Google_Service_Compute_Metadata();
    $googleMetadataObj->setKind('compute#metadata');
    $googleMetadataObj->setItems($items_arr);
/// META-DATA

    $new_instance = new Google_Service_Compute_Instance();
    $new_instance->setName($instance_name);
    $new_instance->setKind('compute#operation');
    $new_instance->setMachineType($machineType);
    $new_instance->setDisks(array($googleAttachDiskObj));
    $new_instance->setNetworkInterfaces(array($googleNetworkInterfaceObj));
    $new_instance->setMetadata($googleMetadataObj);
    $new_instance->setServiceAccounts($googleServiceAccountObj);
    $insertInstance = $computeService->instances->insert(DEFAULT_PROJECT,$zone, $new_instance);


AND HERE IS THE REST OUTPUT AFTER CREATING INSTANCE

[metadata] => Array
                (
                    [kind] => compute#metadata
                    [fingerprint] => DMtjUVHiops=
                    [items] => Array
                        (
                            [0] => Array
                                (
                                    [key] => dirname
                                    [value] => GS://tempfiles
                                )

                        )

                )

I have created it as array and even then it is just taking single key/value while setting up metadata.
Reply all
Reply to author
Forward
0 new messages