Search in sources :

Example 1 with AccessControlManager

use of io.prestosql.security.AccessControlManager in project hetu-core by openlookeng.

the class TestPrepareTask method executePrepare.

private Map<String, String> executePrepare(String statementName, Statement statement, String sqlString, Session session) {
    TransactionManager transactionManager = createTestTransactionManager();
    QueryStateMachine stateMachine = QueryStateMachine.begin(sqlString, Optional.empty(), session, URI.create("fake://uri"), new ResourceGroupId("test"), new NoOpResourceGroupManager(), false, transactionManager, new AccessControlManager(transactionManager), executor, metadata, WarningCollector.NOOP);
    Prepare prepare = new Prepare(identifier(statementName), statement);
    new PrepareTask(new SqlParser()).execute(prepare, transactionManager, metadata, new AllowAllAccessControl(), stateMachine, emptyList(), new HeuristicIndexerManager(new FileSystemClientManager(), new HetuMetaStoreManager()));
    return stateMachine.getAddedPreparedStatements();
}
Also used : AccessControlManager(io.prestosql.security.AccessControlManager) ResourceGroupId(io.prestosql.spi.resourcegroups.ResourceGroupId) TransactionManager(io.prestosql.transaction.TransactionManager) InMemoryTransactionManager.createTestTransactionManager(io.prestosql.transaction.InMemoryTransactionManager.createTestTransactionManager) AllowAllAccessControl(io.prestosql.security.AllowAllAccessControl) HeuristicIndexerManager(io.prestosql.heuristicindex.HeuristicIndexerManager) SqlParser(io.prestosql.sql.parser.SqlParser) Prepare(io.prestosql.sql.tree.Prepare) HetuMetaStoreManager(io.prestosql.metastore.HetuMetaStoreManager) NoOpResourceGroupManager(io.prestosql.execution.resourcegroups.NoOpResourceGroupManager) FileSystemClientManager(io.prestosql.filesystem.FileSystemClientManager)

Example 2 with AccessControlManager

use of io.prestosql.security.AccessControlManager in project hetu-core by openlookeng.

the class TestAnalyzer method setup.

@BeforeClass
public void setup() {
    CatalogManager catalogManager = new CatalogManager();
    transactionManager = createTestTransactionManager(catalogManager);
    transactionManager.beginTransaction(false);
    List<TransactionInfo> transactionInfos = transactionManager.getAllTransactionInfos();
    TransactionId transactionId = transactionInfos.get(0).getTransactionId();
    implicitConversionSession = testSessionBuilder().setCatalog(TPCH_CATALOG).setSchema("s1").setSystemProperty("implicit_conversion", "true").setTransactionId(transactionId).build();
    accessControl = new AccessControlManager(transactionManager);
    metadata = createTestMetadataManager(transactionManager, new FeaturesConfig());
    metadata.getFunctionAndTypeManager().registerBuiltInFunctions(ImmutableList.of(APPLY_FUNCTION));
    Catalog tpchTestCatalog = createTestingCatalog(TPCH_CATALOG, TPCH_CATALOG_NAME);
    catalogManager.registerCatalog(tpchTestCatalog);
    metadata.getAnalyzePropertyManager().addProperties(TPCH_CATALOG_NAME, tpchTestCatalog.getConnector(TPCH_CATALOG_NAME).getAnalyzeProperties());
    catalogManager.registerCatalog(createTestingCatalog(SECOND_CATALOG, SECOND_CATALOG_NAME));
    catalogManager.registerCatalog(createTestingCatalog(THIRD_CATALOG, THIRD_CATALOG_NAME));
    SchemaTableName table1 = new SchemaTableName("s1", "t1");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table1, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", BIGINT), new ColumnMetadata("c", BIGINT), new ColumnMetadata("d", BIGINT))), false));
    SchemaTableName table2 = new SchemaTableName("s1", "t2");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table2, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", BIGINT))), false));
    SchemaTableName table3 = new SchemaTableName("s1", "t3");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table3, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", BIGINT), new ColumnMetadata("x", BIGINT, null, true))), false));
    // table in different catalog
    SchemaTableName table4 = new SchemaTableName("s2", "t4");
    inSetupTransaction(session -> metadata.createTable(session, SECOND_CATALOG, new ConnectorTableMetadata(table4, ImmutableList.of(new ColumnMetadata("a", BIGINT))), false));
    // table with a hidden column
    SchemaTableName table5 = new SchemaTableName("s1", "t5");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table5, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", BIGINT, null, true))), false));
    // table with a varchar column
    SchemaTableName table6 = new SchemaTableName("s1", "t6");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table6, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", VARCHAR), new ColumnMetadata("c", BIGINT), new ColumnMetadata("d", BIGINT))), false));
    // table with bigint, double, array of bigints and array of doubles column
    SchemaTableName table7 = new SchemaTableName("s1", "t7");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table7, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", DOUBLE), new ColumnMetadata("c", new ArrayType(BIGINT)), new ColumnMetadata("d", new ArrayType(DOUBLE)))), false));
    // table for implicit conversion
    SchemaTableName table8 = new SchemaTableName("s1", "t8");
    inSetupTransaction(session -> metadata.createTable(session, TPCH_CATALOG, new ConnectorTableMetadata(table8, ImmutableList.of(new ColumnMetadata("a", BIGINT), new ColumnMetadata("b", INTEGER), new ColumnMetadata("c", SMALLINT), new ColumnMetadata("d", TINYINT), new ColumnMetadata("e", createDecimalType(10, 3)), new ColumnMetadata("f", REAL), new ColumnMetadata("g", DOUBLE), new ColumnMetadata("h", VARCHAR), new ColumnMetadata("i", VARBINARY), new ColumnMetadata("j", DATE), new ColumnMetadata("K", CharType.createCharType(3)))), false));
    // valid view referencing table in same schema
    ConnectorViewDefinition viewData1 = new ConnectorViewDefinition("select a from t1", Optional.of(TPCH_CATALOG), Optional.of("s1"), ImmutableList.of(new ViewColumn("a", BIGINT.getTypeSignature())), Optional.of("user"), false);
    inSetupTransaction(session -> metadata.createView(session, new QualifiedObjectName(TPCH_CATALOG, "s1", "v1"), viewData1, false));
    // stale view (different column type)
    ConnectorViewDefinition viewData2 = new ConnectorViewDefinition("select a from t1", Optional.of(TPCH_CATALOG), Optional.of("s1"), ImmutableList.of(new ViewColumn("a", parseTypeSignature("varchar"))), Optional.of("user"), false);
    inSetupTransaction(session -> metadata.createView(session, new QualifiedObjectName(TPCH_CATALOG, "s1", "v2"), viewData2, false));
    // view referencing table in different schema from itself and session
    ConnectorViewDefinition viewData3 = new ConnectorViewDefinition("select a from t4", Optional.of(SECOND_CATALOG), Optional.of("s2"), ImmutableList.of(new ViewColumn("a", BIGINT.getTypeSignature())), Optional.of("owner"), false);
    inSetupTransaction(session -> metadata.createView(session, new QualifiedObjectName(THIRD_CATALOG, "s3", "v3"), viewData3, false));
    // valid view with uppercase column name
    ConnectorViewDefinition viewData4 = new ConnectorViewDefinition("select A from t1", Optional.of("tpch"), Optional.of("s1"), ImmutableList.of(new ViewColumn("a", BIGINT.getTypeSignature())), Optional.of("user"), false);
    inSetupTransaction(session -> metadata.createView(session, new QualifiedObjectName("tpch", "s1", "v4"), viewData4, false));
    // recursive view referencing to itself
    ConnectorViewDefinition viewData5 = new ConnectorViewDefinition("select * from v5", Optional.of(TPCH_CATALOG), Optional.of("s1"), ImmutableList.of(new ViewColumn("a", BIGINT.getTypeSignature())), Optional.of("user"), false);
    inSetupTransaction(session -> metadata.createView(session, new QualifiedObjectName(TPCH_CATALOG, "s1", "v5"), viewData5, false));
}
Also used : AccessControlManager(io.prestosql.security.AccessControlManager) ColumnMetadata(io.prestosql.spi.connector.ColumnMetadata) ViewColumn(io.prestosql.spi.connector.ConnectorViewDefinition.ViewColumn) SchemaTableName(io.prestosql.spi.connector.SchemaTableName) CatalogManager(io.prestosql.metadata.CatalogManager) Catalog(io.prestosql.metadata.Catalog) QualifiedObjectName(io.prestosql.spi.connector.QualifiedObjectName) TransactionId(io.prestosql.transaction.TransactionId) ConnectorViewDefinition(io.prestosql.spi.connector.ConnectorViewDefinition) ArrayType(io.prestosql.spi.type.ArrayType) TransactionInfo(io.prestosql.transaction.TransactionInfo) ConnectorTableMetadata(io.prestosql.spi.connector.ConnectorTableMetadata) BeforeClass(org.testng.annotations.BeforeClass)

Example 3 with AccessControlManager

use of io.prestosql.security.AccessControlManager in project hetu-core by openlookeng.

the class ConnectorManager method addCatalogConnector.

public synchronized void addCatalogConnector(CatalogName catalogName, Connector catalogConnector) {
    MaterializedConnector connector = new MaterializedConnector(catalogName, catalogConnector);
    MaterializedConnector informationSchemaConnector = new MaterializedConnector(createInformationSchemaCatalogName(catalogName), new InformationSchemaConnector(catalogName.getCatalogName(), nodeManager, metadataManager, accessControlManager));
    CatalogName systemId = createSystemTablesCatalogName(catalogName);
    SystemTablesProvider systemTablesProvider;
    if (nodeManager.getCurrentNode().isCoordinator()) {
        systemTablesProvider = new DelegatingSystemTablesProvider(new StaticSystemTablesProvider(connector.getSystemTables()), new MetadataBasedSystemTablesProvider(metadataManager, catalogName.getCatalogName()));
    } else {
        systemTablesProvider = new StaticSystemTablesProvider(connector.getSystemTables());
    }
    MaterializedConnector systemConnector = new MaterializedConnector(systemId, new SystemConnector(nodeManager, systemTablesProvider, transactionId -> transactionManager.getConnectorTransaction(transactionId, catalogName)));
    Catalog catalog = new Catalog(catalogName.getCatalogName(), connector.getCatalogName(), connector.getConnector(), informationSchemaConnector.getCatalogName(), informationSchemaConnector.getConnector(), systemConnector.getCatalogName(), systemConnector.getConnector());
    try {
        addConnectorInternal(connector);
        addConnectorInternal(informationSchemaConnector);
        addConnectorInternal(systemConnector);
        catalogManager.registerCatalog(catalog);
    } catch (Throwable e) {
        catalogManager.removeCatalog(catalog.getCatalogName());
        removeConnectorInternal(systemConnector.getCatalogName());
        removeConnectorInternal(informationSchemaConnector.getCatalogName());
        removeConnectorInternal(connector.getCatalogName());
        throw e;
    }
}
Also used : SystemConnector(io.prestosql.connector.system.SystemConnector) ConnectorPlanOptimizerProvider(io.prestosql.spi.connector.ConnectorPlanOptimizerProvider) CONNECTION_USER(io.prestosql.spi.HetuConstant.CONNECTION_USER) VersionEmbedder(io.prestosql.spi.VersionEmbedder) ConnectorAccessControl(io.prestosql.spi.connector.ConnectorAccessControl) ConnectorSplitManager(io.prestosql.spi.connector.ConnectorSplitManager) NodeInfo(io.airlift.node.NodeInfo) FilterStatsCalculator(io.prestosql.cost.FilterStatsCalculator) ConnectorFilterStatsCalculatorService(io.prestosql.cost.ConnectorFilterStatsCalculatorService) DeterminismEvaluator(io.prestosql.spi.relation.DeterminismEvaluator) ServerConfig(io.prestosql.server.ServerConfig) RecordPageSourceProvider(io.prestosql.split.RecordPageSourceProvider) PreDestroy(javax.annotation.PreDestroy) ConnectorPlanOptimizerManager(io.prestosql.sql.planner.ConnectorPlanOptimizerManager) Preconditions.checkArgument(com.google.common.base.Preconditions.checkArgument) PrestoTransportException(io.prestosql.spi.PrestoTransportException) Procedure(io.prestosql.spi.procedure.Procedure) ConnectorNodePartitioningProvider(io.prestosql.spi.connector.ConnectorNodePartitioningProvider) Map(java.util.Map) PropertyMetadata(io.prestosql.spi.session.PropertyMetadata) ConnectorPageSinkProvider(io.prestosql.spi.connector.ConnectorPageSinkProvider) Announcer(io.airlift.discovery.client.Announcer) HeuristicIndexerManager(io.prestosql.heuristicindex.HeuristicIndexerManager) PageIndexerFactory(io.prestosql.spi.PageIndexerFactory) PrestoException(io.prestosql.spi.PrestoException) ImmutableSet(com.google.common.collect.ImmutableSet) SystemTable(io.prestosql.spi.connector.SystemTable) DomainTranslator(io.prestosql.spi.relation.DomainTranslator) DATA_CENTER_CONNECTOR_NAME(io.prestosql.spi.HetuConstant.DATA_CENTER_CONNECTOR_NAME) CatalogName(io.prestosql.spi.connector.CatalogName) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) ThreadSafe(javax.annotation.concurrent.ThreadSafe) NodeSchedulerConfig(io.prestosql.execution.scheduler.NodeSchedulerConfig) GuardedBy(javax.annotation.concurrent.GuardedBy) ExternalFunctionHub(io.prestosql.spi.function.ExternalFunctionHub) MetadataManager(io.prestosql.metadata.MetadataManager) String.format(java.lang.String.format) Preconditions.checkState(com.google.common.base.Preconditions.checkState) List(java.util.List) FunctionResolution(io.prestosql.sql.relational.FunctionResolution) ConnectorRecordSetProvider(io.prestosql.spi.connector.ConnectorRecordSetProvider) PageSinkManager(io.prestosql.split.PageSinkManager) Optional(java.util.Optional) FunctionAndTypeManager(io.prestosql.metadata.FunctionAndTypeManager) Joiner(com.google.common.base.Joiner) Connector(io.prestosql.spi.connector.Connector) NodePartitioningManager(io.prestosql.sql.planner.NodePartitioningManager) REMOTE_TASK_ERROR(io.prestosql.spi.StandardErrorCode.REMOTE_TASK_ERROR) Logger(io.airlift.log.Logger) EmbedVersion(io.prestosql.version.EmbedVersion) TransactionManager(io.prestosql.transaction.TransactionManager) ConnectorContext(io.prestosql.spi.connector.ConnectorContext) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) AccessControlManager(io.prestosql.security.AccessControlManager) SqlInvokedFunction(io.prestosql.spi.function.SqlInvokedFunction) FunctionExtractor.extractExternalFunctions(io.prestosql.metadata.FunctionExtractor.extractExternalFunctions) StaticSystemTablesProvider(io.prestosql.connector.system.StaticSystemTablesProvider) ConcurrentMap(java.util.concurrent.ConcurrentMap) InformationSchemaConnector(io.prestosql.connector.informationschema.InformationSchemaConnector) Inject(javax.inject.Inject) ConnectorIndexProvider(io.prestosql.spi.connector.ConnectorIndexProvider) MetadataBasedSystemTablesProvider(io.prestosql.connector.system.MetadataBasedSystemTablesProvider) ImmutableList(com.google.common.collect.ImmutableList) SystemTablesProvider(io.prestosql.connector.system.SystemTablesProvider) Verify.verify(com.google.common.base.Verify.verify) CatalogName.createSystemTablesCatalogName(io.prestosql.spi.connector.CatalogName.createSystemTablesCatalogName) Objects.requireNonNull(java.util.Objects.requireNonNull) PageSourceManager(io.prestosql.split.PageSourceManager) SystemConnector(io.prestosql.connector.system.SystemConnector) LinkedHashSet(java.util.LinkedHashSet) InternalNodeManager(io.prestosql.metadata.InternalNodeManager) InternalTypeManager(io.prestosql.type.InternalTypeManager) IndexManager(io.prestosql.index.IndexManager) CatalogName.createInformationSchemaCatalogName(io.prestosql.spi.connector.CatalogName.createInformationSchemaCatalogName) ThreadContextClassLoader(io.prestosql.spi.classloader.ThreadContextClassLoader) PageSorter(io.prestosql.spi.PageSorter) Field(java.lang.reflect.Field) ServiceAnnouncement(io.airlift.discovery.client.ServiceAnnouncement) DelegatingSystemTablesProvider(io.prestosql.connector.system.DelegatingSystemTablesProvider) Catalog(io.prestosql.metadata.Catalog) HandleResolver(io.prestosql.metadata.HandleResolver) HetuMetaStoreManager(io.prestosql.metastore.HetuMetaStoreManager) ConnectorFactory(io.prestosql.spi.connector.ConnectorFactory) SplitManager(io.prestosql.split.SplitManager) CatalogManager(io.prestosql.metadata.CatalogManager) ConnectorRowExpressionService(io.prestosql.sql.relational.ConnectorRowExpressionService) ConnectorPageSourceProvider(io.prestosql.spi.connector.ConnectorPageSourceProvider) StaticSystemTablesProvider(io.prestosql.connector.system.StaticSystemTablesProvider) InformationSchemaConnector(io.prestosql.connector.informationschema.InformationSchemaConnector) DelegatingSystemTablesProvider(io.prestosql.connector.system.DelegatingSystemTablesProvider) MetadataBasedSystemTablesProvider(io.prestosql.connector.system.MetadataBasedSystemTablesProvider) CatalogName(io.prestosql.spi.connector.CatalogName) CatalogName.createSystemTablesCatalogName(io.prestosql.spi.connector.CatalogName.createSystemTablesCatalogName) CatalogName.createInformationSchemaCatalogName(io.prestosql.spi.connector.CatalogName.createInformationSchemaCatalogName) StaticSystemTablesProvider(io.prestosql.connector.system.StaticSystemTablesProvider) MetadataBasedSystemTablesProvider(io.prestosql.connector.system.MetadataBasedSystemTablesProvider) SystemTablesProvider(io.prestosql.connector.system.SystemTablesProvider) DelegatingSystemTablesProvider(io.prestosql.connector.system.DelegatingSystemTablesProvider) Catalog(io.prestosql.metadata.Catalog)

Example 4 with AccessControlManager

use of io.prestosql.security.AccessControlManager in project hetu-core by openlookeng.

the class TestDeallocateTask method executeDeallocate.

private Set<String> executeDeallocate(String statementName, String sqlString, Session session) {
    TransactionManager transactionManager = createTestTransactionManager();
    AccessControl accessControl = new AccessControlManager(transactionManager);
    QueryStateMachine stateMachine = QueryStateMachine.begin(sqlString, Optional.empty(), session, URI.create("fake://uri"), new ResourceGroupId("test"), new NoOpResourceGroupManager(), false, transactionManager, accessControl, executor, metadata, WarningCollector.NOOP);
    Deallocate deallocate = new Deallocate(new Identifier(statementName));
    new DeallocateTask().execute(deallocate, transactionManager, metadata, new AllowAllAccessControl(), stateMachine, emptyList(), new HeuristicIndexerManager(new FileSystemClientManager(), new HetuMetaStoreManager()));
    return stateMachine.getDeallocatedPreparedStatements();
}
Also used : AccessControlManager(io.prestosql.security.AccessControlManager) ResourceGroupId(io.prestosql.spi.resourcegroups.ResourceGroupId) HeuristicIndexerManager(io.prestosql.heuristicindex.HeuristicIndexerManager) AllowAllAccessControl(io.prestosql.security.AllowAllAccessControl) AccessControl(io.prestosql.security.AccessControl) FileSystemClientManager(io.prestosql.filesystem.FileSystemClientManager) Identifier(io.prestosql.sql.tree.Identifier) Deallocate(io.prestosql.sql.tree.Deallocate) TransactionManager(io.prestosql.transaction.TransactionManager) InMemoryTransactionManager.createTestTransactionManager(io.prestosql.transaction.InMemoryTransactionManager.createTestTransactionManager) AllowAllAccessControl(io.prestosql.security.AllowAllAccessControl) HetuMetaStoreManager(io.prestosql.metastore.HetuMetaStoreManager) NoOpResourceGroupManager(io.prestosql.execution.resourcegroups.NoOpResourceGroupManager)

Example 5 with AccessControlManager

use of io.prestosql.security.AccessControlManager in project hetu-core by openlookeng.

the class TestQueryStateMachine method createQueryStateMachineWithTicker.

private QueryStateMachine createQueryStateMachineWithTicker(Ticker ticker) {
    Metadata metadata = createTestMetadataManager();
    TransactionManager transactionManager = createTestTransactionManager();
    AccessControl accessControl = new AccessControlManager(transactionManager);
    QueryStateMachine stateMachine = QueryStateMachine.beginWithTicker(QUERY, Optional.empty(), TEST_SESSION, LOCATION, new ResourceGroupId("test"), new NoOpResourceGroupManager(), false, transactionManager, accessControl, executor, ticker, metadata, WarningCollector.NOOP);
    stateMachine.setInputs(INPUTS);
    stateMachine.setOutput(OUTPUT);
    stateMachine.setColumns(OUTPUT_FIELD_NAMES, OUTPUT_FIELD_TYPES);
    stateMachine.setUpdateType(UPDATE_TYPE);
    stateMachine.setMemoryPool(MEMORY_POOL);
    for (Entry<String, String> entry : SET_SESSION_PROPERTIES.entrySet()) {
        stateMachine.addSetSessionProperties(entry.getKey(), entry.getValue());
    }
    RESET_SESSION_PROPERTIES.forEach(stateMachine::addResetSessionProperties);
    return stateMachine;
}
Also used : AccessControlManager(io.prestosql.security.AccessControlManager) ResourceGroupId(io.prestosql.spi.resourcegroups.ResourceGroupId) TransactionManager(io.prestosql.transaction.TransactionManager) InMemoryTransactionManager.createTestTransactionManager(io.prestosql.transaction.InMemoryTransactionManager.createTestTransactionManager) Metadata(io.prestosql.metadata.Metadata) AccessControl(io.prestosql.security.AccessControl) NoOpResourceGroupManager(io.prestosql.execution.resourcegroups.NoOpResourceGroupManager)

Aggregations

AccessControlManager (io.prestosql.security.AccessControlManager)5 TransactionManager (io.prestosql.transaction.TransactionManager)4 NoOpResourceGroupManager (io.prestosql.execution.resourcegroups.NoOpResourceGroupManager)3 HeuristicIndexerManager (io.prestosql.heuristicindex.HeuristicIndexerManager)3 HetuMetaStoreManager (io.prestosql.metastore.HetuMetaStoreManager)3 ResourceGroupId (io.prestosql.spi.resourcegroups.ResourceGroupId)3 InMemoryTransactionManager.createTestTransactionManager (io.prestosql.transaction.InMemoryTransactionManager.createTestTransactionManager)3 FileSystemClientManager (io.prestosql.filesystem.FileSystemClientManager)2 Catalog (io.prestosql.metadata.Catalog)2 CatalogManager (io.prestosql.metadata.CatalogManager)2 AccessControl (io.prestosql.security.AccessControl)2 AllowAllAccessControl (io.prestosql.security.AllowAllAccessControl)2 Joiner (com.google.common.base.Joiner)1 Preconditions.checkArgument (com.google.common.base.Preconditions.checkArgument)1 Preconditions.checkState (com.google.common.base.Preconditions.checkState)1 Verify.verify (com.google.common.base.Verify.verify)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Announcer (io.airlift.discovery.client.Announcer)1 ServiceAnnouncement (io.airlift.discovery.client.ServiceAnnouncement)1