class Google::Cloud::Storage::Policy::Condition

# Condition

Value object accepting an attribute-based logic expression based on a subset of the Common Expression Language (CEL).

@see cloud.google.com/iam/docs/conditions-overview Cloud IAM

policies with conditions

@attr [String] title Used to identify the condition. Required. @attr [String] description Used to document the condition. Optional. @attr [String] expression Defines an attribute-based logic

expression using a subset of the Common Expression Language (CEL).
The condition expression can contain multiple statements, each uses
one attributes, and statements are combined using logic operators,
following CEL language specification. Required.

@example

require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket = storage.bucket "my-bucket"

policy = bucket.policy requested_policy_version: 3
policy.bindings.each do |binding|
  puts binding.condition.title if binding.condition
end

@example Updating a Policy from version 1 to version 3 by adding a condition:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket = storage.bucket "my-bucket"

bucket.uniform_bucket_level_access = true

bucket.policy requested_policy_version: 3 do |p|
  p.version # the value is 1
  p.version = 3 # Must be explicitly set to opt-in to support for conditions.

  expr = "resource.name.startsWith(\"projects/_/buckets/bucket-name/objects/prefix-a-\")"
  p.bindings.insert({
                      role: "roles/storage.admin",
                      members: ["user:owner@example.com"],
                      condition: {
                        title: "my-condition",
                        description: "description of condition",
                        expression: expr
                      }
                    })
end

Attributes

description[R]
expression[R]
title[R]

Public Class Methods

new(title:, expression:, description: nil) click to toggle source

Creates a Condition object.

@param [String] title Used to identify the condition. Required. @param [String] description Used to document the condition. Optional. @param [String] expression Defines an attribute-based logic

expression using a subset of the Common Expression Language (CEL).
The condition expression can contain multiple statements, each uses
one attributes, and statements are combined using logic operators,
following CEL language specification. Required.
# File lib/google/cloud/storage/policy/condition.rb, line 88
def initialize title:, expression:, description: nil
  @title = String title
  @description = String description
  @expression = String expression
end

Public Instance Methods

description=(new_description) click to toggle source

The description to document the condition. Optional.

@param [String] new_description The new description.

# File lib/google/cloud/storage/policy/condition.rb, line 108
def description= new_description
  @description = String new_description
end
expression=(new_expression) click to toggle source

An attribute-based logic expression using a subset of the Common Expression Language (CEL). The condition expression can contain multiple statements, each uses one attributes, and statements are combined using logic operators, following CEL language specification. Required.

@see cloud.google.com/iam/docs/conditions-overview CEL for conditions

@param [String] new_expression The new expression.

# File lib/google/cloud/storage/policy/condition.rb, line 123
def expression= new_expression
  @expression = String new_expression
end
title=(new_title) click to toggle source

The title used to identify the condition. Required.

@param [String] new_title The new title.

# File lib/google/cloud/storage/policy/condition.rb, line 99
def title= new_title
  @title = String new_title
end
to_gapi() click to toggle source
# File lib/google/cloud/storage/policy/condition.rb, line 127
def to_gapi
  {
    title: @title,
    description: @description,
    expression: @expression
  }.delete_if { |_, v| v.nil? }
end