Search in sources :

Example 1 with HasMasterServices

use of org.apache.hadoop.hbase.coprocessor.HasMasterServices in project hbase by apache.

the class AccessController method start.

/* ---- MasterObserver implementation ---- */
@Override
public void start(CoprocessorEnvironment env) throws IOException {
    CompoundConfiguration conf = new CompoundConfiguration();
    conf.add(env.getConfiguration());
    authorizationEnabled = AccessChecker.isAuthorizationSupported(conf);
    if (!authorizationEnabled) {
        LOG.warn("AccessController has been loaded with authorization checks DISABLED!");
    }
    shouldCheckExecPermission = conf.getBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, AccessControlConstants.DEFAULT_EXEC_PERMISSION_CHECKS);
    cellFeaturesEnabled = (HFile.getFormatVersion(conf) >= HFile.MIN_FORMAT_VERSION_WITH_TAGS);
    if (!cellFeaturesEnabled) {
        LOG.info("A minimum HFile version of " + HFile.MIN_FORMAT_VERSION_WITH_TAGS + " is required to persist cell ACLs. Consider setting " + HFile.FORMAT_VERSION_KEY + " accordingly.");
    }
    if (env instanceof MasterCoprocessorEnvironment) {
        // if running on HMaster
        MasterCoprocessorEnvironment mEnv = (MasterCoprocessorEnvironment) env;
        if (mEnv instanceof HasMasterServices) {
            MasterServices masterServices = ((HasMasterServices) mEnv).getMasterServices();
            zkPermissionWatcher = masterServices.getZKPermissionWatcher();
            accessChecker = masterServices.getAccessChecker();
        }
    } else if (env instanceof RegionServerCoprocessorEnvironment) {
        RegionServerCoprocessorEnvironment rsEnv = (RegionServerCoprocessorEnvironment) env;
        if (rsEnv instanceof HasRegionServerServices) {
            RegionServerServices rsServices = ((HasRegionServerServices) rsEnv).getRegionServerServices();
            zkPermissionWatcher = rsServices.getZKPermissionWatcher();
            accessChecker = rsServices.getAccessChecker();
        }
    } else if (env instanceof RegionCoprocessorEnvironment) {
        // if running at region
        regionEnv = (RegionCoprocessorEnvironment) env;
        conf.addBytesMap(regionEnv.getRegion().getTableDescriptor().getValues());
        compatibleEarlyTermination = conf.getBoolean(AccessControlConstants.CF_ATTRIBUTE_EARLY_OUT, AccessControlConstants.DEFAULT_ATTRIBUTE_EARLY_OUT);
        if (regionEnv instanceof HasRegionServerServices) {
            RegionServerServices rsServices = ((HasRegionServerServices) regionEnv).getRegionServerServices();
            zkPermissionWatcher = rsServices.getZKPermissionWatcher();
            accessChecker = rsServices.getAccessChecker();
        }
    }
    Preconditions.checkState(zkPermissionWatcher != null, "ZKPermissionWatcher is null");
    Preconditions.checkState(accessChecker != null, "AccessChecker is null");
    // set the user-provider.
    this.userProvider = UserProvider.instantiate(env.getConfiguration());
    tableAcls = new MapMaker().weakValues().makeMap();
}
Also used : HasMasterServices(org.apache.hadoop.hbase.coprocessor.HasMasterServices) RegionServerCoprocessorEnvironment(org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment) RegionCoprocessorEnvironment(org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment) HasRegionServerServices(org.apache.hadoop.hbase.coprocessor.HasRegionServerServices) RegionServerServices(org.apache.hadoop.hbase.regionserver.RegionServerServices) HasRegionServerServices(org.apache.hadoop.hbase.coprocessor.HasRegionServerServices) MapMaker(org.apache.hbase.thirdparty.com.google.common.collect.MapMaker) CompoundConfiguration(org.apache.hadoop.hbase.CompoundConfiguration) MasterCoprocessorEnvironment(org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment) MasterServices(org.apache.hadoop.hbase.master.MasterServices) HasMasterServices(org.apache.hadoop.hbase.coprocessor.HasMasterServices)

Example 2 with HasMasterServices

use of org.apache.hadoop.hbase.coprocessor.HasMasterServices in project hbase by apache.

the class MasterQuotasObserver method start.

@Override
public void start(CoprocessorEnvironment ctx) throws IOException {
    this.conf = ctx.getConfiguration();
    this.quotasEnabled = QuotaUtil.isQuotaEnabled(conf);
    if (!(ctx instanceof MasterCoprocessorEnvironment)) {
        throw new CoprocessorException("Must be loaded on master.");
    }
    // if running on master
    MasterCoprocessorEnvironment mEnv = (MasterCoprocessorEnvironment) ctx;
    if (mEnv instanceof HasMasterServices) {
        this.masterServices = ((HasMasterServices) mEnv).getMasterServices();
    } else {
        throw new CoprocessorException("Must be loaded on a master having master services.");
    }
}
Also used : HasMasterServices(org.apache.hadoop.hbase.coprocessor.HasMasterServices) MasterCoprocessorEnvironment(org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment) CoprocessorException(org.apache.hadoop.hbase.coprocessor.CoprocessorException)

Example 3 with HasMasterServices

use of org.apache.hadoop.hbase.coprocessor.HasMasterServices in project hbase by apache.

the class SnapshotScannerHDFSAclController method preMasterInitialization.

@Override
public void preMasterInitialization(ObserverContext<MasterCoprocessorEnvironment> c) throws IOException {
    if (c.getEnvironment().getConfiguration().getBoolean(SnapshotScannerHDFSAclHelper.ACL_SYNC_TO_HDFS_ENABLE, false)) {
        MasterCoprocessorEnvironment mEnv = c.getEnvironment();
        if (!(mEnv instanceof HasMasterServices)) {
            throw new IOException("Does not implement HMasterServices");
        }
        masterServices = ((HasMasterServices) mEnv).getMasterServices();
        hdfsAclHelper = new SnapshotScannerHDFSAclHelper(masterServices.getConfiguration(), masterServices.getConnection());
        pathHelper = hdfsAclHelper.getPathHelper();
        hdfsAclHelper.setCommonDirectoryPermission();
        initialized = true;
        userProvider = UserProvider.instantiate(c.getEnvironment().getConfiguration());
    } else {
        LOG.warn("Try to initialize the coprocessor SnapshotScannerHDFSAclController but failure " + "because the config " + SnapshotScannerHDFSAclHelper.ACL_SYNC_TO_HDFS_ENABLE + " is false.");
    }
}
Also used : HasMasterServices(org.apache.hadoop.hbase.coprocessor.HasMasterServices) MasterCoprocessorEnvironment(org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment) IOException(java.io.IOException)

Aggregations

HasMasterServices (org.apache.hadoop.hbase.coprocessor.HasMasterServices)3 MasterCoprocessorEnvironment (org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment)3 IOException (java.io.IOException)1 CompoundConfiguration (org.apache.hadoop.hbase.CompoundConfiguration)1 CoprocessorException (org.apache.hadoop.hbase.coprocessor.CoprocessorException)1 HasRegionServerServices (org.apache.hadoop.hbase.coprocessor.HasRegionServerServices)1 RegionCoprocessorEnvironment (org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment)1 RegionServerCoprocessorEnvironment (org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment)1 MasterServices (org.apache.hadoop.hbase.master.MasterServices)1 RegionServerServices (org.apache.hadoop.hbase.regionserver.RegionServerServices)1 MapMaker (org.apache.hbase.thirdparty.com.google.common.collect.MapMaker)1