/** * Creates a MachineDetails for the given location by SSHing to the machine and * running a Bash script to gather data. Should only be called from within a * task context. If this might not be the case then use {@link * #taskForSshMachineLocation(SshMachineLocation)} instead. */ @Beta public static BasicMachineDetails forSshMachineLocationLive(SshMachineLocation location) { return TaskTags.markInessential(DynamicTasks.queueIfPossible(taskForSshMachineLocation(location)) .orSubmitAsync() .asTask()) .getUnchecked(); }
@Test(groups = "Integration") public void testGetMachineDetails() { Task<BasicMachineDetails> detailsTask = app.getExecutionContext().submit( BasicMachineDetails.taskForSshMachineLocation(host)); MachineDetails machine = detailsTask.getUnchecked(); LOG.info("Found the following on localhost: {}", machine); assertNotNull(machine); OsDetails details = machine.getOsDetails(); assertNotNull(details); assertNotNull(details.getArch()); assertNotNull(details.getName()); assertNotNull(details.getVersion()); assertFalse(details.getArch().startsWith("architecture:"), "architecture prefix not removed from details"); assertFalse(details.getName().startsWith("name:"), "name prefix not removed from details"); assertFalse(details.getVersion().startsWith("version:"), "version prefix not removed from details"); } }
@Override protected void doTest(Location loc) throws Exception { Entity testEntity = app.createAndManageChild(EntitySpec.create(EmptySoftwareProcess.class)); app.start(ImmutableList.of(loc)); EntityAsserts.assertAttributeEqualsEventually(testEntity, Startable.SERVICE_UP, true); SshMachineLocation sshLoc = Locations.findUniqueSshMachineLocation(testEntity.getLocations()).get(); MachineDetails machine = app.getExecutionContext() .submit(BasicMachineDetails.taskForSshMachineLocation(sshLoc)) .getUnchecked(); LOG.info("Found the following at {}: {}", loc, machine); assertNotNull(machine); OsDetails details = machine.getOsDetails(); assertNotNull(details); assertNotNull(details.getArch()); assertNotNull(details.getName()); assertNotNull(details.getVersion()); assertFalse(details.getArch().startsWith("architecture:")); assertFalse(details.getName().startsWith("name:")); assertFalse(details.getVersion().startsWith("version:")); } }
@Override protected void doTest(Location loc) throws Exception { Entity testEntity = app.createAndManageChild(EntitySpec.create(EmptySoftwareProcess.class)); app.start(ImmutableList.of(loc)); EntityAsserts.assertAttributeEqualsEventually(MutableMap.of("timeout", TIMEOUT_MS), testEntity, Startable.SERVICE_UP, true); SshMachineLocation sshLoc = Locations.findUniqueSshMachineLocation(testEntity.getLocations()).get(); MachineDetails machine = app.getExecutionContext() .submit(BasicMachineDetails.taskForSshMachineLocation(sshLoc)) .getUnchecked(); LOG.info("Found the following at {}: {}", loc, machine); assertNotNull(machine); OsDetails details = machine.getOsDetails(); assertNotNull(details); assertNotNull(details.getArch()); assertNotNull(details.getName()); assertNotNull(details.getVersion()); assertFalse(details.getArch().startsWith("architecture:")); assertFalse(details.getName().startsWith("name:")); assertFalse(details.getVersion().startsWith("version:")); } }