THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
// ---- START: Proposed Admin API definitions ----
/**
* Describes supported and finalized features. You may anticipate
* certain exceptions when calling get() on the future obtained from the returned
* DescribeFeaturesResult.
*
* @param options options for the describeFeatures API,
*
* @return a result object containing:
* 1. List of cluster-wide finalized feature versions.
* 2. List of supported feature versions specific to the broker.
*/
DescribeFeaturesResult describeFeatures(DescribeFeaturesOptions options);
/**
* Update the feature versions supported cluster-wide. You may
* anticipate certain exceptions when calling get() on the futures
* obtained from the returned UpdateFeaturesResult.
*
* @param updates map of feature updates, keyed by the
* name of the feature
* @param options options for the updateFeatures API
*
* @return the results of the FeatureUpdate provided in the request
*/
UpdateFeaturesResult updateFeatures(Map<String, FeatureUpdate> featureUpdates, UpdateFeaturesOptions options);
// ---- END: Proposed Admin API definitions ----
// Represents a cluster-wide finalized feature, with a feature version levels.
class FinalizedFeature {
// The name of the feature.
String name();
// The cluster-wide finalized value of the feature min version level (value >= 1).
int16 minVersionLevel();
// The cluster-wide finalized value of the feature max version level (value >=1 and value >= minVersionLevel).
int16 maxVersionLevel();
}
// Represents a feature that is supported by a broker, with a specific
// feature version range [minVersion, maxVersion].
class SupportedFeature {
// The name of the feature.
String name();
// The minimum version (value >= 1) of the supported feature.
short minVersion();
// The maximum version (value >=1 and value >= minVersion) of the supported feature.
short maxVersion();
}
// Represents an update to a Feature, which can be sent to the controller
// for processing.
class FeatureUpdate {
// The name of the feature to be updated.
String name();
// The cluster-wide finalized NEW value of the feature max version level.
// - When >= 1, it's the new value to-be-updated for the finalized feature.
// - When < 1, it indicates the deletion of a finalized feature.
long maxVersionLevel();
// Return true only if downgrade/deletion of a feature should be allowed.
// Note that despite this allowDowngrade flag being set, certain downgrades
// may be rejected by the controller if it is deemed unsafe to downgrade
// the max version level of some specific feature.
bool allowDowngrade();
}
// Represents a collection of feature metadata.
class FeatureMetadata {
// The set of cluster-wide finalized features, keyed by feature name.
Set<FinalizedFeature> finalizedFeatures();
// The monotonically increasing epoch for the finalized features.
// If the returned value is empty, it means the finalized features are absent/unavailable.
Optional<Integer> epoch();
// The set of features supported by a broker, keyed by feature name.
Set<SupportedFeature> supportedFeatures();
}
class DescribeFeaturesResult {
/**
* The data returned in the future contains the latest entire set of
* finalized cluster-wide features, as well as the entire set of
* features supported by the broker serving this read request.
*/
KafkaFuture<FeatureMetadata> featureMetadata();
}
class UpdateFeaturesResult {
/**
* Returns a future which succeeds only if all the FeatureUpdate in the request succeed.
*/
KafkaFuture<Void> all();
/**
* Returns a map with key being feature name and value being
* the future which can be used to check the status of the FeatureUpdate
* in the request.
*
* Possible error codes:
* - NONE: The FeatureUpdate succeeded.
* - NOT_CONTROLLER: The FeatureUpdate failed since the request was processed by a broker that's not the controller.
* - CLUSTER_AUTHORIZATION_FAILED: The FeatureUpdate failed since there wasn't sufficient permission to perform the update.
* - INVALID_REQUEST: The FeatureUpdate failed because it is invalid.
* - FEATURE_UPDATE_FAILED: The FeatureUpdate failed because it can not be applied (ex: due to version incompatibilities)
*/
Map<String, KafkaFuture<Void>> values();
} |
...