/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.vipr.client.core; import com.emc.storageos.model.dr.DRNatCheckParam; import com.emc.storageos.model.dr.DRNatCheckResponse; import com.emc.storageos.model.dr.SiteActive; import com.emc.storageos.model.dr.SiteAddParam; import com.emc.storageos.model.dr.SiteConfigParam; import com.emc.storageos.model.dr.SiteConfigRestRep; import com.emc.storageos.model.dr.SiteDetailRestRep; import com.emc.storageos.model.dr.SiteErrorResponse; import com.emc.storageos.model.dr.SiteIdListParam; import com.emc.storageos.model.dr.SiteList; import com.emc.storageos.model.dr.SiteRemoved; import com.emc.storageos.model.dr.SiteRestRep; import com.emc.storageos.model.dr.SiteUpdateParam; import com.emc.vipr.client.core.impl.PathConstants; import com.emc.vipr.client.impl.RestClient; import com.sun.jersey.api.client.ClientResponse; /** * Disaster recovery primary/standby sites * <p> * Base URL: <tt>/site</tt> */ public class Site { private RestClient client; public Site(RestClient client) { this.client = client; } public SiteRestRep createSite(SiteAddParam input) { return client.post(SiteRestRep.class, input, PathConstants.SITE_URL); } public boolean isLocalSiteRemoved() { SiteRemoved response = client.get(SiteRemoved.class, PathConstants.SITE_URL + "/islocalsiteremoved"); return response.getIsRemoved(); } public ClientResponse deleteSite(SiteIdListParam uuids) { return client.post(ClientResponse.class, uuids, PathConstants.SITE_URL + "/remove"); } public ClientResponse pauseSite(SiteIdListParam uuids) { return client.post(ClientResponse.class, uuids, PathConstants.SITE_URL + "/pause/"); } public SiteRestRep resumeSite(String uuid) { return client.post(SiteRestRep.class, PathConstants.SITE_URL + "/" + uuid + "/resume/"); } public SiteRestRep retrySite(String uuid) { return client.post(SiteRestRep.class, PathConstants.SITE_URL + "/" + uuid + "/retry/"); } public ClientResponse syncSite(String uuid, SiteConfigParam input) { return client.put(ClientResponse.class, input, PathConstants.SITE_URL + "/" + uuid + "/initstandby/"); } public SiteRestRep getSite(String uuid) { return client.get(SiteRestRep.class, PathConstants.SITE_URL + "/" + uuid); } public SiteRestRep getLocalSite() { return client.get(SiteRestRep.class, PathConstants.SITE_URL + "/local"); } public SiteList listAllSites() { return client.get(SiteList.class, PathConstants.SITE_URL); } public SiteActive checkIsActive() { return client.get(SiteActive.class, PathConstants.SITE_URL + "/active"); } public SiteConfigRestRep getStandbyConfig() { return client.get(SiteConfigRestRep.class, PathConstants.SITE_URL + "/localconfig"); } public DRNatCheckResponse checkIfBehindNat(DRNatCheckParam checkParam) { return client.post(DRNatCheckResponse.class, checkParam, PathConstants.SITE_URL + "/natcheck"); } public SiteErrorResponse getSiteError(String uuid) { return client.get(SiteErrorResponse.class, PathConstants.SITE_URL + "/" + uuid + "/error"); } public SiteDetailRestRep getSiteDetails(String uuid) { return client.get(SiteDetailRestRep.class, PathConstants.SITE_URL + "/" + uuid + "/details"); } public ClientResponse doSwitchover(String uuid) { return client.post(ClientResponse.class, PathConstants.SITE_URL + "/" + uuid + "/switchover"); } public ClientResponse doFailover(String uuid) { return client.post(ClientResponse.class, PathConstants.SITE_URL + "/" + uuid + "/failover"); } public ClientResponse updateSite(String uuid, SiteUpdateParam updateParam) { return client.put(ClientResponse.class, updateParam, PathConstants.SITE_URL + "/" + uuid); } }