use of org.apache.rya.api.instance.RyaDetails in project incubator-rya by apache.
the class RyaAdminCommands method printInstanceDetails.
@CliCommand(value = PRINT_INSTANCE_DETAILS_CMD, help = "Print information about how the Rya instance is configured.")
public String printInstanceDetails() {
// Fetch the command that is connected to the store.
final ShellState shellState = state.getShellState();
final RyaClient commands = shellState.getConnectedCommands().get();
final String ryaInstance = shellState.getRyaInstanceName().get();
try {
final Optional<RyaDetails> details = commands.getGetInstanceDetails().getDetails(ryaInstance);
if (details.isPresent()) {
return new RyaDetailsFormatter().format(shellState.getStorageType().get(), details.get());
} else {
return "This instance of Rya does not have a Rya Details table. Consider migrating to a newer version of Rya.";
}
} catch (final InstanceDoesNotExistException e) {
throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e);
} catch (final RyaClientException e) {
throw new RuntimeException("Could not get the instance details. Reason: " + e.getMessage(), e);
}
}
use of org.apache.rya.api.instance.RyaDetails in project incubator-rya by apache.
the class RyaAdminCommandsTest method getInstanceDetails.
@Test
public void getInstanceDetails() throws InstanceDoesNotExistException, RyaClientException {
// This test is failed if the default timezone was not EST, so now it's fixed at EST.
// If you get assert mismatch of EST!=EDT, try the deprecated getTimeZone("EST") instead.
TimeZone.setDefault(TimeZone.getTimeZone("America/New_York"));
// Mock the object that performs the get operation.
final GetInstanceDetails mockGetInstanceDetails = mock(GetInstanceDetails.class);
final String instanceName = "test_instance";
final RyaDetails details = RyaDetails.builder().setRyaInstanceName(instanceName).setRyaVersion("1.2.3.4").addUser("alice").addUser("bob").addUser("charlie").setEntityCentricIndexDetails(new EntityCentricIndexDetails(true)).setTemporalIndexDetails(new TemporalIndexDetails(true)).setFreeTextDetails(new FreeTextIndexDetails(true)).setPCJIndexDetails(PCJIndexDetails.builder().setEnabled(true).setFluoDetails(new FluoDetails("test_instance_rya_pcj_updater")).addPCJDetails(PCJDetails.builder().setId("pcj 1").setUpdateStrategy(PCJUpdateStrategy.BATCH).setLastUpdateTime(new Date(1252521351L))).addPCJDetails(PCJDetails.builder().setId("pcj 2").setUpdateStrategy(PCJUpdateStrategy.INCREMENTAL))).setProspectorDetails(new ProspectorDetails(Optional.of(new Date(12525211L)))).setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.of(new Date(125221351L)))).build();
when(mockGetInstanceDetails.getDetails(eq(instanceName))).thenReturn(Optional.of(details));
final RyaClient mockCommands = mock(RyaClient.class);
when(mockCommands.getGetInstanceDetails()).thenReturn(mockGetInstanceDetails);
final SharedShellState state = new SharedShellState();
state.connectedToAccumulo(mock(AccumuloConnectionDetails.class), mockCommands);
state.connectedToInstance(instanceName);
// Execute the command.
final RyaAdminCommands commands = new RyaAdminCommands(state, mock(InstallPrompt.class), mock(SparqlPrompt.class), mock(UninstallPrompt.class));
final String message = commands.printInstanceDetails();
// Verify the values that were provided to the command were passed through to the GetInstanceDetails.
verify(mockGetInstanceDetails).getDetails(eq(instanceName));
// Verify a message is returned that includes the details.
final String expected = "General Metadata:\n" + " Instance Name: test_instance\n" + " RYA Version: 1.2.3.4\n" + " Users: alice, bob, charlie\n" + "Secondary Indicies:\n" + " Entity Centric Index:\n" + " Enabled: true\n" + // RYA-215" Enabled: true\n" +
" Free Text Index:\n" + " Enabled: true\n" + " Temporal Index:\n" + " Enabled: true\n" + " PCJ Index:\n" + " Enabled: true\n" + " Fluo App Name: test_instance_rya_pcj_updater\n" + " PCJs:\n" + " ID: pcj 1\n" + " Update Strategy: BATCH\n" + " Last Update Time: Thu Jan 15 06:55:21 EST 1970\n" + " ID: pcj 2\n" + " Update Strategy: INCREMENTAL\n" + " Last Update Time: unavailable\n" + "Statistics:\n" + " Prospector:\n" + " Last Update Time: Wed Dec 31 22:28:45 EST 1969\n" + " Join Selectivity:\n" + " Last Updated Time: Fri Jan 02 05:47:01 EST 1970\n";
assertEquals(expected, message);
}
use of org.apache.rya.api.instance.RyaDetails in project incubator-rya by apache.
the class AccumuloInstall method initializeRyaDetails.
/**
* Initializes the {@link RyaDetails} and stores them for the new instance.
*
* @param instanceName - The name of the instance that is being created. (not null)
* @param installConfig - The instance's install configuration. (not null)
* @param installUser - The user who is installing the instance of Rya. (not null)
* @return The {@link RyaDetails} that were stored.
* @throws AlreadyInitializedException Could not be initialized because
* a table with this instance name has already exists and is holding the details.
* @throws RyaDetailsRepositoryException Something caused the initialization
* operation to fail.
*/
private RyaDetails initializeRyaDetails(final String instanceName, final InstallConfiguration installConfig, final String installUser) throws AlreadyInitializedException, RyaDetailsRepositoryException {
requireNonNull(instanceName);
requireNonNull(installConfig);
requireNonNull(installUser);
final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(getConnector(), instanceName);
// Build the PCJ Index details.
final PCJIndexDetails.Builder pcjDetailsBuilder = PCJIndexDetails.builder().setEnabled(installConfig.isPcjIndexEnabled());
if (installConfig.getFluoPcjAppName().isPresent()) {
final String fluoPcjAppName = installConfig.getFluoPcjAppName().get();
pcjDetailsBuilder.setFluoDetails(new FluoDetails(fluoPcjAppName));
}
final RyaDetails details = RyaDetails.builder().setRyaInstanceName(instanceName).setRyaVersion(getVersion()).addUser(installUser).setTemporalIndexDetails(new TemporalIndexDetails(installConfig.isTemporalIndexEnabled())).setFreeTextDetails(new FreeTextIndexDetails(installConfig.isFreeTextIndexEnabled())).setEntityCentricIndexDetails(new EntityCentricIndexDetails(installConfig.isEntityCentrixIndexEnabled())).setPCJIndexDetails(pcjDetailsBuilder).setProspectorDetails(new ProspectorDetails(Optional.<Date>absent())).setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent())).build();
// Initialize the table.
detailsRepo.initialize(details);
return details;
}
use of org.apache.rya.api.instance.RyaDetails in project incubator-rya by apache.
the class AccumuloListIncrementalQueries method listIncrementalQueries.
@Override
public String listIncrementalQueries(String instanceName) throws RyaClientException {
requireNonNull(instanceName);
final Optional<RyaDetails> ryaDetailsHolder = getInstanceDetails.getDetails(instanceName);
final boolean ryaInstanceExists = ryaDetailsHolder.isPresent();
if (!ryaInstanceExists) {
throw new InstanceDoesNotExistException(String.format("The '%s' instance of Rya does not exist.", instanceName));
}
final PCJIndexDetails pcjIndexDetails = ryaDetailsHolder.get().getPCJIndexDetails();
final boolean pcjIndexingEnabeld = pcjIndexDetails.isEnabled();
if (!pcjIndexingEnabeld) {
throw new RyaClientException(String.format("The '%s' instance of Rya does not have PCJ Indexing enabled.", instanceName));
}
// If a Fluo application is being used, task it with updating the PCJ.
final Optional<FluoDetails> fluoDetailsHolder = pcjIndexDetails.getFluoDetails();
if (fluoDetailsHolder.isPresent()) {
final String fluoAppName = fluoDetailsHolder.get().getUpdateAppName();
try {
return getFluoQueryString(instanceName, fluoAppName);
} catch (Exception e) {
throw new RyaClientException("Problem while creating Fluo Query Strings.", e);
}
} else {
throw new RyaClientException(String.format("The '%s' instance of Rya does not have Fluo incremental updating enabled.", instanceName));
}
}
use of org.apache.rya.api.instance.RyaDetails in project incubator-rya by apache.
the class AccumuloIndexSetColumnVisibilityTest method initRyaDetails.
private static void initRyaDetails() throws AlreadyInitializedException, RyaDetailsRepositoryException {
// Initialize the Rya Details for the instance.
final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(accCon, ryaInstanceName);
final RyaDetails details = RyaDetails.builder().setRyaInstanceName(ryaInstanceName).setRyaVersion("0.0.0.0").setFreeTextDetails(new FreeTextIndexDetails(true)).setEntityCentricIndexDetails(new EntityCentricIndexDetails(true)).setTemporalIndexDetails(new TemporalIndexDetails(true)).setPCJIndexDetails(PCJIndexDetails.builder().setEnabled(true)).setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.<Date>absent())).setProspectorDetails(new ProspectorDetails(Optional.<Date>absent())).build();
detailsRepo.initialize(details);
}
Aggregations