use of org.modeshape.jcr.api.Workspace in project kylo by Teradata.
the class DebugController method getIndexes.
@GET
@Path("jcr-index")
@Produces(MediaType.APPLICATION_JSON)
public List<JcrIndexDefinition> getIndexes() {
return metadata.read(() -> {
this.accessController.checkPermission(AccessController.SERVICES, MetadataAccessControl.ACCESS_METADATA);
try {
Session session = JcrMetadataAccess.getActiveSession();
Workspace workspace = (Workspace) session.getWorkspace();
Map<String, IndexDefinition> indexDefinitionMap = workspace.getIndexManager().getIndexDefinitions();
if (indexDefinitionMap != null) {
return indexDefinitionMap.entrySet().stream().map((Map.Entry<String, IndexDefinition> e) -> {
JcrIndexDefinition indexDefinition = new JcrIndexDefinition();
StringBuffer names = new StringBuffer();
StringBuffer types = new StringBuffer();
for (int i = 0; i < e.getValue().size(); i++) {
if (i > 0) {
names.append(",");
types.append(",");
}
int columnType = e.getValue().getColumnDefinition(i).getColumnType();
String propertyName = e.getValue().getColumnDefinition(i).getPropertyName();
names.append(propertyName);
types.append(PropertyType.nameFromValue(columnType));
}
indexDefinition.setIndexKind(e.getValue().getKind().name());
indexDefinition.setIndexName(e.getKey());
indexDefinition.setNodeType(e.getValue().getNodeTypeName());
indexDefinition.setPropertyName(names.toString());
indexDefinition.setPropertyTypes(types.toString());
return indexDefinition;
}).collect(Collectors.toList());
} else {
return Collections.emptyList();
}
} catch (RepositoryException e) {
throw new RuntimeException(e);
}
});
}
use of org.modeshape.jcr.api.Workspace in project kylo by Teradata.
the class DebugController method reindex.
private RestResponseStatus reindex() {
return metadata.commit(() -> {
this.accessController.checkPermission(AccessController.SERVICES, MetadataAccessControl.ADMIN_METADATA);
try {
Session session = JcrMetadataAccess.getActiveSession();
Workspace workspace = (Workspace) session.getWorkspace();
workspace.reindex();
return RestResponseStatus.SUCCESS;
} catch (RepositoryException e) {
throw new RuntimeException(e);
}
});
}
use of org.modeshape.jcr.api.Workspace in project kylo by Teradata.
the class CreateDefaultUsersGroupsAction method upgradeTo.
/* (non-Javadoc)
* @see com.thinkbiganalytics.metadata.upgrade.UpgradeState#upgradeFrom(com.thinkbiganalytics.metadata.api.app.KyloVersion)
*/
@Override
public void upgradeTo(KyloVersion startingVersion) {
log.info("Creating default users/groups for version: " + startingVersion);
User dladmin = createDefaultUser("dladmin", "Data Lake Administrator", null);
User analyst = createDefaultUser("analyst", "Analyst", null);
User designer = createDefaultUser("designer", "Designer", null);
User operator = createDefaultUser("operator", "Operator", null);
// Create default groups if they don't exist.
UserGroup adminsGroup = createDefaultGroup("admin", "Administrators");
UserGroup opsGroup = createDefaultGroup("operations", "Operations");
UserGroup designersGroup = createDefaultGroup("designers", "Designers");
UserGroup analystsGroup = createDefaultGroup("analysts", "Analysts");
UserGroup usersGroup = createDefaultGroup("user", "Users");
// Add default users to their respective groups
adminsGroup.addUser(dladmin);
designersGroup.addUser(designer);
analystsGroup.addUser(analyst);
opsGroup.addUser(operator);
usersGroup.addUser(dladmin);
usersGroup.addUser(analyst);
usersGroup.addUser(designer);
usersGroup.addUser(operator);
// Setup initial group access control. Administrators group already has all rights.
actionsProvider.getAllowedActions(AllowedActions.SERVICES).ifPresent((allowed) -> {
allowed.enable(opsGroup.getRootPrincial(), OperationsAccessControl.ADMIN_OPS, FeedServicesAccessControl.ACCESS_CATEGORIES, FeedServicesAccessControl.ACCESS_FEEDS, FeedServicesAccessControl.ACCESS_TEMPLATES, FeedServicesAccessControl.ACCESS_TABLES, FeedServicesAccessControl.ACCESS_SERVICE_LEVEL_AGREEMENTS);
allowed.enable(designersGroup.getRootPrincial(), OperationsAccessControl.ACCESS_OPS, FeedServicesAccessControl.EDIT_FEEDS, FeedServicesAccessControl.ACCESS_TABLES, FeedServicesAccessControl.IMPORT_FEEDS, FeedServicesAccessControl.EXPORT_FEEDS, FeedServicesAccessControl.EDIT_CATEGORIES, FeedServicesAccessControl.EDIT_DATASOURCES, FeedServicesAccessControl.EDIT_TEMPLATES, FeedServicesAccessControl.IMPORT_TEMPLATES, FeedServicesAccessControl.EXPORT_TEMPLATES, FeedServicesAccessControl.ADMIN_TEMPLATES, FeedServicesAccessControl.ACCESS_SERVICE_LEVEL_AGREEMENTS, FeedServicesAccessControl.EDIT_SERVICE_LEVEL_AGREEMENTS, FeedServicesAccessControl.ACCESS_GLOBAL_SEARCH);
allowed.enable(analystsGroup.getRootPrincial(), OperationsAccessControl.ACCESS_OPS, FeedServicesAccessControl.EDIT_FEEDS, FeedServicesAccessControl.ACCESS_TABLES, FeedServicesAccessControl.IMPORT_FEEDS, FeedServicesAccessControl.EXPORT_FEEDS, FeedServicesAccessControl.EDIT_CATEGORIES, FeedServicesAccessControl.ACCESS_TEMPLATES, FeedServicesAccessControl.ACCESS_DATASOURCES, FeedServicesAccessControl.ACCESS_SERVICE_LEVEL_AGREEMENTS, FeedServicesAccessControl.EDIT_SERVICE_LEVEL_AGREEMENTS, FeedServicesAccessControl.ACCESS_GLOBAL_SEARCH);
});
try {
Workspace workspace = (Workspace) JcrMetadataAccess.getActiveSession().getWorkspace();
workspace.reindex("/users");
workspace.reindex("/groups");
} catch (RepositoryException e) {
log.error("Failed to re-index metadata", e);
throw new UpgradeException("Failed to re-index metadata", e);
}
}
Aggregations