/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vipr.file;
import static com.emc.sa.service.ServiceParams.PROJECT;
import static com.emc.sa.service.ServiceParams.STORAGE_SYSTEMS;
import static com.emc.sa.service.ServiceParams.TYPE;
import static com.emc.sa.service.ServiceParams.VIRTUAL_ARRAY;
import static com.emc.sa.service.ServiceParams.VIRTUAL_POOL;
import java.net.URI;
import java.util.List;
import com.emc.sa.engine.bind.Param;
import com.emc.sa.engine.service.Service;
import com.emc.sa.service.vipr.ViPRService;
import com.emc.sa.service.vipr.file.tasks.GetUnmanagedFilesystems;
import com.emc.sa.service.vipr.file.tasks.IngestUnmanagedFilesystems;
import com.emc.sa.service.vipr.tasks.CheckStorageSystemDiscoveryStatus;
import com.emc.storageos.model.file.UnManagedFileSystemRestRep;
import com.google.common.collect.Lists;
@Service("IngestUnmanagedFilesystems")
public class IngestUnmanagedFilesystemsService extends ViPRService {
@Param(STORAGE_SYSTEMS)
protected URI storageSystem;
@Param(VIRTUAL_POOL)
protected URI virtualPool;
@Param(PROJECT)
protected URI project;
@Param(VIRTUAL_ARRAY)
protected URI virtualArray;
@Param(value = TYPE, required = false)
protected String type;
@Override
public void precheck() throws Exception {
super.precheck();
execute(new CheckStorageSystemDiscoveryStatus(storageSystem));
}
@Override
public void execute() throws Exception {
List<UnManagedFileSystemRestRep> unmanaged = execute(new GetUnmanagedFilesystems(storageSystem, virtualPool, type));
List<URI> filesystems = Lists.newArrayList();
for (UnManagedFileSystemRestRep fileSystem : unmanaged) {
filesystems.add(fileSystem.getId());
}
execute(new IngestUnmanagedFilesystems(virtualPool, virtualArray, project, filesystems));
// Requery and produce a log of what was ingested or not
int failed = execute(new GetUnmanagedFilesystems(storageSystem, virtualPool, type)).size();
logInfo("ingest.unmanaged.filesystems.service.ingested", unmanaged.size() - failed);
logInfo("ingest.unmanaged.filesystems.service.skipped", failed);
}
}