All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.spotinst.sdkjava.model.SpotinstElastigroupRepo Maven / Gradle / Ivy

There is a newer version: 1.0.121
Show newest version
package com.spotinst.sdkjava.model;

import com.spotinst.sdkjava.enums.ProcessNameEnum;
import com.spotinst.sdkjava.exception.ExceptionHelper;
import com.spotinst.sdkjava.exception.SpotinstHttpException;
import com.spotinst.sdkjava.model.api.elastigroup.aws.*;
import com.spotinst.sdkjava.model.bl.elastigroup.aws.*;
import com.spotinst.sdkjava.model.converters.elastigroup.aws.ItfMigrationConverter;
import com.spotinst.sdkjava.model.converters.elastigroup.aws.ScalingPoliciesSuspensionConverter;
import com.spotinst.sdkjava.model.converters.elastigroup.aws.StatefulElastigroupConverter;
import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceLockRequest;
import com.spotinst.sdkjava.model.requests.elastigroup.ElastigroupInstanceUnLockRequest;
import com.spotinst.sdkjava.model.requests.elastigroup.aws.*;

import java.util.List;
import java.util.stream.Collectors;

/**
 * Created by talzur on 11/01/2017.
 */
class SpotinstElastigroupRepo implements ISpotinstElastigroupRepo {

    @Override
    public RepoGenericResponse create(Elastigroup elastigroupToCreate, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroup apiElastigroupToCreate = ElastigroupConverter.toDal(elastigroupToCreate);
            ApiElastigroup apiCreatedElastigroup =
                    SpotinstElastigroupService.createElastigroup(apiElastigroupToCreate, authToken, account);
            Elastigroup createdElastigroup = ElastigroupConverter.toBl(apiCreatedElastigroup);
            retVal = new RepoGenericResponse<>(createdElastigroup);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse delete(String identifier, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean updated = SpotinstElastigroupService.deleteElastigroup(identifier, authToken, account);
            retVal = new RepoGenericResponse<>(updated);

        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse delete(String elastigroupId, String authToken, String account,
                                               ApiDeleteGroupRequest deleteRequest) {
        RepoGenericResponse retVal;

        try {
            Boolean updated =
                    SpotinstElastigroupService.deleteElastigroup(elastigroupId, authToken, account, deleteRequest);
            retVal = new RepoGenericResponse<>(updated);

        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse detachInstances(String elastigroupId,
                                                        ElastigroupDetachInstancesRequest detachRequest,
                                                        String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiDetachInstancesRequest apiDetachRequest = ApiDetachInstancesRequestConverter.toDal(detachRequest);
            SpotinstElastigroupService.detachInstances(elastigroupId, apiDetachRequest, authToken, account);
            retVal = new RepoGenericResponse<>(new Boolean(true));
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse update(String elastigroupId, Elastigroup groupUpdate, String authToken,
                                               String account) {
        RepoGenericResponse retVal;

        ApiElastigroup apiElastigroup = ElastigroupConverter.toDal(groupUpdate);

        try {
            Boolean success = SpotinstElastigroupService.updateGroup(elastigroupId, apiElastigroup, authToken, account);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse get(String elastigroupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroup apiElastigroup = SpotinstElastigroupService.getGroup(elastigroupId, authToken, account);
            Elastigroup    elastigroup    = ElastigroupConverter.toBl(apiElastigroup);
            retVal = new RepoGenericResponse<>(elastigroup);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse> getAll(GroupFilter filter, String authToken, String account) {
        RepoGenericResponse> retVal;

        try {
            List apiElastigroups = SpotinstElastigroupService.getAllGroups(filter, authToken, account);
            List elastigroups =
                    apiElastigroups.stream().map(ElastigroupConverter::toBl).collect(Collectors.toList());
            retVal = new RepoGenericResponse<>(elastigroups);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    /**
     * This function is used to scale up an Elastigroup. It is called from the SpotinstElastigroupClient.scaleUp() function
     * It sends the request to SpotinstElastigroupService.scaleGroupUp() then formats the response to get a Scaling Response
     *
     * @param scalingRequest ElastigroupScalingRequest object that is sent from SpotinstElastigroupClient
     * @param authToken      User Spotinst API token
     * @param account        User Spotinst account ID
     * @return elastigroupScalingResponse
     */
    @Override
    public RepoGenericResponse scaleUp(ElastigroupScalingRequest scalingRequest,
                                                                   String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroupScalingResponse apiElastigroupScalingResponse =
                    SpotinstElastigroupService.scaleGroupUp(scalingRequest, authToken, account);
            // Convert
            ElastigroupScalingResponse elastigroupScalingResponse =
                    ApiElastigroupScalingResponseConverter.dalToBl(apiElastigroupScalingResponse);
            retVal = new RepoGenericResponse<>(elastigroupScalingResponse);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    /**
     * This function is used to scale down an Elastigroup. It is called from the SpotinstElastigroupClient.scaleDown() function
     * It sends the request to SpotinstElastigroupService.scaleGroupDown() then formats the response to get a Scaling Response
     *
     * @param scalingRequest ElastigroupScalingRequest object that is sent from SpotinstElastigroupClient
     * @param authToken      User Spotinst API token
     * @param account        User Spotinst account ID
     * @return elastigroupScalingResponse
     */
    @Override
    public RepoGenericResponse scaleDown(ElastigroupScalingRequest scalingRequest,
                                                                     String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroupScalingResponse apiElastigroupScalingResponse =
                    SpotinstElastigroupService.scaleGroupDown(scalingRequest, authToken, account);
            // Convert
            ElastigroupScalingResponse elastigroupScalingResponse =
                    ApiElastigroupScalingResponseConverter.dalToBl(apiElastigroupScalingResponse);
            retVal = new RepoGenericResponse<>(elastigroupScalingResponse);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse clone(String sourceElastigroupId, Elastigroup groupModifications,
                                                  String authToken, String account) {
        RepoGenericResponse retVal;
        ApiElastigroup                   apiGroupModifications = ElastigroupConverter.toDal(groupModifications);

        try {
            ApiElastigroup apiClonedElastigroup = SpotinstElastigroupService
                    .cloneGroup(sourceElastigroupId, apiGroupModifications, authToken, account);
            Elastigroup clonedElastigroup = ElastigroupConverter.toBl(apiClonedElastigroup);
            retVal = new RepoGenericResponse<>(clonedElastigroup);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse enterInstanceStandby(String instanceId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean success = SpotinstElastigroupService.enterInstanceStandby(instanceId, authToken, account);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse exitInstanceStandby(String instanceId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean success = SpotinstElastigroupService.exitInstanceStandby(instanceId, authToken, account);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }


    @Override
    public RepoGenericResponse suspendProcesses(String groupId, List suspensions,
                                                                    String authToken, String account) {
        RepoGenericResponse retVal;
        ApiSuspendProcessesRequest              request = new ApiSuspendProcessesRequest();

        List apiSuspensions =
                suspensions.stream().map(ApiProcessSuspensionConverter::toDal).collect(Collectors.toList());
        request.setSuspensions(apiSuspensions);

        try {
            ApiSuspendedProcesses apiResponse =
                    SpotinstElastigroupService.suspendProcesses(groupId, request, authToken, account);
            SuspendedProcesses suspendedProcesses = ApiProcessSuspensionConverter.toBl(apiResponse);

            retVal = new RepoGenericResponse<>(suspendedProcesses);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse removeSuspensions(String elastigroupId,
                                                                     List processes, String authToken,
                                                                     String account) {
        RepoGenericResponse retVal;
        ApiRemoveSuspensionsRequest             request = new ApiRemoveSuspensionsRequest();

        List processNames = processes.stream().map(ProcessNameEnum::getName).collect(Collectors.toList());
        request.setProcesses(processNames);

        try {
            ApiSuspendedProcesses apiResponse =
                    SpotinstElastigroupService.removeSuspensions(elastigroupId, request, authToken, account);
            SuspendedProcesses suspendedProcesses = ApiProcessSuspensionConverter.toBl(apiResponse);

            retVal = new RepoGenericResponse<>(suspendedProcesses);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse getSuspendedProcesses(String elastigroupId, String authToken,
                                                                         String account) {
        RepoGenericResponse retVal;

        try {
            ApiSuspendedProcesses apiResponse =
                    SpotinstElastigroupService.getSuspendedProcesses(elastigroupId, authToken, account);
            SuspendedProcesses suspendedProcesses = ApiProcessSuspensionConverter.toBl(apiResponse);

            retVal = new RepoGenericResponse<>(suspendedProcesses);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse lockInstance(ElastigroupInstanceLockRequest lockRequest,
                                                     String authToken, String instanceId) {
        RepoGenericResponse retVal;

        try {
            Boolean success = SpotinstElastigroupService.lockInstance(lockRequest, authToken, instanceId);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse unlockInstance(ElastigroupInstanceUnLockRequest unlockRequest,
                                                       String authToken, String instanceId) {
        RepoGenericResponse retVal;

        try {
            Boolean success = SpotinstElastigroupService.unlockInstance(unlockRequest, authToken, instanceId);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }


    @Override
    public RepoGenericResponse simulateInstanceInterruption(String authToken, String account, List instanceIds) {
        RepoGenericResponse retVal;

        try {
            Boolean success = SpotinstElastigroupService.simulateInstanceInterruption(authToken, account, instanceIds);
            retVal = new RepoGenericResponse<>(success);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }


    @Override
    public RepoGenericResponse suspendScalingPolicies(String elastiGroupId, String policyName,
                                                                              ScalingPolicySuspension suspensions,
                                                                              String authToken, String account) {
        RepoGenericResponse retVal;

        ApiScalingPolicySuspension apiSuspensions = ScalingPoliciesSuspensionConverter.toDal(suspensions);

        try {
            ApiSuspendedScalingPolicy apiResponse = SpotinstElastigroupService
                    .suspendScalingPolicies(elastiGroupId, policyName, apiSuspensions, authToken, account);
            SuspendedScalingPolicy suspendedProcesses = ScalingPoliciesSuspensionConverter.toBl(apiResponse);

            retVal = new RepoGenericResponse<>(suspendedProcesses);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }
        return retVal;
    }

    @Override
    public RepoGenericResponse getAllSuspendedScalingPolicies(String elastiGroupId,
                                                                                            String authToken,
                                                                                            String account) {
        RepoGenericResponse retVal;

        try {
            ApiSuspendedScalingPoliciesList suspendedApiResponse =
                    SpotinstElastigroupService.getSuspendedScalingPolicies(elastiGroupId, authToken, account);

            SuspendedScalingPoliciesList allSuspendedScalingPolicies =
                    ScalingPoliciesSuspensionConverter.toBl(suspendedApiResponse);

            retVal = new RepoGenericResponse<>(allSuspendedScalingPolicies);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }
        return retVal;
    }

    @Override
    public RepoGenericResponse removeSuspendedScalingPolicies(String elastiGroupId, String policyName,
                                                                       String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean removeStatus =
                    SpotinstElastigroupService.removeSuspendScalingPolicies(elastiGroupId, policyName, authToken, account);
            retVal = new RepoGenericResponse<>(removeStatus);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }
        return retVal;
    }

    @Override
    public RepoGenericResponse startDeployment(String elastigroupId, ElastigroupStartDeployment elastiGroupDeployment,
                                                                                   String authToken, String account) {
       RepoGenericResponse retVal;

        try {

            ApiElastigroupStartDeploymentResponse apiElastigroupDeployment = SpotinstElastigroupService
                    .startDeployment(elastigroupId, elastiGroupDeployment, authToken, account);

            ElastigroupStartDeploymentResponse
                    startDeploymentResponse =  ElastigroupConverter.toBl(apiElastigroupDeployment);

            retVal = new RepoGenericResponse<>(startDeploymentResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse stopDeployment(
            ElastigroupStopDeploymentRequest elastiGroupDeployment, String elastigroupId, String deploymentId,
            String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupStopDeploymentResponse apiStopDeployment = SpotinstElastigroupService
                    .stopDeployment(elastiGroupDeployment, elastigroupId, deploymentId, authToken, account);

            ElastigroupStopDeploymentResponse stopDeploymentResponse = ElastigroupConverter.toBl(apiStopDeployment);
            retVal = new RepoGenericResponse<>(stopDeploymentResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse getDeploymentStatus(String elastigroupId, String deploymentId,
                                                                                           String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupGetDeploymentStatusResponse apiElastigroupGetDeploymentStatusResponse = SpotinstElastigroupService
                    .getDeploymentStatus(elastigroupId, deploymentId, authToken, account);

            ElastigroupGetDeploymentStatusResponse
                    getDeploymentResponse =  ElastigroupConverter.toBl(apiElastigroupGetDeploymentStatusResponse);

            retVal = new RepoGenericResponse<>(getDeploymentResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse> getGroupDeploymentStatus(String elastigroupId, String authToken, String account) {
        RepoGenericResponse> retVal ;

        try {

            List apiElastigroupGetGroupDeploymentStatusResponse = SpotinstElastigroupService
                    .getGroupDeploymentStatus(elastigroupId, authToken, account);

            List getGroupDeploymentResponse =
                    apiElastigroupGetGroupDeploymentStatusResponse.stream().map(ElastigroupConverter::toBl).collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(getGroupDeploymentResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }


    @Override
    public RepoGenericResponse applyDeploymentAction(
            ElastigroupDeploymentStrategyOnFailure elastigroupGetDeploymentActionRequest, String elastigroupId, String deploymentId , String authToken, String account) {
        RepoGenericResponse retVal ;

        try {

            ApiElastigroupGetDeploymentActionResponse apiElastigroupGetDeploymentActionResponse = SpotinstElastigroupService
                    .applyDeploymentAction(elastigroupGetDeploymentActionRequest, elastigroupId, deploymentId, authToken, account);

            ElastigroupGetDeploymentActionResponse
                    getDeploymentActionResponse =  ElastigroupConverter.toBl(apiElastigroupGetDeploymentActionResponse);

            retVal = new RepoGenericResponse<>(getDeploymentActionResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse> getItfMigrationRulesStatus(String elastiGroupId,
                                                                                         String authToken,
                                                                                         String account) {
        RepoGenericResponse> retVal;

        try {
            List getMigrationApiResponse =
                    SpotinstElastigroupService.getItfMigrationRulesStatus(elastiGroupId, authToken, account);

            List list =
                    getMigrationApiResponse.stream().map(ItfMigrationConverter::toBl)
                                            .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(list);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }
        return retVal;
    }

    @Override
    public RepoGenericResponse retryItfMigration(String elastiGroupId, RetryItfMigrationRequest request,
                                                                       String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiRetryItfMigrationRequest apiRequest = ItfMigrationConverter.toDal(request);
            Boolean retryItfMigrationResponse =
                    SpotinstElastigroupService.retryItfMigration(elastiGroupId,apiRequest, authToken, account);

            retVal = new RepoGenericResponse<>(retryItfMigrationResponse);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }
        return retVal;
    }

    @Override
    public RepoGenericResponse updateCapacity(String elastigroupId, ElastigroupUpdateCapacityConfiguration elastiGroupUpdateCapacity,
                                                       String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean updateCapacityResponse = SpotinstElastigroupService
                    .updateCapacity(elastigroupId, elastiGroupUpdateCapacity, authToken, account);

            retVal = new RepoGenericResponse<>(updateCapacityResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse importEC2Instance(ElastigroupImportEC2Instance elastigroupImportInstance, String instanceId, String region, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            
            ApiElastigroup importEC2Instance = SpotinstElastigroupService
                    .importEC2Instance(elastigroupImportInstance, instanceId, region, authToken, account);
            Elastigroup importedEC2Instance = ElastigroupConverter.toBl(importEC2Instance);

            retVal = new RepoGenericResponse<>(importedEC2Instance);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse pauseStatefulInstance(String elastigroupId, String statefulInstanceId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            Boolean pauseStatefulInstanceResponse = SpotinstElastigroupService
                    .pauseStatefulInstance(elastigroupId, statefulInstanceId, authToken, account);

            retVal = new RepoGenericResponse<>(pauseStatefulInstanceResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse resumeStatefulInstance(String elastigroupId, String statefulInstanceId,
                                                       String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean resumeStatefulInstanceResponse = SpotinstElastigroupService
                    .resumeStatefulInstance(elastigroupId, statefulInstanceId, authToken, account);

            retVal = new RepoGenericResponse<>(resumeStatefulInstanceResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse recycleStatefulInstance(String elastigroupId, String statefulInstanceId,
                                                               String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean recycleStatefulInstanceResponse = SpotinstElastigroupService
                    .recycleStatefulInstance(elastigroupId, statefulInstanceId, authToken, account);

            retVal = new RepoGenericResponse<>(recycleStatefulInstanceResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse deallocateStatefulInstance(String elastigroupId, String statefulInstanceId,
                                                                String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean deallocateStatefulInstanceResponse = SpotinstElastigroupService
                    .deallocateStatefulInstance(elastigroupId, statefulInstanceId, authToken, account);

            retVal = new RepoGenericResponse<>(deallocateStatefulInstanceResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse> listStatefulInstances(String elastigroupId, String authToken, String account) {
        RepoGenericResponse> retVal;

        try {

            List listStatefulInstances = SpotinstElastigroupService
                    .listStatefulInstances(elastigroupId, authToken, account);
            List statefulInstances = listStatefulInstances.stream().map(StatefulElastigroupConverter::toBl)
                                                                                .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(statefulInstances);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse deleteVolumeInStatefulInstance(String elastigroupId, String statefulInstanceId, String volumeId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean deleteVolumeInStatefulInstanceResponse = SpotinstElastigroupService
                    .deleteVolumeInStatefulInstance(elastigroupId, statefulInstanceId, volumeId, authToken, account);

            retVal = new RepoGenericResponse<>(deleteVolumeInStatefulInstanceResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse> getElastilog(ElastigroupGetElastilogRequest elastigroupGetElastilogRequest, String elastigroupId, String authToken) {
        RepoGenericResponse> retVal;

        try {

            List getLogs = SpotinstElastigroupService
                    .getElastilog(elastigroupGetElastilogRequest, elastigroupId, authToken);
            List getAllLogs = getLogs.stream().map(StatefulElastigroupConverter::toBl)
                    .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(getAllLogs);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse importASG(ImportASGRequest importASGRequest, String authToken) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroup importASG = SpotinstElastigroupService
                    .importASG(importASGRequest, authToken);
            Elastigroup importedASG = ElastigroupConverter.toBl(importASG);

            retVal = new RepoGenericResponse<>(importedASG);
          } 
          catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

   @Override  
   public RepoGenericResponse> getInstanceTypesByRegion(String region, String authToken, String account) {
        RepoGenericResponse> retVal;

        try {

            List getInstanceTypes = SpotinstElastigroupService
                    .getInstanceTypesByRegion(region, authToken, account);
            List getAllInstanceTypes = getInstanceTypes.stream().map(ElastigroupConverter::toBl)
                    .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(getAllInstanceTypes);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse> getSuggestedInstanceTypes(GetSuggestedInstanceTypeRequest suggestedInstanceType, String authToken, String account) {
        RepoGenericResponse> retVal;

        try {

            List getInstanceTypes = SpotinstElastigroupService
                    .getSuggestedInstanceTypes(suggestedInstanceType, authToken, account);
            List getAllInstanceTypes = getInstanceTypes.stream().map(ElastigroupConverter::toBl)
                    .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(getAllInstanceTypes);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse initiateClusterRollInEGWithECS(ElastigroupEcsInitiateRoll rollRequest, String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupEcsInitiateRoll apiRollRequest = ElastigroupConverter.toDal(rollRequest);

            ApiElastigroupEcsClusterRollResponse rollResponse = SpotinstElastigroupService.initiateClusterRollInEGWithECS(apiRollRequest, groupId, authToken, account);
            ElastigroupEcsClusterRollResponse getRollResponse = ElastigroupConverter.toBl(rollResponse);

            retVal = new RepoGenericResponse<>(getRollResponse);
        }

        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse> listECSClusterRollsPerEG(String groupId, String authToken, String account) {
        RepoGenericResponse> retVal;

        try {

            List apiListRolls = SpotinstElastigroupService.listECSClusterRollsPerEG(groupId, authToken, account);
            List listRollsResponse = apiListRolls.stream().map(ElastigroupConverter::toBl)
                    .collect(Collectors.toList());

            retVal = new RepoGenericResponse<>(listRollsResponse);
        }

        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse getECSClusterRollinEG(String groupId, String rollId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupEcsClusterRollResponse apiGetRoll = SpotinstElastigroupService.getECSClusterRollinEG(groupId, rollId, authToken, account);
            ElastigroupEcsClusterRollResponse getRollResponse = ElastigroupConverter.toBl(apiGetRoll);

            retVal = new RepoGenericResponse<>(getRollResponse);
        }

        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse updateECSClusterRollinEG(ElastigroupEcsUpdateRollRequest updateRollRequest, String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupEcsClusterRollResponse apiGetRoll = SpotinstElastigroupService.updateECSClusterRollinEG(updateRollRequest, groupId, authToken, account);
            ElastigroupEcsClusterRollResponse updateRollResponse = ElastigroupConverter.toBl(apiGetRoll);

            retVal = new RepoGenericResponse<>(updateRollResponse);
        }

        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse importStatefulInstance(ElastigroupImportStatefulInstance elastigroupImportInstance, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupImportStatefulInstanceResponse importInstance = SpotinstElastigroupService
                    .importStatefulInstance(elastigroupImportInstance, authToken, account);
            ElastigroupImportStatefulInstanceResponse importStatefulInstance = StatefulElastigroupConverter.toBl(importInstance);

            retVal = new RepoGenericResponse<>(importStatefulInstance);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse getStatefulImportStatus(String statefulMigrationGroupID, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupGetImportStatefulStatusResponse statefulInstanceStatus = SpotinstElastigroupService
                    .getStatefulImportStatus(statefulMigrationGroupID, authToken, account);
            ElastigroupGetImportStatefulStatusResponse importStatus = StatefulElastigroupConverter.toBl(statefulInstanceStatus);

            retVal = new RepoGenericResponse<>(importStatus);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse terminateStatefulInstanceImport(ElastigroupTerminateStatefulInstanceImportRequest elastigroupTerminateReq, String statefulMigrationGroupID, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupTerminateStatefulInstanceImportResponse terminateStatus = SpotinstElastigroupService
                    .terminateStatefulInstanceImport(elastigroupTerminateReq, statefulMigrationGroupID, authToken, account);
            ElastigroupTerminateStatefulInstanceImportResponse importStatus = StatefulElastigroupConverter.toBl(terminateStatus);

            retVal = new RepoGenericResponse<>(importStatus);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse deleteStatefulInstanceImport(String statefulMigrationGroupID, String authToken, String account) {
        RepoGenericResponse retVal;

        try {

            ApiElastigroupTerminateStatefulInstanceImportResponse terminateStatus = SpotinstElastigroupService
                    .deleteStatefulInstanceImport(statefulMigrationGroupID, authToken, account);
            ElastigroupTerminateStatefulInstanceImportResponse importStatus = StatefulElastigroupConverter.toBl(terminateStatus);

            retVal = new RepoGenericResponse<>(importStatus);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;

    }

    @Override
    public RepoGenericResponse createInstanceSignal(ElastigroupCreateInstanceSignal elastigroupCreateInstanceSignalReq, String authToken, String account) {
        RepoGenericResponse retVal;

        try {


            Boolean elastigroupCreateInstanceSignalResponse = SpotinstElastigroupService
                    .createInstanceSignal(elastigroupCreateInstanceSignalReq, authToken, account);

            retVal = new RepoGenericResponse<>(elastigroupCreateInstanceSignalResponse);
        }

        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse getInstanceStatus(String instanceId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroupGetInstanceStatusResponse apiInstanceStatus = SpotinstElastigroupService.getInstanceStatus(instanceId, authToken, account);
            ElastigroupGetInstanceStatusResponse    instanceStatus    = ElastigroupConverter.toBl(apiInstanceStatus);
            retVal = new RepoGenericResponse<>(instanceStatus);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    public RepoGenericResponse amiBackup(String elastigroupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean amiBackupResponse = SpotinstElastigroupService
                    .amiBackup(elastigroupId, authToken, account);

            retVal = new RepoGenericResponse<>(amiBackupResponse);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse startBeanstalkMaintenance(String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean apiResponse = SpotinstElastigroupService
                    .startBeanstalkMaintenance(groupId, authToken, account);

            retVal = new RepoGenericResponse<>(apiResponse);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }
    
    @Override
    public RepoGenericResponse finishBeanstalkMaintenance(String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            Boolean finishBeanstalkMaintenanceResponse = SpotinstElastigroupService
                    .finishBeanstalkMaintenance(groupId, authToken, account);

            retVal = new RepoGenericResponse<>(finishBeanstalkMaintenanceResponse);
        }
        catch (SpotinstHttpException ex) {
            retVal = ExceptionHelper.handleHttpException(ex);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse getBeanstalkMaintenanceStatus(String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroupGetBeanstalkMaintenanceStatusResponse apiStatus =
                    SpotinstElastigroupService.getBeanstalkMaintenanceStatus(groupId, authToken, account);

            ElastigroupGetBeanstalkMaintenanceStatusResponse status = ElastigroupConverter.toBl(apiStatus);

            retVal = new RepoGenericResponse<>(status);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse getBeanstalkConfig(String environmentId, String region, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroup apiConfig = SpotinstElastigroupService.getBeanstalkConfig(environmentId, region, authToken, account);
            Elastigroup    config = ElastigroupConverter.toBl(apiConfig);
            retVal = new RepoGenericResponse<>(config);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }

    @Override
    public RepoGenericResponse beanstalkReimport(String groupId, String authToken, String account) {
        RepoGenericResponse retVal;

        try {
            ApiElastigroup apiResponse = SpotinstElastigroupService.beanstalkReimport(groupId, authToken, account);
            Elastigroup    response = ElastigroupConverter.toBl(apiResponse);
            retVal = new RepoGenericResponse<>(response);
        }
        catch (SpotinstHttpException e) {
            retVal = ExceptionHelper.handleHttpException(e);
        }

        return retVal;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy