diff --git a/packages/google-cloud-secretmanager/protos/google/cloud/secretmanager/v1/resources.proto b/packages/google-cloud-secretmanager/protos/google/cloud/secretmanager/v1/resources.proto index a47475b31d9..5e2322e859c 100644 --- a/packages/google-cloud-secretmanager/protos/google/cloud/secretmanager/v1/resources.proto +++ b/packages/google-cloud-secretmanager/protos/google/cloud/secretmanager/v1/resources.proto @@ -97,6 +97,19 @@ message Secret { // 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]; + + // Optional. Mapping from version alias to version name. + // + // A version alias is a string with a maximum length of 63 characters and can + // contain uppercase and lowercase letters, numerals, and the hyphen (`-`) + // and underscore ('_') characters. An alias string must start with a + // letter and cannot be the string 'latest' or 'NEW'. + // No more than 50 aliases can be assigned to a given secret. + // + // Version-Alias pairs will be viewable via GetSecret and modifiable via + // UpdateSecret. At launch access by alias will only be supported on + // GetSecretVersion and AccessSecretVersion. + map version_aliases = 11 [(google.api.field_behavior) = OPTIONAL]; } // A secret version resource in the Secret Manager API. diff --git a/packages/google-cloud-secretmanager/protos/protos.d.ts b/packages/google-cloud-secretmanager/protos/protos.d.ts index 66408bd6fe3..4d484a8261f 100644 --- a/packages/google-cloud-secretmanager/protos/protos.d.ts +++ b/packages/google-cloud-secretmanager/protos/protos.d.ts @@ -55,6 +55,9 @@ export namespace google { /** Secret rotation */ rotation?: (google.cloud.secretmanager.v1.IRotation|null); + + /** Secret versionAliases */ + versionAliases?: ({ [k: string]: (number|Long|string) }|null); } /** Represents a Secret. */ @@ -93,6 +96,9 @@ export namespace google { /** Secret rotation. */ public rotation?: (google.cloud.secretmanager.v1.IRotation|null); + /** Secret versionAliases. */ + public versionAliases: { [k: string]: (number|Long|string) }; + /** Secret expiration. */ public expiration?: ("expireTime"|"ttl"); diff --git a/packages/google-cloud-secretmanager/protos/protos.js b/packages/google-cloud-secretmanager/protos/protos.js index c3596ee7b67..d3eab8dcd15 100644 --- a/packages/google-cloud-secretmanager/protos/protos.js +++ b/packages/google-cloud-secretmanager/protos/protos.js @@ -81,6 +81,7 @@ * @property {google.protobuf.IDuration|null} [ttl] Secret ttl * @property {string|null} [etag] Secret etag * @property {google.cloud.secretmanager.v1.IRotation|null} [rotation] Secret rotation + * @property {Object.|null} [versionAliases] Secret versionAliases */ /** @@ -94,6 +95,7 @@ function Secret(properties) { this.labels = {}; this.topics = []; + this.versionAliases = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -172,6 +174,14 @@ */ Secret.prototype.rotation = null; + /** + * Secret versionAliases. + * @member {Object.} versionAliases + * @memberof google.cloud.secretmanager.v1.Secret + * @instance + */ + Secret.prototype.versionAliases = $util.emptyObject; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -230,6 +240,9 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.etag); if (message.rotation != null && Object.hasOwnProperty.call(message, "rotation")) $root.google.cloud.secretmanager.v1.Rotation.encode(message.rotation, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.versionAliases != null && Object.hasOwnProperty.call(message, "versionAliases")) + for (var keys = Object.keys(message.versionAliases), i = 0; i < keys.length; ++i) + writer.uint32(/* id 11, wireType 2 =*/90).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 0 =*/16).int64(message.versionAliases[keys[i]]).ldelim(); return writer; }; @@ -312,6 +325,28 @@ case 9: message.rotation = $root.google.cloud.secretmanager.v1.Rotation.decode(reader, reader.uint32()); break; + case 11: + if (message.versionAliases === $util.emptyObject) + message.versionAliases = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = 0; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.int64(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.versionAliases[key] = value; + break; default: reader.skipType(tag & 7); break; @@ -404,6 +439,14 @@ if (error) return "rotation." + error; } + if (message.versionAliases != null && message.hasOwnProperty("versionAliases")) { + if (!$util.isObject(message.versionAliases)) + return "versionAliases: object expected"; + var key = Object.keys(message.versionAliases); + for (var i = 0; i < key.length; ++i) + if (!$util.isInteger(message.versionAliases[key[i]]) && !(message.versionAliases[key[i]] && $util.isInteger(message.versionAliases[key[i]].low) && $util.isInteger(message.versionAliases[key[i]].high))) + return "versionAliases: integer|Long{k:string} expected"; + } return null; }; @@ -465,6 +508,20 @@ throw TypeError(".google.cloud.secretmanager.v1.Secret.rotation: object expected"); message.rotation = $root.google.cloud.secretmanager.v1.Rotation.fromObject(object.rotation); } + if (object.versionAliases) { + if (typeof object.versionAliases !== "object") + throw TypeError(".google.cloud.secretmanager.v1.Secret.versionAliases: object expected"); + message.versionAliases = {}; + for (var keys = Object.keys(object.versionAliases), i = 0; i < keys.length; ++i) + if ($util.Long) + (message.versionAliases[keys[i]] = $util.Long.fromValue(object.versionAliases[keys[i]])).unsigned = false; + else if (typeof object.versionAliases[keys[i]] === "string") + message.versionAliases[keys[i]] = parseInt(object.versionAliases[keys[i]], 10); + else if (typeof object.versionAliases[keys[i]] === "number") + message.versionAliases[keys[i]] = object.versionAliases[keys[i]]; + else if (typeof object.versionAliases[keys[i]] === "object") + message.versionAliases[keys[i]] = new $util.LongBits(object.versionAliases[keys[i]].low >>> 0, object.versionAliases[keys[i]].high >>> 0).toNumber(); + } return message; }; @@ -483,8 +540,10 @@ var object = {}; if (options.arrays || options.defaults) object.topics = []; - if (options.objects || options.defaults) + if (options.objects || options.defaults) { object.labels = {}; + object.versionAliases = {}; + } if (options.defaults) { object.name = ""; object.replication = null; @@ -523,6 +582,14 @@ object.etag = message.etag; if (message.rotation != null && message.hasOwnProperty("rotation")) object.rotation = $root.google.cloud.secretmanager.v1.Rotation.toObject(message.rotation, options); + if (message.versionAliases && (keys2 = Object.keys(message.versionAliases)).length) { + object.versionAliases = {}; + for (var j = 0; j < keys2.length; ++j) + if (typeof message.versionAliases[keys2[j]] === "number") + object.versionAliases[keys2[j]] = options.longs === String ? String(message.versionAliases[keys2[j]]) : message.versionAliases[keys2[j]]; + else + object.versionAliases[keys2[j]] = options.longs === String ? $util.Long.prototype.toString.call(message.versionAliases[keys2[j]]) : options.longs === Number ? new $util.LongBits(message.versionAliases[keys2[j]].low >>> 0, message.versionAliases[keys2[j]].high >>> 0).toNumber() : message.versionAliases[keys2[j]]; + } return object; }; diff --git a/packages/google-cloud-secretmanager/protos/protos.json b/packages/google-cloud-secretmanager/protos/protos.json index 8fd169b48a7..04a2cdee0fb 100644 --- a/packages/google-cloud-secretmanager/protos/protos.json +++ b/packages/google-cloud-secretmanager/protos/protos.json @@ -94,6 +94,14 @@ "options": { "(google.api.field_behavior)": "OPTIONAL" } + }, + "versionAliases": { + "keyType": "string", + "type": "int64", + "id": 11, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, diff --git a/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.get_iam_policy.js b/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.get_iam_policy.js index 3f6b21a9a3d..6a8b533f252 100644 --- a/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.get_iam_policy.js +++ b/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.get_iam_policy.js @@ -32,7 +32,7 @@ function main(resource) { // const resource = 'abc123' /** * OPTIONAL: A `GetPolicyOptions` object for specifying options to - * `GetIamPolicy`. This field is only used by Cloud IAM. + * `GetIamPolicy`. */ // const options = {} diff --git a/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.set_iam_policy.js b/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.set_iam_policy.js index c0e7c681da6..a4c8f8ec2df 100644 --- a/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.set_iam_policy.js +++ b/packages/google-cloud-secretmanager/samples/generated/v1/secret_manager_service.set_iam_policy.js @@ -37,6 +37,13 @@ function main(resource, policy) { * might reject them. */ // const policy = {} + /** + * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only + * the fields in the mask will be modified. If no mask is provided, the + * following default mask is used: + * `paths: "bindings, etag"` + */ + // const updateMask = {} // Imports the Secretmanager library const {SecretManagerServiceClient} = require('@google-cloud/secret-manager').v1; diff --git a/packages/google-cloud-secretmanager/samples/generated/v1/snippet_metadata.google.cloud.secretmanager.v1.json b/packages/google-cloud-secretmanager/samples/generated/v1/snippet_metadata.google.cloud.secretmanager.v1.json index c892e9950eb..2ad66674d89 100644 --- a/packages/google-cloud-secretmanager/samples/generated/v1/snippet_metadata.google.cloud.secretmanager.v1.json +++ b/packages/google-cloud-secretmanager/samples/generated/v1/snippet_metadata.google.cloud.secretmanager.v1.json @@ -558,7 +558,7 @@ "segments": [ { "start": 25, - "end": 59, + "end": 66, "type": "FULL" } ], @@ -574,6 +574,10 @@ { "name": "policy", "type": ".google.iam.v1.Policy" + }, + { + "name": "update_mask", + "type": ".google.protobuf.FieldMask" } ], "resultType": ".google.iam.v1.Policy", diff --git a/packages/google-cloud-secretmanager/src/v1/secret_manager_service_client.ts b/packages/google-cloud-secretmanager/src/v1/secret_manager_service_client.ts index 8f25624b77e..f39ef9d986d 100644 --- a/packages/google-cloud-secretmanager/src/v1/secret_manager_service_client.ts +++ b/packages/google-cloud-secretmanager/src/v1/secret_manager_service_client.ts @@ -1352,6 +1352,12 @@ export class SecretManagerServiceClient { * the policy is limited to a few 10s of KB. An empty policy is a * valid policy but certain Cloud Platform services (such as Projects) * might reject them. + * @param {google.protobuf.FieldMask} request.updateMask + * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only + * the fields in the mask will be modified. If no mask is provided, the + * following default mask is used: + * + * `paths: "bindings, etag"` * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -1439,7 +1445,7 @@ export class SecretManagerServiceClient { * See the operation documentation for the appropriate value for this field. * @param {google.iam.v1.GetPolicyOptions} request.options * OPTIONAL: A `GetPolicyOptions` object for specifying options to - * `GetIamPolicy`. This field is only used by Cloud IAM. + * `GetIamPolicy`. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array.