Containers

Show details for a container

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
$container = $openstack->objectStoreV1()
                       ->getContainer('{containerName}');

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

At this point, the object returned is empty because we did not execute a HTTP request to receive the state of the container from the API. This is in accordance with one of the SDK’s general policies of not assuming too much at the expense of performance.

To synchronize the local object’s state with the remote API, you can run:

$container->retrieve();

printf("%s container has %d objects and %d bytes",
    $container->name, $container->objectCount, $container->bytesUsed);

and all of the local properties will match those of the remote resource.

List containers

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
$service = $openstack->objectStoreV1();

foreach ($service->listContainers() as $container) {
    /** @var $container \OpenStack\ObjectStore\v1\Models\Container */
}

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

When listing containers, you must be aware that not all information about a container is returned in a collection. Very often only the object count, bytes used and container name will be exposed. If you would like to access all of the remote state of a collection item, you can call retrieve like so:

foreach ($containers as $container) {
    $container->retrieve();
}

If you have a large collection of containers, this will slow things down because you’re issuing a HEAD request per container.

By default, PHP generators are used to represent collections of resources in the SDK. The benefit of using generators is that it generally improves performance, since objects are not saved in memory as the iteration cycle goes on; instead, each resource is directly output to the user-defined foreach loop. For all intents and purposes, you interact with generators like any other Traversable object, but to retain collections in memory, you will need to implement your own logic.

Delete container

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
$openstack->objectStoreV1()
          ->getContainer('{containerName}')
          ->delete();

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

The API will only accept DELETE requests on containers when they are empty. If you have a container with any objects inside, the operation will fail.

Get metadata

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
/** @var array $metadata */
$metadata = $openstack->objectStoreV1()
                      ->getContainer('{containerName}')
                      ->getMetadata();

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

The returned value will be a standard associative array, or hash, containing arbitrary key/value pairs. These will correspond to the values set either when the container was created, or when a previous mergeMetadata or resetMetadata operation was called.

Replace all metadata with new values

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
$service = $openstack->objectStoreV1();

$container = $service->getContainer('{containerName}');

$container->resetMetadata([
    '{key_1}' => '{val_1}',
    '{key_2}' => '{val_2}',
]);

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

In order to replace all existing metadata with a set of new values, you can use this operation. Any existing metadata items which not specified in the new set will be removed. For example, say an account has the following metadata already set:

Foo: value1
Bar: value2

and you reset the metadata with these values:

Foo: value4
Baz: value3

the metadata of the account will now be:

Foo: value4
Baz: value3

Merge new metadata values with existing

Show auth code
<?php

require 'vendor/autoload.php';

$openstack = new OpenStack\OpenStack([
    'authUrl' => '{authUrl}',
    'region'  => '{region}',
    'user'    => [
        'id'       => '{userId}',
        'password' => '{password}'
    ],
    'scope'   => ['project' => ['id' => '{projectId}']]
]);
$service = $openstack->objectStoreV1();

$container = $service->getContainer('{containerName}');

$container->mergeMetadata([
    '{key_1}' => '{val_1}',
    '{key_2}' => '{val_2}',
]);

To see all the required and optional parameters for this operation, along with their types and descriptions, view the reference documentation.

In order to merge a set of new metadata values with the existing metadata set, you can use this operation. Any existing metadata items which are not specified in the new set will be preserved. For example, say an account has the following metadata already set:

Foo: value1
Bar: value2

and you merge them with these values:

Foo: value4
Baz: value3

the metadata of the account will now be:

Foo: value4
Bar: value2
Baz: value3