<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/gkehub/v1/fleet.proto

namespace Google\Cloud\GkeHub\V1;

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

/**
 * DefaultClusterConfig describes the default cluster configurations to be
 * applied to all clusters born-in-fleet.
 *
 * Generated from protobuf message <code>google.cloud.gkehub.v1.DefaultClusterConfig</code>
 */
class DefaultClusterConfig extends \Google\Protobuf\Internal\Message
{
    /**
     * Enable/Disable Security Posture features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.SecurityPostureConfig security_posture_config = 1;</code>
     */
    protected $security_posture_config = null;
    /**
     * Optional. Enable/Disable binary authorization features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.BinaryAuthorizationConfig binary_authorization_config = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $binary_authorization_config = null;
    /**
     * Optional. Enable/Disable Compliance Posture features for the cluster.
     * Note that on UpdateFleet, only full replacement of this field is allowed.
     * Users are not allowed for partial updates through field mask.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.CompliancePostureConfig compliance_posture_config = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $compliance_posture_config = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type \Google\Cloud\GkeHub\V1\SecurityPostureConfig $security_posture_config
     *           Enable/Disable Security Posture features for the cluster.
     *     @type \Google\Cloud\GkeHub\V1\BinaryAuthorizationConfig $binary_authorization_config
     *           Optional. Enable/Disable binary authorization features for the cluster.
     *     @type \Google\Cloud\GkeHub\V1\CompliancePostureConfig $compliance_posture_config
     *           Optional. Enable/Disable Compliance Posture features for the cluster.
     *           Note that on UpdateFleet, only full replacement of this field is allowed.
     *           Users are not allowed for partial updates through field mask.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Gkehub\V1\Fleet::initOnce();
        parent::__construct($data);
    }

    /**
     * Enable/Disable Security Posture features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.SecurityPostureConfig security_posture_config = 1;</code>
     * @return \Google\Cloud\GkeHub\V1\SecurityPostureConfig|null
     */
    public function getSecurityPostureConfig()
    {
        return $this->security_posture_config;
    }

    public function hasSecurityPostureConfig()
    {
        return isset($this->security_posture_config);
    }

    public function clearSecurityPostureConfig()
    {
        unset($this->security_posture_config);
    }

    /**
     * Enable/Disable Security Posture features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.SecurityPostureConfig security_posture_config = 1;</code>
     * @param \Google\Cloud\GkeHub\V1\SecurityPostureConfig $var
     * @return $this
     */
    public function setSecurityPostureConfig($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\GkeHub\V1\SecurityPostureConfig::class);
        $this->security_posture_config = $var;

        return $this;
    }

    /**
     * Optional. Enable/Disable binary authorization features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.BinaryAuthorizationConfig binary_authorization_config = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\GkeHub\V1\BinaryAuthorizationConfig|null
     */
    public function getBinaryAuthorizationConfig()
    {
        return $this->binary_authorization_config;
    }

    public function hasBinaryAuthorizationConfig()
    {
        return isset($this->binary_authorization_config);
    }

    public function clearBinaryAuthorizationConfig()
    {
        unset($this->binary_authorization_config);
    }

    /**
     * Optional. Enable/Disable binary authorization features for the cluster.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.BinaryAuthorizationConfig binary_authorization_config = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\GkeHub\V1\BinaryAuthorizationConfig $var
     * @return $this
     */
    public function setBinaryAuthorizationConfig($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\GkeHub\V1\BinaryAuthorizationConfig::class);
        $this->binary_authorization_config = $var;

        return $this;
    }

    /**
     * Optional. Enable/Disable Compliance Posture features for the cluster.
     * Note that on UpdateFleet, only full replacement of this field is allowed.
     * Users are not allowed for partial updates through field mask.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.CompliancePostureConfig compliance_posture_config = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Cloud\GkeHub\V1\CompliancePostureConfig|null
     */
    public function getCompliancePostureConfig()
    {
        return $this->compliance_posture_config;
    }

    public function hasCompliancePostureConfig()
    {
        return isset($this->compliance_posture_config);
    }

    public function clearCompliancePostureConfig()
    {
        unset($this->compliance_posture_config);
    }

    /**
     * Optional. Enable/Disable Compliance Posture features for the cluster.
     * Note that on UpdateFleet, only full replacement of this field is allowed.
     * Users are not allowed for partial updates through field mask.
     *
     * Generated from protobuf field <code>.google.cloud.gkehub.v1.CompliancePostureConfig compliance_posture_config = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Cloud\GkeHub\V1\CompliancePostureConfig $var
     * @return $this
     */
    public function setCompliancePostureConfig($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\GkeHub\V1\CompliancePostureConfig::class);
        $this->compliance_posture_config = $var;

        return $this;
    }

}

