Skip to content
This repository has been archived by the owner on Sep 16, 2023. It is now read-only.

feat: Rotation for Secrets #425

Merged
merged 1 commit into from
Mar 30, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -189,6 +189,7 @@ public void createSecretTest() throws Exception {
.setCreateTime(Timestamp.newBuilder().build())
.putAllLabels(new HashMap<String, String>())
.addAllTopics(new ArrayList<Topic>())
.setRotation(Rotation.newBuilder().build())
.build();
mockSecretManagerService.addResponse(expectedResponse);

@@ -237,6 +238,7 @@ public void createSecretTest2() throws Exception {
.setCreateTime(Timestamp.newBuilder().build())
.putAllLabels(new HashMap<String, String>())
.addAllTopics(new ArrayList<Topic>())
.setRotation(Rotation.newBuilder().build())
.build();
mockSecretManagerService.addResponse(expectedResponse);

@@ -373,6 +375,7 @@ public void getSecretTest() throws Exception {
.setCreateTime(Timestamp.newBuilder().build())
.putAllLabels(new HashMap<String, String>())
.addAllTopics(new ArrayList<Topic>())
.setRotation(Rotation.newBuilder().build())
.build();
mockSecretManagerService.addResponse(expectedResponse);

@@ -415,6 +418,7 @@ public void getSecretTest2() throws Exception {
.setCreateTime(Timestamp.newBuilder().build())
.putAllLabels(new HashMap<String, String>())
.addAllTopics(new ArrayList<Topic>())
.setRotation(Rotation.newBuilder().build())
.build();
mockSecretManagerService.addResponse(expectedResponse);

@@ -457,6 +461,7 @@ public void updateSecretTest() throws Exception {
.setCreateTime(Timestamp.newBuilder().build())
.putAllLabels(new HashMap<String, String>())
.addAllTopics(new ArrayList<Topic>())
.setRotation(Rotation.newBuilder().build())
.build();
mockSecretManagerService.addResponse(expectedResponse);

Original file line number Diff line number Diff line change
@@ -83,6 +83,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r
internal_static_google_cloud_secretmanager_v1_Topic_descriptor;
static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_google_cloud_secretmanager_v1_Topic_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_google_cloud_secretmanager_v1_Rotation_descriptor;
static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_google_cloud_secretmanager_v1_Rotation_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_google_cloud_secretmanager_v1_SecretPayload_descriptor;
static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
@@ -101,7 +105,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "google/api/field_behavior.proto\032\031google/"
+ "api/resource.proto\032\036google/protobuf/dura"
+ "tion.proto\032\037google/protobuf/timestamp.pr"
+ "oto\032\034google/api/annotations.proto\"\213\004\n\006Se"
+ "oto\032\034google/api/annotations.proto\"\313\004\n\006Se"
+ "cret\022\021\n\004name\030\001 \001(\tB\003\340A\003\022G\n\013replication\030\002"
+ " \001(\0132*.google.cloud.secretmanager.v1.Rep"
+ "licationB\006\340A\005\340A\002\0224\n\013create_time\030\003 \001(\0132\032."
@@ -111,64 +115,69 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "le.cloud.secretmanager.v1.TopicB\003\340A\001\0226\n\013"
+ "expire_time\030\006 \001(\0132\032.google.protobuf.Time"
+ "stampB\003\340A\001H\000\022-\n\003ttl\030\007 \001(\0132\031.google.proto"
+ "buf.DurationB\003\340A\004H\000\032-\n\013LabelsEntry\022\013\n\003ke"
+ "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:M\352AJ\n#secretm"
+ "anager.googleapis.com/Secret\022#projects/{"
+ "project}/secrets/{secret}B\014\n\nexpiration\""
+ "\337\003\n\rSecretVersion\022\021\n\004name\030\001 \001(\tB\003\340A\003\0224\n\013"
+ "create_time\030\002 \001(\0132\032.google.protobuf.Time"
+ "stampB\003\340A\003\0225\n\014destroy_time\030\003 \001(\0132\032.googl"
+ "e.protobuf.TimestampB\003\340A\003\022F\n\005state\030\004 \001(\016"
+ "22.google.cloud.secretmanager.v1.SecretV"
+ "ersion.StateB\003\340A\003\022L\n\022replication_status\030"
+ "\005 \001(\01320.google.cloud.secretmanager.v1.Re"
+ "plicationStatus\"H\n\005State\022\025\n\021STATE_UNSPEC"
+ "IFIED\020\000\022\013\n\007ENABLED\020\001\022\014\n\010DISABLED\020\002\022\r\n\tDE"
+ "STROYED\020\003:n\352Ak\n*secretmanager.googleapis"
+ ".com/SecretVersion\022=projects/{project}/s"
+ "ecrets/{secret}/versions/{secret_version"
+ "}\"\220\004\n\013Replication\022I\n\tautomatic\030\001 \001(\01324.g"
+ "oogle.cloud.secretmanager.v1.Replication"
+ ".AutomaticH\000\022N\n\014user_managed\030\002 \001(\01326.goo"
+ "gle.cloud.secretmanager.v1.Replication.U"
+ "serManagedH\000\032o\n\tAutomatic\022b\n\033customer_ma"
+ "naged_encryption\030\001 \001(\01328.google.cloud.se"
+ "cretmanager.v1.CustomerManagedEncryption"
+ "B\003\340A\001\032\345\001\n\013UserManaged\022U\n\010replicas\030\001 \003(\0132"
+ ">.google.cloud.secretmanager.v1.Replicat"
+ "ion.UserManaged.ReplicaB\003\340A\002\032\177\n\007Replica\022"
+ "\020\n\010location\030\001 \001(\t\022b\n\033customer_managed_en"
+ "cryption\030\002 \001(\01328.google.cloud.secretmana"
+ "ger.v1.CustomerManagedEncryptionB\003\340A\001B\r\n"
+ "\013replication\"6\n\031CustomerManagedEncryptio"
+ "n\022\031\n\014kms_key_name\030\001 \001(\tB\003\340A\002\"\353\004\n\021Replica"
+ "tionStatus\022U\n\tautomatic\030\001 \001(\0132@.google.c"
+ "loud.secretmanager.v1.ReplicationStatus."
+ "AutomaticStatusH\000\022Z\n\014user_managed\030\002 \001(\0132"
+ "B.google.cloud.secretmanager.v1.Replicat"
+ "ionStatus.UserManagedStatusH\000\032{\n\017Automat"
+ "icStatus\022h\n\033customer_managed_encryption\030"
+ "\001 \001(\0132>.google.cloud.secretmanager.v1.Cu"
+ "stomerManagedEncryptionStatusB\003\340A\003\032\217\002\n\021U"
+ "serManagedStatus\022g\n\010replicas\030\001 \003(\0132P.goo"
+ "gle.cloud.secretmanager.v1.ReplicationSt"
+ "atus.UserManagedStatus.ReplicaStatusB\003\340A"
+ "\003\032\220\001\n\rReplicaStatus\022\025\n\010location\030\001 \001(\tB\003\340"
+ "A\003\022h\n\033customer_managed_encryption\030\002 \001(\0132"
+ ">.google.cloud.secretmanager.v1.Customer"
+ "ManagedEncryptionStatusB\003\340A\003B\024\n\022replicat"
+ "ion_status\"D\n\037CustomerManagedEncryptionS"
+ "tatus\022!\n\024kms_key_version_name\030\001 \001(\tB\003\340A\002"
+ "\"_\n\005Topic\022\021\n\004name\030\001 \001(\tB\003\340A\002:C\352A@\n\033pubsu"
+ "b.googleapis.com/Topic\022!projects/{projec"
+ "t}/topics/{topic}\"\035\n\rSecretPayload\022\014\n\004da"
+ "ta\030\001 \001(\014B\355\001\n!com.google.cloud.secretmana"
+ "ger.v1B\016ResourcesProtoP\001ZJgoogle.golang."
+ "org/genproto/googleapis/cloud/secretmana"
+ "ger/v1;secretmanager\370\001\001\242\002\003GSM\252\002\035Google.C"
+ "loud.SecretManager.V1\312\002\035Google\\Cloud\\Sec"
+ "retManager\\V1\352\002 Google::Cloud::SecretMan"
+ "ager::V1b\006proto3"
+ "buf.DurationB\003\340A\004H\000\022>\n\010rotation\030\t \001(\0132\'."
+ "google.cloud.secretmanager.v1.RotationB\003"
+ "\340A\001\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value"
+ "\030\002 \001(\t:\0028\001:M\352AJ\n#secretmanager.googleapi"
+ "s.com/Secret\022#projects/{project}/secrets"
+ "/{secret}B\014\n\nexpiration\"\337\003\n\rSecretVersio"
+ "n\022\021\n\004name\030\001 \001(\tB\003\340A\003\0224\n\013create_time\030\002 \001("
+ "\0132\032.google.protobuf.TimestampB\003\340A\003\0225\n\014de"
+ "stroy_time\030\003 \001(\0132\032.google.protobuf.Times"
+ "tampB\003\340A\003\022F\n\005state\030\004 \001(\01622.google.cloud."
+ "secretmanager.v1.SecretVersion.StateB\003\340A"
+ "\003\022L\n\022replication_status\030\005 \001(\01320.google.c"
+ "loud.secretmanager.v1.ReplicationStatus\""
+ "H\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\013\n\007ENABL"
+ "ED\020\001\022\014\n\010DISABLED\020\002\022\r\n\tDESTROYED\020\003:n\352Ak\n*"
+ "secretmanager.googleapis.com/SecretVersi"
+ "on\022=projects/{project}/secrets/{secret}/"
+ "versions/{secret_version}\"\220\004\n\013Replicatio"
+ "n\022I\n\tautomatic\030\001 \001(\01324.google.cloud.secr"
+ "etmanager.v1.Replication.AutomaticH\000\022N\n\014"
+ "user_managed\030\002 \001(\01326.google.cloud.secret"
+ "manager.v1.Replication.UserManagedH\000\032o\n\t"
+ "Automatic\022b\n\033customer_managed_encryption"
+ "\030\001 \001(\01328.google.cloud.secretmanager.v1.C"
+ "ustomerManagedEncryptionB\003\340A\001\032\345\001\n\013UserMa"
+ "naged\022U\n\010replicas\030\001 \003(\0132>.google.cloud.s"
+ "ecretmanager.v1.Replication.UserManaged."
+ "ReplicaB\003\340A\002\032\177\n\007Replica\022\020\n\010location\030\001 \001("
+ "\t\022b\n\033customer_managed_encryption\030\002 \001(\01328"
+ ".google.cloud.secretmanager.v1.CustomerM"
+ "anagedEncryptionB\003\340A\001B\r\n\013replication\"6\n\031"
+ "CustomerManagedEncryption\022\031\n\014kms_key_nam"
+ "e\030\001 \001(\tB\003\340A\002\"\353\004\n\021ReplicationStatus\022U\n\tau"
+ "tomatic\030\001 \001(\0132@.google.cloud.secretmanag"
+ "er.v1.ReplicationStatus.AutomaticStatusH"
+ "\000\022Z\n\014user_managed\030\002 \001(\0132B.google.cloud.s"
+ "ecretmanager.v1.ReplicationStatus.UserMa"
+ "nagedStatusH\000\032{\n\017AutomaticStatus\022h\n\033cust"
+ "omer_managed_encryption\030\001 \001(\0132>.google.c"
+ "loud.secretmanager.v1.CustomerManagedEnc"
+ "ryptionStatusB\003\340A\003\032\217\002\n\021UserManagedStatus"
+ "\022g\n\010replicas\030\001 \003(\0132P.google.cloud.secret"
+ "manager.v1.ReplicationStatus.UserManaged"
+ "Status.ReplicaStatusB\003\340A\003\032\220\001\n\rReplicaSta"
+ "tus\022\025\n\010location\030\001 \001(\tB\003\340A\003\022h\n\033customer_m"
+ "anaged_encryption\030\002 \001(\0132>.google.cloud.s"
+ "ecretmanager.v1.CustomerManagedEncryptio"
+ "nStatusB\003\340A\003B\024\n\022replication_status\"D\n\037Cu"
+ "stomerManagedEncryptionStatus\022!\n\024kms_key"
+ "_version_name\030\001 \001(\tB\003\340A\002\"_\n\005Topic\022\021\n\004nam"
+ "e\030\001 \001(\tB\003\340A\002:C\352A@\n\033pubsub.googleapis.com"
+ "/Topic\022!projects/{project}/topics/{topic"
+ "}\"\200\001\n\010Rotation\022;\n\022next_rotation_time\030\001 \001"
+ "(\0132\032.google.protobuf.TimestampB\003\340A\001\0227\n\017r"
+ "otation_period\030\002 \001(\0132\031.google.protobuf.D"
+ "urationB\003\340A\004\"\035\n\rSecretPayload\022\014\n\004data\030\001 "
+ "\001(\014B\355\001\n!com.google.cloud.secretmanager.v"
+ "1B\016ResourcesProtoP\001ZJgoogle.golang.org/g"
+ "enproto/googleapis/cloud/secretmanager/v"
+ "1;secretmanager\370\001\001\242\002\003GSM\252\002\035Google.Cloud."
+ "SecretManager.V1\312\002\035Google\\Cloud\\SecretMa"
+ "nager\\V1\352\002 Google::Cloud::SecretManager:"
+ ":V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -193,6 +202,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
"Topics",
"ExpireTime",
"Ttl",
"Rotation",
"Expiration",
});
internal_static_google_cloud_secretmanager_v1_Secret_LabelsEntry_descriptor =
@@ -311,8 +321,16 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
new java.lang.String[] {
"Name",
});
internal_static_google_cloud_secretmanager_v1_SecretPayload_descriptor =
internal_static_google_cloud_secretmanager_v1_Rotation_descriptor =
getDescriptor().getMessageTypes().get(7);
internal_static_google_cloud_secretmanager_v1_Rotation_fieldAccessorTable =
new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_google_cloud_secretmanager_v1_Rotation_descriptor,
new java.lang.String[] {
"NextRotationTime", "RotationPeriod",
});
internal_static_google_cloud_secretmanager_v1_SecretPayload_descriptor =
getDescriptor().getMessageTypes().get(8);
internal_static_google_cloud_secretmanager_v1_SecretPayload_fieldAccessorTable =
new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_google_cloud_secretmanager_v1_SecretPayload_descriptor,

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/*
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: google/cloud/secretmanager/v1/resources.proto

package com.google.cloud.secretmanager.v1;

public interface RotationOrBuilder
extends
// @@protoc_insertion_point(interface_extends:google.cloud.secretmanager.v1.Rotation)
com.google.protobuf.MessageOrBuilder {

/**
*
*
* <pre>
* Optional. Timestamp in UTC at which the [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to rotate.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] MUST be set if [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set.
* </pre>
*
* <code>
* .google.protobuf.Timestamp next_rotation_time = 1 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return Whether the nextRotationTime field is set.
*/
boolean hasNextRotationTime();
/**
*
*
* <pre>
* Optional. Timestamp in UTC at which the [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to rotate.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] MUST be set if [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set.
* </pre>
*
* <code>
* .google.protobuf.Timestamp next_rotation_time = 1 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return The nextRotationTime.
*/
com.google.protobuf.Timestamp getNextRotationTime();
/**
*
*
* <pre>
* Optional. Timestamp in UTC at which the [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to rotate.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] MUST be set if [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set.
* </pre>
*
* <code>
* .google.protobuf.Timestamp next_rotation_time = 1 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
com.google.protobuf.TimestampOrBuilder getNextRotationTimeOrBuilder();

/**
*
*
* <pre>
* Input only. The Duration between rotation notifications. Must be in seconds
* and at least 3600s (1h) and at most 3153600000s (100 years).
* If [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set, [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] must be set.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] will be advanced by this period when the service
* automatically sends rotation notifications.
* </pre>
*
* <code>
* .google.protobuf.Duration rotation_period = 2 [(.google.api.field_behavior) = INPUT_ONLY];
* </code>
*
* @return Whether the rotationPeriod field is set.
*/
boolean hasRotationPeriod();
/**
*
*
* <pre>
* Input only. The Duration between rotation notifications. Must be in seconds
* and at least 3600s (1h) and at most 3153600000s (100 years).
* If [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set, [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] must be set.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] will be advanced by this period when the service
* automatically sends rotation notifications.
* </pre>
*
* <code>
* .google.protobuf.Duration rotation_period = 2 [(.google.api.field_behavior) = INPUT_ONLY];
* </code>
*
* @return The rotationPeriod.
*/
com.google.protobuf.Duration getRotationPeriod();
/**
*
*
* <pre>
* Input only. The Duration between rotation notifications. Must be in seconds
* and at least 3600s (1h) and at most 3153600000s (100 years).
* If [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set, [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] must be set.
* [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] will be advanced by this period when the service
* automatically sends rotation notifications.
* </pre>
*
* <code>
* .google.protobuf.Duration rotation_period = 2 [(.google.api.field_behavior) = INPUT_ONLY];
* </code>
*/
com.google.protobuf.DurationOrBuilder getRotationPeriodOrBuilder();
}
Original file line number Diff line number Diff line change
@@ -165,6 +165,22 @@ private Secret(
expiration_ = subBuilder.buildPartial();
}
expirationCase_ = 7;
break;
}
case 74:
{
com.google.cloud.secretmanager.v1.Rotation.Builder subBuilder = null;
if (rotation_ != null) {
subBuilder = rotation_.toBuilder();
}
rotation_ =
input.readMessage(
com.google.cloud.secretmanager.v1.Rotation.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(rotation_);
rotation_ = subBuilder.buildPartial();
}

break;
}
default:
@@ -735,6 +751,63 @@ public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() {
return com.google.protobuf.Duration.getDefaultInstance();
}

public static final int ROTATION_FIELD_NUMBER = 9;
private com.google.cloud.secretmanager.v1.Rotation rotation_;
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return Whether the rotation field is set.
*/
@java.lang.Override
public boolean hasRotation() {
return rotation_ != null;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return The rotation.
*/
@java.lang.Override
public com.google.cloud.secretmanager.v1.Rotation getRotation() {
return rotation_ == null
? com.google.cloud.secretmanager.v1.Rotation.getDefaultInstance()
: rotation_;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
@java.lang.Override
public com.google.cloud.secretmanager.v1.RotationOrBuilder getRotationOrBuilder() {
return getRotation();
}

private byte memoizedIsInitialized = -1;

@java.lang.Override
@@ -769,6 +842,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (expirationCase_ == 7) {
output.writeMessage(7, (com.google.protobuf.Duration) expiration_);
}
if (rotation_ != null) {
output.writeMessage(9, getRotation());
}
unknownFields.writeTo(output);
}

@@ -810,6 +886,9 @@ public int getSerializedSize() {
com.google.protobuf.CodedOutputStream.computeMessageSize(
7, (com.google.protobuf.Duration) expiration_);
}
if (rotation_ != null) {
size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getRotation());
}
size += unknownFields.getSerializedSize();
memoizedSize = size;
return size;
@@ -836,6 +915,10 @@ public boolean equals(final java.lang.Object obj) {
}
if (!internalGetLabels().equals(other.internalGetLabels())) return false;
if (!getTopicsList().equals(other.getTopicsList())) return false;
if (hasRotation() != other.hasRotation()) return false;
if (hasRotation()) {
if (!getRotation().equals(other.getRotation())) return false;
}
if (!getExpirationCase().equals(other.getExpirationCase())) return false;
switch (expirationCase_) {
case 6:
@@ -876,6 +959,10 @@ public int hashCode() {
hash = (37 * hash) + TOPICS_FIELD_NUMBER;
hash = (53 * hash) + getTopicsList().hashCode();
}
if (hasRotation()) {
hash = (37 * hash) + ROTATION_FIELD_NUMBER;
hash = (53 * hash) + getRotation().hashCode();
}
switch (expirationCase_) {
case 6:
hash = (37 * hash) + EXPIRE_TIME_FIELD_NUMBER;
@@ -1079,6 +1166,12 @@ public Builder clear() {
} else {
topicsBuilder_.clear();
}
if (rotationBuilder_ == null) {
rotation_ = null;
} else {
rotation_ = null;
rotationBuilder_ = null;
}
expirationCase_ = 0;
expiration_ = null;
return this;
@@ -1145,6 +1238,11 @@ public com.google.cloud.secretmanager.v1.Secret buildPartial() {
result.expiration_ = ttlBuilder_.build();
}
}
if (rotationBuilder_ == null) {
result.rotation_ = rotation_;
} else {
result.rotation_ = rotationBuilder_.build();
}
result.expirationCase_ = expirationCase_;
onBuilt();
return result;
@@ -1233,6 +1331,9 @@ public Builder mergeFrom(com.google.cloud.secretmanager.v1.Secret other) {
}
}
}
if (other.hasRotation()) {
mergeRotation(other.getRotation());
}
switch (other.getExpirationCase()) {
case EXPIRE_TIME:
{
@@ -2850,6 +2951,218 @@ public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() {
return ttlBuilder_;
}

private com.google.cloud.secretmanager.v1.Rotation rotation_;
private com.google.protobuf.SingleFieldBuilderV3<
com.google.cloud.secretmanager.v1.Rotation,
com.google.cloud.secretmanager.v1.Rotation.Builder,
com.google.cloud.secretmanager.v1.RotationOrBuilder>
rotationBuilder_;
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return Whether the rotation field is set.
*/
public boolean hasRotation() {
return rotationBuilder_ != null || rotation_ != null;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return The rotation.
*/
public com.google.cloud.secretmanager.v1.Rotation getRotation() {
if (rotationBuilder_ == null) {
return rotation_ == null
? com.google.cloud.secretmanager.v1.Rotation.getDefaultInstance()
: rotation_;
} else {
return rotationBuilder_.getMessage();
}
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public Builder setRotation(com.google.cloud.secretmanager.v1.Rotation value) {
if (rotationBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
rotation_ = value;
onChanged();
} else {
rotationBuilder_.setMessage(value);
}

return this;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public Builder setRotation(com.google.cloud.secretmanager.v1.Rotation.Builder builderForValue) {
if (rotationBuilder_ == null) {
rotation_ = builderForValue.build();
onChanged();
} else {
rotationBuilder_.setMessage(builderForValue.build());
}

return this;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public Builder mergeRotation(com.google.cloud.secretmanager.v1.Rotation value) {
if (rotationBuilder_ == null) {
if (rotation_ != null) {
rotation_ =
com.google.cloud.secretmanager.v1.Rotation.newBuilder(rotation_)
.mergeFrom(value)
.buildPartial();
} else {
rotation_ = value;
}
onChanged();
} else {
rotationBuilder_.mergeFrom(value);
}

return this;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public Builder clearRotation() {
if (rotationBuilder_ == null) {
rotation_ = null;
onChanged();
} else {
rotation_ = null;
rotationBuilder_ = null;
}

return this;
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public com.google.cloud.secretmanager.v1.Rotation.Builder getRotationBuilder() {

onChanged();
return getRotationFieldBuilder().getBuilder();
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
public com.google.cloud.secretmanager.v1.RotationOrBuilder getRotationOrBuilder() {
if (rotationBuilder_ != null) {
return rotationBuilder_.getMessageOrBuilder();
} else {
return rotation_ == null
? com.google.cloud.secretmanager.v1.Rotation.getDefaultInstance()
: rotation_;
}
}
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
com.google.cloud.secretmanager.v1.Rotation,
com.google.cloud.secretmanager.v1.Rotation.Builder,
com.google.cloud.secretmanager.v1.RotationOrBuilder>
getRotationFieldBuilder() {
if (rotationBuilder_ == null) {
rotationBuilder_ =
new com.google.protobuf.SingleFieldBuilderV3<
com.google.cloud.secretmanager.v1.Rotation,
com.google.cloud.secretmanager.v1.Rotation.Builder,
com.google.cloud.secretmanager.v1.RotationOrBuilder>(
getRotation(), getParentForChildren(), isClean());
rotation_ = null;
}
return rotationBuilder_;
}

@java.lang.Override
public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
Original file line number Diff line number Diff line change
@@ -362,5 +362,49 @@ public interface SecretOrBuilder
*/
com.google.protobuf.DurationOrBuilder getTtlOrBuilder();

/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return Whether the rotation field is set.
*/
boolean hasRotation();
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*
* @return The rotation.
*/
com.google.cloud.secretmanager.v1.Rotation getRotation();
/**
*
*
* <pre>
* Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
* rotation policy.
* </pre>
*
* <code>
* .google.cloud.secretmanager.v1.Rotation rotation = 9 [(.google.api.field_behavior) = OPTIONAL];
* </code>
*/
com.google.cloud.secretmanager.v1.RotationOrBuilder getRotationOrBuilder();

public com.google.cloud.secretmanager.v1.Secret.ExpirationCase getExpirationCase();
}
Original file line number Diff line number Diff line change
@@ -90,6 +90,10 @@ message Secret {
// Input only. The TTL for the [Secret][google.cloud.secretmanager.v1.Secret].
google.protobuf.Duration ttl = 7 [(google.api.field_behavior) = INPUT_ONLY];
}

// Optional. Rotation policy attached to the [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is no
// rotation policy.
Rotation rotation = 9 [(google.api.field_behavior) = OPTIONAL];
}

// A secret version resource in the Secret Manager API.
@@ -278,6 +282,24 @@ message Topic {
string name = 1 [(google.api.field_behavior) = REQUIRED];
}

// The rotation time and period for a [Secret][google.cloud.secretmanager.v1.Secret]. At next_rotation_time, Secret
// Manager will send a Pub/Sub notification to the topics configured on the
// Secret. [Secret.topics][google.cloud.secretmanager.v1.Secret.topics] must be set to configure rotation.
message Rotation {
// Optional. Timestamp in UTC at which the [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to rotate.
//
// [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] MUST be set if [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set.
google.protobuf.Timestamp next_rotation_time = 1 [(google.api.field_behavior) = OPTIONAL];

// Input only. The Duration between rotation notifications. Must be in seconds
// and at least 3600s (1h) and at most 3153600000s (100 years).
//
// If [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period] is set, [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] must be set.
// [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time] will be advanced by this period when the service
// automatically sends rotation notifications.
google.protobuf.Duration rotation_period = 2 [(google.api.field_behavior) = INPUT_ONLY];
}

// A secret payload resource in the Secret Manager API. This contains the
// sensitive secret payload that is associated with a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
message SecretPayload {
8 changes: 5 additions & 3 deletions synth.metadata
Original file line number Diff line number Diff line change
@@ -4,15 +4,15 @@
"git": {
"name": ".",
"remote": "https://github.com/googleapis/java-secretmanager.git",
"sha": "b894a96af3bc29ab4cabaed66de1f7417b58bcf3"
"sha": "c352ecbd06f6258e5856dbf2223cf26e7982e843"
}
},
{
"git": {
"name": "googleapis",
"remote": "https://github.com/googleapis/googleapis.git",
"sha": "1305ca41d554eb0725237561e34129373bb8cbc1",
"internalRef": "362856902"
"sha": "6c7693680fe320b4705dd8500c255843749eb58a",
"internalRef": "365574085"
}
},
{
@@ -174,6 +174,8 @@
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/ReplicationStatus.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/ReplicationStatusOrBuilder.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/ResourcesProto.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/Rotation.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/RotationOrBuilder.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/Secret.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/SecretName.java",
"proto-google-cloud-secretmanager-v1/src/main/java/com/google/cloud/secretmanager/v1/SecretOrBuilder.java",