Skip to content

Commit

Permalink
Allow to configure refresh period with environment variables
Browse files Browse the repository at this point in the history
  • Loading branch information
dheerajkulakarni committed Aug 18, 2020
1 parent 19811d3 commit adbabc5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
5 changes: 5 additions & 0 deletions presto-plugin-toolkit/pom.xml
Expand Up @@ -17,6 +17,11 @@
</properties>

<dependencies>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>bootstrap</artifactId>
</dependency>

<dependency>
<groupId>io.airlift</groupId>
<artifactId>configuration</artifactId>
Expand Down
Expand Up @@ -15,6 +15,8 @@

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Injector;
import io.airlift.bootstrap.Bootstrap;
import io.airlift.log.Logger;
import io.airlift.units.Duration;
import io.prestosql.plugin.base.security.CatalogAccessControlRule.AccessMode;
Expand Down Expand Up @@ -43,12 +45,11 @@
import java.util.function.Predicate;
import java.util.regex.Pattern;

import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Suppliers.memoizeWithExpiration;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static io.airlift.configuration.ConfigBinder.configBinder;
import static io.prestosql.plugin.base.security.CatalogAccessControlRule.AccessMode.ALL;
import static io.prestosql.plugin.base.security.CatalogAccessControlRule.AccessMode.READ_ONLY;
import static io.prestosql.plugin.base.security.FileBasedAccessControlConfig.SECURITY_CONFIG_FILE;
import static io.prestosql.plugin.base.security.FileBasedAccessControlConfig.SECURITY_REFRESH_PERIOD;
import static io.prestosql.plugin.base.security.TableAccessControlRule.TablePrivilege.DELETE;
import static io.prestosql.plugin.base.security.TableAccessControlRule.TablePrivilege.INSERT;
Expand Down Expand Up @@ -138,13 +139,19 @@ public SystemAccessControl create(Map<String, String> config)
{
requireNonNull(config, "config is null");

String configFileName = config.get(SECURITY_CONFIG_FILE);
checkState(configFileName != null, "Security configuration must contain the '%s' property", SECURITY_CONFIG_FILE);
Bootstrap bootstrap = new Bootstrap(
binder -> configBinder(binder).bindConfig(FileBasedAccessControlConfig.class));
Injector injector = bootstrap.strictConfig()
.doNotInitializeLogging()
.setRequiredConfigurationProperties(config)
.initialize();
FileBasedAccessControlConfig fileBasedAccessControlConfig = injector.getInstance(FileBasedAccessControlConfig.class);
String configFileName = fileBasedAccessControlConfig.getConfigFile();

if (config.containsKey(SECURITY_REFRESH_PERIOD)) {
Duration refreshPeriod;
try {
refreshPeriod = Duration.valueOf(config.get(SECURITY_REFRESH_PERIOD));
refreshPeriod = fileBasedAccessControlConfig.getRefreshPeriod();
}
catch (IllegalArgumentException e) {
throw invalidRefreshPeriodException(config, configFileName);
Expand Down

0 comments on commit adbabc5

Please sign in to comment.