use of org.ovirt.engine.sdk4.services.SystemService in project ovirt-engine-sdk-java by oVirt.
the class GetDisplayTicket method main.
public static void main(String[] args) throws Exception {
// Create the connection to the server:
Connection connection = connection().url("https://engine40.example.com/ovirt-engine/api").user("admin@internal").password("redhat123").trustStoreFile("truststore.jks").build();
// Get the reference to the root of the tree of services:
SystemService systemService = connection.systemService();
// Find the virtual machine:
VmsService vmsService = systemService.vmsService();
Vm vm = vmsService.list().search("name=myvm").send().vms().get(0);
// Find the service that manages the graphics consoles of the virtual machine:
VmService vmService = vmsService.vmService(vm.id());
VmGraphicsConsolesService consolesService = vmService.graphicsConsolesService();
// The method that lists the graphics consoles doesn't support search, so in order to find the console
// corresponding to the access protocol that we are interested on (SPICE in this example) we need to get all of
// them and filter explicitly. In addition the `current` parameter must be `true`, as otherwise you will *not*
// get important values like the `address` and `port` where the console is available.
List<GraphicsConsole> consoles = consolesService.list().current(true).send().consoles();
GraphicsConsole console = null;
for (GraphicsConsole c : consoles) {
if (c.protocol() == GraphicsType.SPICE) {
console = c;
break;
}
}
// Find the service that manages the graphics console that was selected in the previous step:
VmGraphicsConsoleService consoleService = consolesService.consoleService(console.id());
// Request the ticket. The virtual machine must be up and running, as it doesn't make sense to get a console
// ticket for a virtual machine that is down. If you try that, the request will fail.
Ticket ticket = consoleService.ticket().send().ticket();
// Print the details needed to connect to the console (the ticket value is the password):
System.out.printf("address: %s\n", console.address());
System.out.printf("port: %d\n", console.port());
System.out.printf("tls_port: %d\n", console.tlsPort());
System.out.printf("password: %s\n", ticket.value());
// Close the connection to the server:
connection.close();
}
use of org.ovirt.engine.sdk4.services.SystemService in project ovirt-engine-sdk-java by oVirt.
the class ListGlanceImages method main.
public static void main(String[] args) throws Exception {
// Create the connection to the server:
Connection connection = connection().url("https://engine40.example.com/ovirt-engine/api").user("admin@internal").password("redhat123").trustStoreFile("truststore.jks").build();
// Get the root of the services tree:
SystemService systemService = connection.systemService();
// Find the Glance storage domain that is available for default in any oVirt installation:
StorageDomainsService sdsService = systemService.storageDomainsService();
StorageDomain sd = sdsService.list().search("name=ovirt-image-repository").send().storageDomains().get(0);
// Find the service that manages the Glance storage domain:
StorageDomainService sdService = sdsService.storageDomainService(sd.id());
// Find the service that manages the images available in that storage domain:
ImagesService imagesService = sdService.imagesService();
// List the images available in the storage domain:
List<Image> images = imagesService.list().send().images();
for (Image image : images) {
System.out.println(image.name());
}
// Close the connection to the server:
connection.close();
}
use of org.ovirt.engine.sdk4.services.SystemService in project ovirt-engine-sdk-java by oVirt.
the class AddSystemPermission method main.
public static void main(String[] args) throws Exception {
// Create the connection to the server:
Connection connection = connection().url("https://engine40.example.com/ovirt-engine/api").user("admin@internal").password("redhat123").trustStoreFile("truststore.jks").build();
// Get the reference to the root of the tree of services:
SystemService systemService = connection.systemService();
// Get the reference to the service that manages system permissions:
SystemPermissionsService permissionsService = systemService.permissionsService();
// Add the "SupeUser" permission to the user with id "123":
permissionsService.add().permission(permission().role(role().name("SuperUser")).user(user().id("123"))).send();
// Close the connection to the server:
connection.close();
}
use of org.ovirt.engine.sdk4.services.SystemService in project ovirt-engine-sdk-java by oVirt.
the class VmBackup method run.
/**
* This is the method that performs the actual work.
*
* @param systemService the reference to the root of services
* @throws Exception if something fails while doing the work
*/
private void run(SystemService systemService) throws Exception {
// Get the reference to the service that we will use to send events to the audit log:
EventsService eventsService = systemService.eventsService();
// In order to send events we need to also send unique integer ids. These should usually come from an external
// database, but in this example we will just generate them from the current time in seconds since Jan 1st 1970.
int eventId = (int) (System.currentTimeMillis() / 1000);
// Get the reference to the service that manages the virtual machines:
VmsService vmsService = systemService.vmsService();
// Find the virtual machine that we want to back up. Note that we need to use the 'all_content' parameter to
// retrieve the retrieve the OVF, as it isn't retrieved by default:
Vm dataVm = vmsService.list().search(String.format("name=%s", DATA_VM_NAME)).allContent(true).send().vms().get(0);
log.info("Found data virtual machine '{}', the id is '{}'.", dataVm.name(), dataVm.id());
// Find the virtual machine were we will attach the disks in order to do the backup:
Vm agentVm = vmsService.list().search(String.format("name=%s", AGENT_VM_NAME)).send().vms().get(0);
log.info("Found agent virtual machine '{}', the id is '{}'.", agentVm.name(), agentVm.id());
// Find the services that manage the data and agent virtual machines:
VmService dataVmService = vmsService.vmService(dataVm.id());
VmService agentVmService = vmsService.vmService(agentVm.id());
// Create an unique description for the snapshot, so that it is easier for the administrator to identify this
// snapshot as a temporary one created just for backup purposes:
String snapDescription = String.format("%s-backup-%s", dataVm.name(), UUID.randomUUID());
// Send an external event to indicate to the administrator that the backup of the virtual machine is starting.
// Note that the description of the event contains the name of the virtual machine and the name of the temporary
// snapshot, this way, if something fails, the administrator will know what snapshot was used and remove it
// manually.
eventsService.add().event(event().vm(vm().id(dataVm.id())).origin(APPLICATION_NAME).severity(LogSeverity.NORMAL).customId(eventId++).description(String.format("Backup of virtual machine '%s' using snapshot '%s' is starting.", dataVm.name(), snapDescription))).send();
// Save the OVF to a file, so that we can use to restore the virtual machine later. The name of the file is the
// name of the virtual machine, followed by a dash and the identifier of the virtual machine, to make it unique:
String ovfData = dataVm.initialization().configuration().data();
File ovfFile = new File(String.format("%s-%s.ovf", dataVm.name(), dataVm.id()));
try (OutputStream ovfStream = new FileOutputStream(ovfFile)) {
ovfStream.write(ovfData.getBytes(StandardCharsets.UTF_8));
}
log.info("Wrote OVF to file '{}'", ovfFile.getAbsolutePath());
// Send the request to create the snapshot. Note that this will return before the snapshot is completely
// created, so we will later need to wait till the snapshot is completely created.
SnapshotsService snapsService = dataVmService.snapshotsService();
Snapshot snap = snapsService.add().snapshot(snapshot().description(snapDescription)).send().snapshot();
log.info("Sent request to create snapshot '{}', the id is '{}'.", snap.description(), snap.id());
// Poll and wait till the status of the snapshot is 'ok', which means that it is completely created:
SnapshotService snapService = snapsService.snapshotService(snap.id());
while (snap.snapshotStatus() != SnapshotStatus.OK) {
log.info("Waiting till the snapshot is created, the status is now '{}'.", snap.snapshotStatus());
Thread.sleep(1 * 1000);
snap = snapService.get().send().snapshot();
}
log.info("The snapshot is now complete.");
// Retrieve the descriptions of the disks of the snapshot:
SnapshotDisksService snapDisksService = snapService.disksService();
List<Disk> snapDisks = snapDisksService.list().send().disks();
// Attach all the disks of the snapshot to the agent virtual machine, and save the resulting disk attachments
// in a list so that we can later detach them easily:
DiskAttachmentsService attachmentsService = agentVmService.diskAttachmentsService();
List<DiskAttachment> attachments = new ArrayList<>();
for (Disk snapDisk : snapDisks) {
DiskAttachment attachment = attachmentsService.add().attachment(diskAttachment().disk(disk().id(snapDisk.id()).snapshot(snapshot().id(snap.id()))).active(true).bootable(false).interface_(DiskInterface.VIRTIO)).send().attachment();
attachments.add(attachment);
log.info("Attached disk '{}' to the agent virtual machine.", attachment.disk().id());
}
// been attached.
for (DiskAttachment attachment : attachments) {
if (attachment.logicalNamePresent()) {
log.info("Logical name for disk '{}' is '{}'.", attachment.disk().id(), attachment.logicalName());
} else {
log.info("The logical name for disk '{}' isn't available. Is the guest agent installed?", attachment.disk().id());
}
}
// Insert here the code to contact the backup agent and do the actual backup ...
log.info("Doing the actual backup ...");
// Detach the disks from the agent virtual machine:
for (DiskAttachment attachment : attachments) {
DiskAttachmentService attachmentService = attachmentsService.attachmentService(attachment.id());
attachmentService.remove().send();
log.info("Detached disk '{}' to from the agent virtual machine.", attachment.disk().id());
}
// Remove the snapshot:
snapService.remove().send();
log.info("Removed the snapshot '{}'.", snap.description());
// Send an external event to indicate to the administrator that the backup of the virtual machine is completed:
eventsService.add().event(event().vm(vm().id(dataVm.id())).origin(APPLICATION_NAME).severity(LogSeverity.NORMAL).customId(eventId++).description(String.format("Backup of virtual machine '%s' using snapshot '%s' is completed.", dataVm.name(), snapDescription))).send();
// Bye:
log.info("Bye!");
}
use of org.ovirt.engine.sdk4.services.SystemService in project ovirt-engine-sdk-java by oVirt.
the class ExportVm method main.
public static void main(String[] args) throws Exception {
// Create the connection to the server:
Connection connection = connection().url("https://engine40.example.com/ovirt-engine/api").user("admin@internal").password("redhat123").trustStoreFile("truststore.jks").build();
// Get the reference to the root of the services tree:
SystemService systemService = connection.systemService();
// Find the virtual machine:
VmsService vmsService = systemService.vmsService();
Vm vm = vmsService.list().search("name=myvm").send().vms().get(0);
// Export the virtual machine. Note that the 'exclusive' parameter is optional, and only required if you want
// to overwrite a virtual machine that has already been exported before.
VmService vmService = vmsService.vmService(vm.id());
vmService.export().exclusive(true).discardSnapshots(true).storageDomain(storageDomain().name("myexport")).send();
// Close the connection to the server:
connection.close();
}
Aggregations