<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/run/v2/k8s.min.proto

namespace Google\Cloud\Run\V2;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * The secret's value will be presented as the content of a file whose
 * name is defined in the item path. If no items are defined, the name of
 * the file is the secret.
 *
 * Generated from protobuf message <code>google.cloud.run.v2.SecretVolumeSource</code>
 */
class SecretVolumeSource extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. The name of the secret in Cloud Secret Manager.
     * Format: {secret} if the secret is in the same project.
     * projects/{project}/secrets/{secret} if the secret is
     * in a different project.
     *
     * Generated from protobuf field <code>string secret = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private $secret = '';
    /**
     * If unspecified, the volume will expose a file whose name is the
     * secret, relative to VolumeMount.mount_path.
     * If specified, the key will be used as the version to fetch from Cloud
     * Secret Manager and the path will be the name of the file exposed in the
     * volume. When items are defined, they must specify a path and a version.
     *
     * Generated from protobuf field <code>repeated .google.cloud.run.v2.VersionToPath items = 2;</code>
     */
    private $items;
    /**
     * Integer representation of mode bits to use on created files by default.
     * Must be a value between 0000 and 0777 (octal), defaulting to 0444.
     * Directories within the path are not affected by  this setting.
     * Notes
     * * Internally, a umask of 0222 will be applied to any non-zero value.
     * * This is an integer representation of the mode bits. So, the octal
     * integer value should look exactly as the chmod numeric notation with a
     * leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or
     * 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or
     * 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493
     * (base-10).
     * * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and the result can be other mode bits set.
     * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and as a result, other mode bits could be set.
     *
     * Generated from protobuf field <code>int32 default_mode = 3;</code>
     */
    private $default_mode = 0;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $secret
     *           Required. The name of the secret in Cloud Secret Manager.
     *           Format: {secret} if the secret is in the same project.
     *           projects/{project}/secrets/{secret} if the secret is
     *           in a different project.
     *     @type array<\Google\Cloud\Run\V2\VersionToPath>|\Google\Protobuf\Internal\RepeatedField $items
     *           If unspecified, the volume will expose a file whose name is the
     *           secret, relative to VolumeMount.mount_path.
     *           If specified, the key will be used as the version to fetch from Cloud
     *           Secret Manager and the path will be the name of the file exposed in the
     *           volume. When items are defined, they must specify a path and a version.
     *     @type int $default_mode
     *           Integer representation of mode bits to use on created files by default.
     *           Must be a value between 0000 and 0777 (octal), defaulting to 0444.
     *           Directories within the path are not affected by  this setting.
     *           Notes
     *           * Internally, a umask of 0222 will be applied to any non-zero value.
     *           * This is an integer representation of the mode bits. So, the octal
     *           integer value should look exactly as the chmod numeric notation with a
     *           leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or
     *           511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or
     *           416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493
     *           (base-10).
     *           * This might be in conflict with other options that affect the
     *           file mode, like fsGroup, and the result can be other mode bits set.
     *           This might be in conflict with other options that affect the
     *           file mode, like fsGroup, and as a result, other mode bits could be set.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Run\V2\K8SMin::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. The name of the secret in Cloud Secret Manager.
     * Format: {secret} if the secret is in the same project.
     * projects/{project}/secrets/{secret} if the secret is
     * in a different project.
     *
     * Generated from protobuf field <code>string secret = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return string
     */
    public function getSecret()
    {
        return $this->secret;
    }

    /**
     * Required. The name of the secret in Cloud Secret Manager.
     * Format: {secret} if the secret is in the same project.
     * projects/{project}/secrets/{secret} if the secret is
     * in a different project.
     *
     * Generated from protobuf field <code>string secret = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param string $var
     * @return $this
     */
    public function setSecret($var)
    {
        GPBUtil::checkString($var, True);
        $this->secret = $var;

        return $this;
    }

    /**
     * If unspecified, the volume will expose a file whose name is the
     * secret, relative to VolumeMount.mount_path.
     * If specified, the key will be used as the version to fetch from Cloud
     * Secret Manager and the path will be the name of the file exposed in the
     * volume. When items are defined, they must specify a path and a version.
     *
     * Generated from protobuf field <code>repeated .google.cloud.run.v2.VersionToPath items = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getItems()
    {
        return $this->items;
    }

    /**
     * If unspecified, the volume will expose a file whose name is the
     * secret, relative to VolumeMount.mount_path.
     * If specified, the key will be used as the version to fetch from Cloud
     * Secret Manager and the path will be the name of the file exposed in the
     * volume. When items are defined, they must specify a path and a version.
     *
     * Generated from protobuf field <code>repeated .google.cloud.run.v2.VersionToPath items = 2;</code>
     * @param array<\Google\Cloud\Run\V2\VersionToPath>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setItems($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Run\V2\VersionToPath::class);
        $this->items = $arr;

        return $this;
    }

    /**
     * Integer representation of mode bits to use on created files by default.
     * Must be a value between 0000 and 0777 (octal), defaulting to 0444.
     * Directories within the path are not affected by  this setting.
     * Notes
     * * Internally, a umask of 0222 will be applied to any non-zero value.
     * * This is an integer representation of the mode bits. So, the octal
     * integer value should look exactly as the chmod numeric notation with a
     * leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or
     * 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or
     * 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493
     * (base-10).
     * * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and the result can be other mode bits set.
     * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and as a result, other mode bits could be set.
     *
     * Generated from protobuf field <code>int32 default_mode = 3;</code>
     * @return int
     */
    public function getDefaultMode()
    {
        return $this->default_mode;
    }

    /**
     * Integer representation of mode bits to use on created files by default.
     * Must be a value between 0000 and 0777 (octal), defaulting to 0444.
     * Directories within the path are not affected by  this setting.
     * Notes
     * * Internally, a umask of 0222 will be applied to any non-zero value.
     * * This is an integer representation of the mode bits. So, the octal
     * integer value should look exactly as the chmod numeric notation with a
     * leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or
     * 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or
     * 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493
     * (base-10).
     * * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and the result can be other mode bits set.
     * This might be in conflict with other options that affect the
     * file mode, like fsGroup, and as a result, other mode bits could be set.
     *
     * Generated from protobuf field <code>int32 default_mode = 3;</code>
     * @param int $var
     * @return $this
     */
    public function setDefaultMode($var)
    {
        GPBUtil::checkInt32($var);
        $this->default_mode = $var;

        return $this;
    }

}

