Search in sources :

Example 46 with Connection

use of org.ovirt.engine.sdk4.Connection in project ovirt-engine-sdk-java by oVirt.

the class UpdateQuotaLimits 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();
    // Find the reference to the root of the tree of services:
    SystemService systemService = connection.systemService();
    // Find the data center and the service that manages it:
    DataCentersService dcsService = systemService.dataCentersService();
    DataCenter dc = dcsService.list().search("name=mydc").send().dataCenters().get(0);
    DataCenterService dcService = dcsService.dataCenterService(dc.id());
    // Find the storage domain and the service that manages it:
    StorageDomainsService sdsService = systemService.storageDomainsService();
    StorageDomain sd = sdsService.list().search("name=mydata").send().storageDomains().get(0);
    StorageDomainService sdService = sdsService.storageDomainService(sd.id());
    // Find the quota and the service that manages it. Note that the service that manages the quota doesn't support
    // search, so we need to retrieve all the quotas and filter explicitly. If the quota doesn't exist, create it.
    QuotasService quotasService = dcService.quotasService();
    List<Quota> quotas = quotasService.list().send().quotas();
    Quota quota = null;
    for (Quota q : quotas) {
        if (Objects.equals(q.id(), "myquota")) {
            quota = q;
            break;
        }
    }
    if (quota == null) {
        quota = quotasService.add().quota(quota().name("myquota").description("My quota").clusterHardLimitPct(20).clusterSoftLimitPct(80).storageHardLimitPct(20).storageSoftLimitPct(80)).send().quota();
    }
    QuotaService quotaService = quotasService.quotaService(quota.id());
    // Find the quota limits for the storage domain that we are interested on:
    QuotaStorageLimitsService limitsService = quotaService.quotaStorageLimitsService();
    List<QuotaStorageLimit> limits = limitsService.list().send().limits();
    QuotaStorageLimit limit = null;
    for (QuotaStorageLimit l : limits) {
        if (Objects.equals(l.id(), sd.id())) {
            limit = l;
            break;
        }
    }
    // If that limit exists we will delete it:
    if (limit != null) {
        QuotaStorageLimitService limitService = limitsService.limitService(limit.id());
        limitService.remove();
    }
    // Create the limit again with the desired values, in this example it will be 100 GiB:
    limitsService.add().limit(quotaStorageLimit().name("mydatalimit").description("My storage domain limit").limit(100).storageDomain(storageDomain().id(sd.id()))).send();
    // Close the connection to the server:
    connection.close();
}
Also used : StorageDomainService(org.ovirt.engine.sdk4.services.StorageDomainService) DataCentersService(org.ovirt.engine.sdk4.services.DataCentersService) Connection(org.ovirt.engine.sdk4.Connection) QuotaStorageLimitService(org.ovirt.engine.sdk4.services.QuotaStorageLimitService) QuotaStorageLimitsService(org.ovirt.engine.sdk4.services.QuotaStorageLimitsService) StorageDomainsService(org.ovirt.engine.sdk4.services.StorageDomainsService) StorageDomain(org.ovirt.engine.sdk4.types.StorageDomain) QuotaStorageLimit(org.ovirt.engine.sdk4.types.QuotaStorageLimit) DataCenter(org.ovirt.engine.sdk4.types.DataCenter) SystemService(org.ovirt.engine.sdk4.services.SystemService) Quota(org.ovirt.engine.sdk4.types.Quota) QuotasService(org.ovirt.engine.sdk4.services.QuotasService) DataCenterService(org.ovirt.engine.sdk4.services.DataCenterService) QuotaService(org.ovirt.engine.sdk4.services.QuotaService)

Example 47 with Connection

use of org.ovirt.engine.sdk4.Connection in project ovirt-engine-sdk-java by oVirt.

the class ConnectionBuilder45 method createConnectionSocketFactoryRegistry.

private Registry createConnectionSocketFactoryRegistry() {
    String protocol = getProtocol();
    Registry registry = null;
    // Create SSL/TLS or plain connection:
    if (HTTP_PROTOCOL.equals(protocol)) {
        ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory();
        registry = RegistryBuilder.<ConnectionSocketFactory>create().register(HTTP_PROTOCOL, plainsf).build();
    } else if (HTTPS_PROTOCOL.equals(protocol)) {
        try {
            LayeredConnectionSocketFactory sslsf = null;
            if (this.insecure) {
                SSLContext sslcontext = SSLContext.getInstance("TLS");
                sslcontext.init(null, new TrustManager[] { noCaTrustManager }, null);
                sslsf = new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE);
            } else {
                SSLContextBuilder sslContextBuilder = SSLContexts.custom();
                if (trustStoreFile != null) {
                    sslContextBuilder.loadTrustMaterial(new File(trustStoreFile), this.trustStorePassword != null ? this.trustStorePassword.toCharArray() : null);
                }
                SSLContext sslContext = sslContextBuilder.build();
                sslsf = new SSLConnectionSocketFactory(sslContext, new DefaultHostnameVerifier());
            }
            registry = RegistryBuilder.<ConnectionSocketFactory>create().register(HTTPS_PROTOCOL, sslsf).build();
        } catch (NoSuchAlgorithmException e) {
            throw new Error(NO_TLS_ERROR, e);
        } catch (KeyManagementException e) {
            throw new Error(BAD_KEY_ERROR, e);
        } catch (KeyStoreException e) {
            throw new Error(KEY_STORE_ERROR, e);
        } catch (FileNotFoundException e) {
            throw new Error(KEY_STORE_FILE_NOT_FOUND_ERROR, e);
        } catch (CertificateException e) {
            throw new Error(CERTIFICATE_ERROR, e);
        } catch (IOException e) {
            throw new Error(IO_ERROR, e);
        }
    } else {
        throw new Error(BAD_PROTOCOL_ERROR + protocol);
    }
    return registry;
}
Also used : LayeredConnectionSocketFactory(org.apache.http.conn.socket.LayeredConnectionSocketFactory) FileNotFoundException(java.io.FileNotFoundException) Error(org.ovirt.engine.sdk4.Error) CertificateException(java.security.cert.CertificateException) Registry(org.apache.http.config.Registry) SSLContext(javax.net.ssl.SSLContext) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) KeyStoreException(java.security.KeyStoreException) IOException(java.io.IOException) SSLConnectionSocketFactory(org.apache.http.conn.ssl.SSLConnectionSocketFactory) KeyManagementException(java.security.KeyManagementException) TrustManager(javax.net.ssl.TrustManager) PlainConnectionSocketFactory(org.apache.http.conn.socket.PlainConnectionSocketFactory) SSLConnectionSocketFactory(org.apache.http.conn.ssl.SSLConnectionSocketFactory) LayeredConnectionSocketFactory(org.apache.http.conn.socket.LayeredConnectionSocketFactory) ConnectionSocketFactory(org.apache.http.conn.socket.ConnectionSocketFactory) DefaultHostnameVerifier(org.apache.http.conn.ssl.DefaultHostnameVerifier) SSLContextBuilder(org.apache.http.ssl.SSLContextBuilder) File(java.io.File)

Example 48 with Connection

use of org.ovirt.engine.sdk4.Connection in project ovirt-engine-sdk-java by oVirt.

the class HttpConnection method followLink.

@Override
public <TYPE> TYPE followLink(TYPE object) {
    if (!isLink(object)) {
        throw new Error("Can't follow link because object don't have any");
    }
    String href = getHref(object);
    if (href == null) {
        throw new Error("Can't follow link because the 'href' attribute does't have a value");
    }
    try {
        URL url = new URL(getUrl());
        String prefix = url.getPath();
        if (!prefix.endsWith("/")) {
            prefix += "/";
        }
        if (!href.startsWith(prefix)) {
            throw new Error("The URL '" + href + "' isn't compatible with the base URL of the connection");
        }
        // Get service based on path
        String path = href.substring(prefix.length());
        Service service = systemService().service(path);
        // Obtain method which provides result object and invoke it:
        Method get;
        if (object instanceof ListWithHref) {
            get = service.getClass().getMethod("list");
        } else {
            get = service.getClass().getMethod("get");
        }
        Object getRequest = get.invoke(service);
        Method send = getRequest.getClass().getMethod("send");
        send.setAccessible(true);
        Object getResponse = send.invoke(getRequest);
        Method obtainObject = getResponse.getClass().getDeclaredMethods()[0];
        obtainObject.setAccessible(true);
        return (TYPE) obtainObject.invoke(getResponse);
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        throw new Error(String.format("Unexpected error while following link \"%1$s\"", href), ex);
    } catch (MalformedURLException ex) {
        throw new Error(String.format("Error while creating URL \"%1$s\"", getUrl()), ex);
    }
}
Also used : ListWithHref(org.ovirt.api.metamodel.runtime.util.ListWithHref) MalformedURLException(java.net.MalformedURLException) Error(org.ovirt.engine.sdk4.Error) SystemService(org.ovirt.engine.sdk4.services.SystemService) Service(org.ovirt.engine.sdk4.Service) Method(java.lang.reflect.Method) URL(java.net.URL) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 49 with Connection

use of org.ovirt.engine.sdk4.Connection in project ovirt-engine-sdk-java by oVirt.

the class AddUserPublicSshKey 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 the users:
    UsersService usersService = systemService.usersService();
    // Find the user:
    User user = usersService.list().search("name=myuser").send().users().get(0);
    // Get the reference to the service that manages the user that we found in the previous step:
    UserService userService = usersService.userService(user.id());
    // Get a reference to the service that manages the public SSH keys of the user:
    SshPublicKeysService keysService = userService.sshPublicKeysService();
    // Add a new SSH public key:
    keysService.add().key(sshPublicKey().content("ssh-rsa AAA...mu9 myuser@example.com")).send();
    // Note that the above operation will fail because the example SSH public key is not valid, make sure to use a
    // valid key.
    // Close the connection to the server:
    connection.close();
}
Also used : UsersService(org.ovirt.engine.sdk4.services.UsersService) User(org.ovirt.engine.sdk4.types.User) SystemService(org.ovirt.engine.sdk4.services.SystemService) UserService(org.ovirt.engine.sdk4.services.UserService) Connection(org.ovirt.engine.sdk4.Connection) SshPublicKeysService(org.ovirt.engine.sdk4.services.SshPublicKeysService)

Example 50 with Connection

use of org.ovirt.engine.sdk4.Connection in project ovirt-engine-sdk-java by oVirt.

the class AddVmDisk 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();
    // Locate the virtual machines service and use it to find the virtual machine:
    VmsService vmsService = connection.systemService().vmsService();
    Vm vm = vmsService.list().search("name=myvm").send().vms().get(0);
    // Locate the service that manages the disk attachments of the virtual machine:
    DiskAttachmentsService diskAttachmentsService = vmsService.vmService(vm.id()).diskAttachmentsService();
    // Use the `add` method of the disk attachments service to add the disk. Note that the size of the disk,
    // the `provionedSize` attribute, is specified in bytes, so to create a disk of 10 GiB the value should
    // be 10 * 2^30.
    DiskAttachment diskAttachment = diskAttachmentsService.add().attachment(diskAttachment().disk(disk().name("mydisk").description("My disk").format(DiskFormat.COW).provisionedSize(BigInteger.valueOf(10).multiply(BigInteger.valueOf(2).pow(30))).storageDomains(storageDomain().name("mydata"))).interface_(DiskInterface.VIRTIO).bootable(false).active(true)).send().attachment();
    // Wait till the disk is OK:
    DisksService disksService = connection.systemService().disksService();
    DiskService diskService = disksService.diskService(diskAttachment.disk().id());
    for (; ; ) {
        Thread.sleep(5 * 1000);
        Disk disk = diskService.get().send().disk();
        if (disk.status() == DiskStatus.OK) {
            break;
        }
    }
    // Close the connection to the server:
    connection.close();
}
Also used : DiskAttachment(org.ovirt.engine.sdk4.types.DiskAttachment) Vm(org.ovirt.engine.sdk4.types.Vm) DisksService(org.ovirt.engine.sdk4.services.DisksService) Connection(org.ovirt.engine.sdk4.Connection) VmsService(org.ovirt.engine.sdk4.services.VmsService) Disk(org.ovirt.engine.sdk4.types.Disk) DiskService(org.ovirt.engine.sdk4.services.DiskService) DiskAttachmentsService(org.ovirt.engine.sdk4.services.DiskAttachmentsService)

Aggregations

Connection (org.ovirt.engine.sdk4.Connection)63 Connection (com.trilead.ssh2.Connection)52 IOException (java.io.IOException)41 VmsService (org.ovirt.engine.sdk4.services.VmsService)33 Session (com.trilead.ssh2.Session)32 Vm (org.ovirt.engine.sdk4.types.Vm)30 InputStream (java.io.InputStream)25 VmService (org.ovirt.engine.sdk4.services.VmService)18 SystemService (org.ovirt.engine.sdk4.services.SystemService)14 StorageDomainsService (org.ovirt.engine.sdk4.services.StorageDomainsService)12 StorageDomain (org.ovirt.engine.sdk4.types.StorageDomain)12 Connection (okhttp3.Connection)11 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)10 Request (okhttp3.Request)10 File (java.io.File)9 Response (okhttp3.Response)9 Connection (ch.ethz.ssh2.Connection)8 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)8 MediaType (okhttp3.MediaType)8 RequestBody (okhttp3.RequestBody)8