use of com.amazonaws.services.elasticfilesystem.model.DescribeFileSystemsResult in project cloudbreak by hortonworks.
the class AwsEfsResourceBuilder method checkResources.
@Override
protected List<CloudResourceStatus> checkResources(ResourceType type, AwsContext context, AuthenticatedContext auth, Iterable<CloudResource> resources) {
AmazonEfsClient client = getAmazonEfsClient(auth);
List<CloudResource> efsResources = StreamSupport.stream(resources.spliterator(), false).filter(r -> r.getType().equals(resourceType())).collect(Collectors.toList());
List<String> efsIds = new ArrayList<>();
List<CloudResourceStatus> cloudResourceStatusList = new ArrayList<>();
for (CloudResource efsResource : efsResources) {
CloudEfsAttributes efsAttributes = efsResource.getParameter(CloudResource.ATTRIBUTES, CloudEfsAttributes.class);
String efsId = efsAttributes.getFileSystemId();
efsIds.add(efsId);
DescribeFileSystemsRequest request = new DescribeFileSystemsRequest().withFileSystemId(efsId);
DescribeFileSystemsResult result = client.describeFileSystems(request);
List<CloudResourceStatus> efsStatusList = getResourceStatus(efsResource, efsId, result);
cloudResourceStatusList.addAll(efsStatusList);
}
LOGGER.debug("got EFS status for [{}]", String.join(",", efsIds));
return cloudResourceStatusList;
}
use of com.amazonaws.services.elasticfilesystem.model.DescribeFileSystemsResult in project cloudbreak by hortonworks.
the class AwsLaunchTest method setupDescribeFileSystems.
private void setupDescribeFileSystems() {
FileSystemDescription efsDescription1 = new FileSystemDescription().withCreationToken(EFS_CREATIONTOKEN).withFileSystemId(EFS_FILESYSTEM_ID + efsIdIndex).withLifeCycleState(LifeCycleState.Available.toString());
DescribeFileSystemsResult describeFileSystemsResult = new DescribeFileSystemsResult().withFileSystems(Arrays.asList(efsDescription1));
when(amazonElasticFileSystemClient.describeFileSystems(any())).thenReturn(describeFileSystemsResult);
when(amazonEfsClient.describeFileSystems(any())).thenReturn(describeFileSystemsResult);
}
use of com.amazonaws.services.elasticfilesystem.model.DescribeFileSystemsResult in project cloudbreak by hortonworks.
the class AwsEfsResourceBuilder method delete.
@Override
public CloudResource delete(AwsContext context, AuthenticatedContext auth, CloudResource resource) throws InterruptedException {
//
// https://docs.aws.amazon.com/efs/latest/ug/wt1-clean-up.html
// To delete an EFS instance, need the following steps
// 1. Terminate the EC2 instances that mount on this EFS. The caller of this function has to make sure it is done before calling this function
// 2. Delete the mount targets of this EFS.
// 3. (Optional) Delete the security group of each mount target. AWS does not charge for security groups
// 4. (Optional) Delete the security group of the EC2 instances at step 1. The mount target's security group has a rule that references
// the EC2 security group. Therefore, we cannot first delete the EC2 instance's security group.
// 5. Actually delete the EFS
//
AmazonEfsClient client = getAmazonEfsClient(auth);
CloudEfsAttributes efsAttributes = resource.getParameter(CloudResource.ATTRIBUTES, CloudEfsAttributes.class);
String efsId = efsAttributes.getFileSystemId();
DescribeFileSystemsRequest request = new DescribeFileSystemsRequest().withFileSystemId(efsId);
DescribeFileSystemsResult result = client.describeFileSystems(request);
List<FileSystemDescription> efsDescriptions = result.getFileSystems();
for (FileSystemDescription efsDescription : efsDescriptions) {
LifeCycleState efsLifeCycleState = LifeCycleState.fromValue(efsDescription.getLifeCycleState());
if (LifeCycleState.DELETED.equals(efsLifeCycleState) || LifeCycleState.DELETING.equals(efsLifeCycleState)) {
LOGGER.debug("The given AWS EFS's [name: {}] lifecycle state was [{}] hence we are going to skip any delete operation over this resource", efsDescription.getName(), efsLifeCycleState);
continue;
}
if (efsDescription.getNumberOfMountTargets() > 0) {
DescribeMountTargetsRequest mtRequest = new DescribeMountTargetsRequest().withFileSystemId(efsId);
DescribeMountTargetsResult mtResult = client.describeMountTargets(mtRequest);
List<MountTargetDescription> mountTargetDescriptionList = mtResult.getMountTargets();
// Only delete the mount targets.
for (MountTargetDescription mtDescription : mountTargetDescriptionList) {
DeleteMountTargetRequest mtDelRequest = new DeleteMountTargetRequest().withMountTargetId(mtDescription.getMountTargetId());
LOGGER.debug("About to delete AWS EFS mount target that has the following id: {}", mtDescription.getMountTargetId());
client.deleteMountTarget(mtDelRequest);
}
// TODO: delete the security groups in the future
}
DeleteFileSystemRequest efsDelRequest = new DeleteFileSystemRequest().withFileSystemId(efsId);
client.deleteFileSystem(efsDelRequest);
}
return null;
}
use of com.amazonaws.services.elasticfilesystem.model.DescribeFileSystemsResult in project cloudbreak by hortonworks.
the class CloudFormationStackUtil method getEfsByFileSystemId.
public FileSystemDescription getEfsByFileSystemId(AuthenticatedContext ac, String fileSystemId) {
String region = ac.getCloudContext().getLocation().getRegion().value();
AmazonEfsClient amazonEfsClient = awsClient.createElasticFileSystemClient(new AwsCredentialView(ac.getCloudCredential()), region);
DescribeFileSystemsResult efsResult = amazonEfsClient.describeFileSystems(new DescribeFileSystemsRequest().withFileSystemId(fileSystemId));
return efsResult.getFileSystems().get(0);
}
Aggregations