func()

in fakekms/crypto_key_version_rpcs.go [149:184]


func (f *fakeKMS) UpdateCryptoKeyVersion(ctx context.Context, req *kmspb.UpdateCryptoKeyVersionRequest) (*kmspb.CryptoKeyVersion, error) {
	if err := allowlist("crypto_key_version", "update_mask").check(req); err != nil {
		return nil, err
	}

	if len(req.UpdateMask.GetPaths()) == 0 {
		return nil, errInvalidArgument("no fields selected for update")
	}

	name, err := parseCryptoKeyVersionName(req.CryptoKeyVersion.GetName())
	if err != nil {
		return nil, err
	}

	ckv, err := f.cryptoKeyVersion(name)
	if err != nil {
		return nil, err
	}

	for _, p := range req.UpdateMask.Paths {
		switch p {
		case "state":
			switch req.CryptoKeyVersion.State {
			case kmspb.CryptoKeyVersion_ENABLED, kmspb.CryptoKeyVersion_DISABLED:
				ckv.pb.State = req.CryptoKeyVersion.State
			default:
				return nil, errInvalidArgument("unsupported state in update call: %s",
					nameForValue(kmspb.CryptoKeyVersion_CryptoKeyVersionState_name, int32(req.CryptoKeyVersion.State)))
			}
		default:
			return nil, errInvalidArgument("unsupported update path: %s", p)
		}
	}

	return ckv.pb, nil
}