Class TenantQuotaCallback

java.lang.Object
io.confluent.kafka.multitenant.quota.TenantQuotaCallback
All Implemented Interfaces:
org.apache.kafka.common.Configurable, org.apache.kafka.common.Reconfigurable, org.apache.kafka.server.quota.ClientQuotaCallback, org.apache.kafka.server.quota.ClusterLevelQuotaCallback

public class TenantQuotaCallback extends Object implements org.apache.kafka.server.quota.ClientQuotaCallback, org.apache.kafka.server.quota.ClusterLevelQuotaCallback, org.apache.kafka.common.Reconfigurable
  • Constructor Details

    • TenantQuotaCallback

      public TenantQuotaCallback()
  • Method Details

    • configure

      public void configure(Map<String,?> configs)
      Specified by:
      configure in interface org.apache.kafka.common.Configurable
    • reconfigurableConfigs

      public Set<String> reconfigurableConfigs()
      Specified by:
      reconfigurableConfigs in interface org.apache.kafka.common.Reconfigurable
    • validateReconfiguration

      public void validateReconfiguration(Map<String,?> configs) throws org.apache.kafka.common.config.ConfigException
      Specified by:
      validateReconfiguration in interface org.apache.kafka.common.Reconfigurable
      Throws:
      org.apache.kafka.common.config.ConfigException
    • reconfigure

      public void reconfigure(Map<String,?> configs)
      Specified by:
      reconfigure in interface org.apache.kafka.common.Reconfigurable
    • quotaMetricTags

      public Map<String,String> quotaMetricTags(org.apache.kafka.server.quota.ClientQuotaType quotaType, org.apache.kafka.common.security.auth.KafkaPrincipal principal, String clientId)
      Specified by:
      quotaMetricTags in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • quotaMetricTagsFromTopic

      public Map<String,String> quotaMetricTagsFromTopic(org.apache.kafka.server.quota.ClientQuotaType quotaType, String topic) throws InvalidParameterException
      Specified by:
      quotaMetricTagsFromTopic in interface org.apache.kafka.server.quota.ClientQuotaCallback
      Throws:
      InvalidParameterException
    • parentQuotaMetricTags

      public Map<String,String> parentQuotaMetricTags(org.apache.kafka.server.quota.ClientQuotaType quotaType, Map<String,String> metricTags)
      Specified by:
      parentQuotaMetricTags in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • quotaLimit

      public Double quotaLimit(org.apache.kafka.server.quota.ClientQuotaType quotaType, Map<String,String> metricTags)
      Specified by:
      quotaLimit in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • updateQuota

      public void updateQuota(org.apache.kafka.server.quota.ClientQuotaType quotaType, org.apache.kafka.server.quota.ClientQuotaEntity quotaEntity, double newValue)
      Specified by:
      updateQuota in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • removeQuota

      public void removeQuota(org.apache.kafka.server.quota.ClientQuotaType quotaType, org.apache.kafka.server.quota.ClientQuotaEntity quotaEntity)
      Specified by:
      removeQuota in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • updateDynamicQuotas

      public boolean updateDynamicQuotas(Map<Map<String,String>, Map<String,Long>> dynamicQuotas)
      Specified by:
      updateDynamicQuotas in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • cleanUpTenantDynamicQuotas

      public void cleanUpTenantDynamicQuotas(List<Map<String,String>> tenants, Set<String> targetTenants)
      Specified by:
      cleanUpTenantDynamicQuotas in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • enableDynamicQuota

      public void enableDynamicQuota(boolean enableDynamicQuota)
      Specified by:
      enableDynamicQuota in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • quotaResetRequired

      public boolean quotaResetRequired(org.apache.kafka.server.quota.ClientQuotaType quotaType)
      Specified by:
      quotaResetRequired in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • updateClusterMetadata

      public boolean updateClusterMetadata(org.apache.kafka.server.quota.ClientQuotaClusterDescriber cluster)
      Handle metadata update. This method is invoked whenever the broker receives UpdateMetadata request from the controller. Recompute all quotas to take the current partition allocation into account.
      Specified by:
      updateClusterMetadata in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • clusterQuotaLimit

      public Double clusterQuotaLimit(org.apache.kafka.server.quota.ClientQuotaType quotaType, Map<String,String> metricTags)
      Specified by:
      clusterQuotaLimit in interface org.apache.kafka.server.quota.ClusterLevelQuotaCallback
    • elasticCkuDefinition

      public Map<org.apache.kafka.server.quota.ElasticCkuDefinitionUtils.ElasticCkuDefinitionKey, Integer> elasticCkuDefinition(Map<String,String> metricTags)
      Specified by:
      elasticCkuDefinition in interface org.apache.kafka.server.quota.ClusterLevelQuotaCallback
    • cluster

      public org.apache.kafka.server.quota.ClientQuotaClusterDescriber cluster()
    • close

      public void close()
      Specified by:
      close in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • updateQuotas

      public static void updateQuotas(Map<String, io.confluent.kafka.multitenant.quota.MultiTenantQuotaConfig> tenantQuotas, io.confluent.kafka.multitenant.quota.MultiTenantQuotaConfig defaultTenantQuota)
      Update provisioned tenant quota configuration and/or default tenant quota. This method is invoked when tenant cluster quotas or default tenant cluster quota is updated.
    • maybeUpdateElasticCkuDefinition

      public static void maybeUpdateElasticCkuDefinition(String logicalClusterId, Map<org.apache.kafka.server.quota.ElasticCkuDefinitionUtils.ElasticCkuDefinitionKey, Integer> tenantElasticCkuDefinition)
    • maybeUpdateFlexibleFanoutEnabled

      public static void maybeUpdateFlexibleFanoutEnabled(String logicalClusterId, boolean isFlexFanoutEnabled)
    • updateUserQuotas

      public static void updateUserQuotas(String tenant, Map<String, io.confluent.kafka.multitenant.quota.MultiTenantQuotaConfig> userQuotas, io.confluent.kafka.multitenant.quota.MultiTenantQuotaConfig defaultUserQuota)
    • updateTenantFlexFanoutEnabled

      public void updateTenantFlexFanoutEnabled(String logicalClusterId, Boolean isFlexFanoutEnabled)
      Specified by:
      updateTenantFlexFanoutEnabled in interface org.apache.kafka.server.quota.ClientQuotaCallback
    • getTenantWithFlexFanoutEnabled

      public Set<String> getTenantWithFlexFanoutEnabled()
      Specified by:
      getTenantWithFlexFanoutEnabled in interface org.apache.kafka.server.quota.ClientQuotaCallback