/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vipr.block; import java.net.URI; import java.util.List; import com.emc.sa.engine.bind.Bindable; import com.emc.sa.engine.bind.BindingUtils; import com.emc.sa.engine.service.Service; import com.emc.sa.service.vipr.ViPRService; import com.emc.sa.service.vipr.block.BlockStorageUtils.VolumeParams; import com.emc.sa.service.vipr.block.BlockStorageUtils.VolumeTable; import com.google.common.collect.Lists; @Service("CreateVolume") public class CreateVolumeService extends ViPRService { @Bindable(itemType = VolumeTable.class) protected VolumeTable[] volumeTable; @Bindable protected VolumeParams volumeParams = new VolumeParams(); protected List<CreateBlockVolumeHelper> createBlockVolumeHelpers = Lists.newArrayList(); @Override public void precheck() { BlockStorageUtils.checkVolumeLimit(getClient(), volumeParams.project); } @Override public void init() throws Exception { super.init(); // for each pair of volume name and size, create a createBlockVolumeHelper for (VolumeTable volumes : volumeTable) { CreateBlockVolumeHelper createBlockVolumeHelper = new CreateBlockVolumeHelper(); BindingUtils.bind(createBlockVolumeHelper, BlockStorageUtils.createParam(volumes, volumeParams)); createBlockVolumeHelpers.add(createBlockVolumeHelper); } } @Override public void execute() throws Exception { if (!createBlockVolumeHelpers.isEmpty()) { List<URI> volumeIds = Lists.newArrayList(); volumeIds.addAll(BlockStorageUtils.createMultipleVolumes(createBlockVolumeHelpers)); } } }