[VOL-5486] Fix deprecated versions

Change-Id: I3e03ea246020547ae75fa92ce8cf5cbba7e8f3bb
Signed-off-by: Abhay Kumar <abhay.kumar@radisys.com>
diff --git a/vendor/github.com/IBM/sarama/api_versions.go b/vendor/github.com/IBM/sarama/api_versions.go
new file mode 100644
index 0000000..e993432
--- /dev/null
+++ b/vendor/github.com/IBM/sarama/api_versions.go
@@ -0,0 +1,84 @@
+package sarama
+
+type apiVersionRange struct {
+	minVersion int16
+	maxVersion int16
+}
+
+type apiVersionMap map[int16]*apiVersionRange
+
+// restrictApiVersion selects the appropriate API version for a given protocol body according to
+// the client and broker version ranges. By default, it selects the maximum version supported by both
+// client and broker, capped by the maximum Kafka version from Config.
+// It then calls setVersion() on the protocol body.
+// If no valid version is found, an error is returned.
+func restrictApiVersion(pb protocolBody, brokerVersions apiVersionMap) error {
+	key := pb.key()
+	// Since message constructors take a Kafka version and select the maximum supported protocol version already, we can
+	// rely on pb.version() being the max version supported for the user-selected Kafka API version.
+	clientMax := pb.version()
+
+	if brokerVersionRange := brokerVersions[key]; brokerVersionRange != nil {
+		// Select the maximum version that both client and server support
+		// Clamp to the client max to respect user preference above broker advertised version range
+		pb.setVersion(min(clientMax, max(min(clientMax, brokerVersionRange.maxVersion), brokerVersionRange.minVersion)))
+		return nil
+	}
+
+	return nil // no version ranges available, no restriction
+}
+
+const (
+	apiKeyProduce                      = 0
+	apiKeyFetch                        = 1
+	apiKeyListOffsets                  = 2
+	apiKeyMetadata                     = 3
+	apiKeyLeaderAndIsr                 = 4
+	apiKeyStopReplica                  = 5
+	apiKeyUpdateMetadata               = 6
+	apiKeyControlledShutdown           = 7
+	apiKeyOffsetCommit                 = 8
+	apiKeyOffsetFetch                  = 9
+	apiKeyFindCoordinator              = 10
+	apiKeyJoinGroup                    = 11
+	apiKeyHeartbeat                    = 12
+	apiKeyLeaveGroup                   = 13
+	apiKeySyncGroup                    = 14
+	apiKeyDescribeGroups               = 15
+	apiKeyListGroups                   = 16
+	apiKeySaslHandshake                = 17
+	apiKeyApiVersions                  = 18
+	apiKeyCreateTopics                 = 19
+	apiKeyDeleteTopics                 = 20
+	apiKeyDeleteRecords                = 21
+	apiKeyInitProducerId               = 22
+	apiKeyOffsetForLeaderEpoch         = 23
+	apiKeyAddPartitionsToTxn           = 24
+	apiKeyAddOffsetsToTxn              = 25
+	apiKeyEndTxn                       = 26
+	apiKeyWriteTxnMarkers              = 27
+	apiKeyTxnOffsetCommit              = 28
+	apiKeyDescribeAcls                 = 29
+	apiKeyCreateAcls                   = 30
+	apiKeyDeleteAcls                   = 31
+	apiKeyDescribeConfigs              = 32
+	apiKeyAlterConfigs                 = 33
+	apiKeyAlterReplicaLogDirs          = 34
+	apiKeyDescribeLogDirs              = 35
+	apiKeySASLAuth                     = 36
+	apiKeyCreatePartitions             = 37
+	apiKeyCreateDelegationToken        = 38
+	apiKeyRenewDelegationToken         = 39
+	apiKeyExpireDelegationToken        = 40
+	apiKeyDescribeDelegationToken      = 41
+	apiKeyDeleteGroups                 = 42
+	apiKeyElectLeaders                 = 43
+	apiKeyIncrementalAlterConfigs      = 44
+	apiKeyAlterPartitionReassignments  = 45
+	apiKeyListPartitionReassignments   = 46
+	apiKeyOffsetDelete                 = 47
+	apiKeyDescribeClientQuotas         = 48
+	apiKeyAlterClientQuotas            = 49
+	apiKeyDescribeUserScramCredentials = 50
+	apiKeyAlterUserScramCredentials    = 51
+)