/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.vipr.client;
import com.emc.vipr.client.core.Backup;
import com.emc.vipr.client.impl.RestClient;
import com.emc.vipr.client.system.CallHome;
import com.emc.vipr.client.system.Config;
import com.emc.vipr.client.system.Control;
import com.emc.vipr.client.system.HealthMonitor;
import com.emc.vipr.client.system.IPsec;
import com.emc.vipr.client.system.Licensing;
import com.emc.vipr.client.system.Logs;
import com.emc.vipr.client.system.Password;
import com.emc.vipr.client.system.Upgrade;
public class ViPRSystemClient {
protected RestClient client;
// for easy mocking in UT
public ViPRSystemClient() {}
/**
* Convenience method for calling constructor with new ClientConfig().withHost(host)
*
* @param host Hostname or IP address for the Virtual IP of the target environment.
*/
public ViPRSystemClient(String host) {
this(new ClientConfig().withHost(host));
}
/**
* Convenience method for calling constructor with new ClientConfig().withHost(host).withIgnoringCertificates(ignoreCertificates)
*
* @param host Hostname or IP address for the Virtual IP of the target environment.
* @param ignoreCertificates True if SSL certificates should be ignored.
*/
public ViPRSystemClient(String host, boolean ignoreCertificates) {
this(new ClientConfig().withHost(host).withIgnoringCertificates(ignoreCertificates));
}
public ViPRSystemClient(ClientConfig config) {
this.client = config.newClient();
}
/**
* Sets the authentication token to be used for this client.
*
* @param authToken The authentication token to set.
*/
public void setAuthToken(String authToken) {
client.setAuthToken(authToken);
}
/**
* Sets the authentication token and returns the updated client.
*
* @see #setAuthToken(String)
* @param token The authentication token to set.
* @return The updated client.
*/
public ViPRSystemClient withAuthToken(String token) {
setAuthToken(token);
return this;
}
/**
* Performs an authentication login and returns the updated client.
*
* @see AuthClient#login(String, String)
* @param username The username.
* @param password The password.
* @return The updated client.
*/
public ViPRSystemClient withLogin(String username, String password) {
auth().login(username, password);
return this;
}
public AuthClient auth() {
return new AuthClient(client);
}
public CallHome callHome() {
return new CallHome(client);
}
public Config config() {
return new Config(client);
}
public Control control() {
return new Control(client);
}
public HealthMonitor health() {
return new HealthMonitor(client);
}
public Licensing license() {
return new Licensing(client);
}
public Logs logs() {
return new Logs(client);
}
public Password password() {
return new Password(client);
}
public Upgrade upgrade() {
return new Upgrade(client);
}
public Backup backup(){
return new Backup(client);
}
public IPsec ipsec(){
return new IPsec(client);
}
}