/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.windows.tasks; import static com.iwave.ext.windows.WindowsUtils.isMBRCapacityInBytesTooLarge; import com.iwave.ext.windows.model.DiskSummary; import com.iwave.ext.windows.parser.ListDiskParser; import com.iwave.ext.windows.WindowsUtils; import java.util.List; import org.apache.commons.lang.StringUtils; public class CheckPartitionRestriction extends DiskPartScript<Void> { private int diskNumber; private long volumeSizeInBytes; private static String DISK_NUMBER_PREFIX = "Disk "; private static String GPT_FLAG = "*"; public CheckPartitionRestriction(int diskNumber, long volumeSizeInBytes) { this.diskNumber = diskNumber; this.volumeSizeInBytes = volumeSizeInBytes; setDiskPartCommands(WindowsUtils.getListDiskCommands()); } @Override public void execute() throws Exception { String output = getTargetSystem().listDisk(); logDebug(output); ListDiskParser parser = new ListDiskParser(); List<DiskSummary> results = parser.parseDevices(output); validateResults(results); } private void validateResults(List<DiskSummary> disks) { String diskToValidate = DISK_NUMBER_PREFIX + diskNumber; for (DiskSummary disk : disks) { if (diskToValidate.equals(disk.getDiskNumber())) { if (!StringUtils.equals(disk.getGpt(), GPT_FLAG)) { if (isMBRCapacityInBytesTooLarge(volumeSizeInBytes)) { throw stateException("illegalState.CheckPartitionRestriction.restriction"); } } } } } }