diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in index d5ace796fe4..07f047eb3ea 100644 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -200,6 +200,6 @@ authorizeNetworkGroupIngress=com.cloud.api.commands.AuthorizeNetworkGroupIngress revokeNetworkGroupIngress=com.cloud.api.commands.RevokeNetworkGroupIngressCmd;11 listNetworkGroups=com.cloud.api.commands.ListNetworkGroupsCmd;11 -registerPreallocatedLun=com.cloud.server.api.commands.RegisterPreallocatedLunCmd;1 -deletePreallocatedLun=com.cloud.server.api.commands.DeletePreallocatedLunCmd;1 +registerPreallocatedLun=com.cloud.api.commands.RegisterPreallocatedLunCmd;1 +deletePreallocatedLun=com.cloud.api.commands.DeletePreallocatedLunCmd;1 listPreallocatedLuns=com.cloud.api.commands.ListPreallocatedLunsCmd;1 \ No newline at end of file diff --git a/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java b/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java new file mode 100644 index 00000000000..7d9e2e11f95 --- /dev/null +++ b/server/src/com/cloud/api/commands/DeletePreallocatedLunCmd.java @@ -0,0 +1,71 @@ +/** + * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. + * + * This software is licensed under the GNU General Public License v3 or later. + * + * It is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.cloud.api.commands; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.cloud.api.BaseCmd; +import com.cloud.api.ServerApiException; +import com.cloud.server.ManagementServer; +import com.cloud.utils.Pair; + +public class DeletePreallocatedLunCmd extends BaseCmd { + + private static final Logger s_logger = Logger.getLogger(DeletePreallocatedLunCmd.class); + + private static final String s_name = "deletePreallocatedLunsResponse"; + private static final List> s_properties = new ArrayList>(); + + static { + s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.TRUE)); + } + + @Override + + public List> execute(Map params) { + Long id = (Long) params.get(BaseCmd.Properties.ID.getName()); + + boolean success = false; + ManagementServer ms = getManagementServer(); + try { + success = ms.unregisterPreallocatedLun(id); + } catch (Exception e) { + s_logger.error("Unable to unregister lun ", e); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to unregister lun due to: " + e.getMessage()); + } + + List> returnValues = new ArrayList>(); + returnValues.add(new Pair(BaseCmd.Properties.SUCCESS.getName(), Boolean.toString(success))); + return returnValues; + } + + @Override + public String getName() { + return s_name; + } + + @Override + public List> getProperties() { + return s_properties; + } + +} diff --git a/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java b/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java new file mode 100644 index 00000000000..cce5a884588 --- /dev/null +++ b/server/src/com/cloud/api/commands/RegisterPreallocatedLunCmd.java @@ -0,0 +1,95 @@ +/** + * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. + * + * This software is licensed under the GNU General Public License v3 or later. + * + * It is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.cloud.api.commands; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.cloud.api.BaseCmd; +import com.cloud.api.ServerApiException; +import com.cloud.server.ManagementServer; +import com.cloud.storage.preallocatedlun.PreallocatedLunVO; +import com.cloud.utils.Pair; + +public class RegisterPreallocatedLunCmd extends BaseCmd { + private static final Logger s_logger = Logger.getLogger(RegisterPreallocatedLunCmd.class); + + private static final String s_name = "registerPreallocatedLunsResponse"; + private static final List> s_properties = new ArrayList>(); + + static { + s_properties.add(new Pair(BaseCmd.Properties.TARGET_IQN, Boolean.TRUE)); + s_properties.add(new Pair(BaseCmd.Properties.PORTAL, Boolean.TRUE)); + s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.TRUE)); + s_properties.add(new Pair(BaseCmd.Properties.DISK_SIZE, Boolean.TRUE)); + s_properties.add(new Pair(BaseCmd.Properties.LUN, Boolean.TRUE)); + s_properties.add(new Pair(BaseCmd.Properties.TAGS, Boolean.FALSE)); + } + + @Override + public List> execute(Map params) { + String targetIqn = (String)params.get(BaseCmd.Properties.TARGET_IQN.getName()); + String portal = (String)params.get(BaseCmd.Properties.PORTAL.getName()); + Long size = (Long)params.get(BaseCmd.Properties.DISK_SIZE.getName()); + Long dcId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName()); + Integer lun = (Integer)params.get(BaseCmd.Properties.LUN.getName()); + String t = (String)params.get(BaseCmd.Properties.TAGS.getName()); + + PreallocatedLunVO registeredLun = null; + ManagementServer ms = getManagementServer(); + try { + registeredLun = ms.registerPreallocatedLun(targetIqn, portal, lun, size, dcId, t); + } catch (Exception e) { + s_logger.error("Unable to register lun", e); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to register lun due to " + e.getMessage()); + } + + List> embeddedObject = new ArrayList>(); + List> returnValues = new ArrayList>(); + if (registeredLun == null) { + throw new ServerApiException(BaseCmd.PARAM_ERROR, "Failed to register LUN."); + } else { + returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), registeredLun.getId())); + returnValues.add(new Pair(BaseCmd.Properties.VOLUME_ID.getName(), registeredLun.getVolumeId())); + returnValues.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), registeredLun.getDataCenterId())); + returnValues.add(new Pair(BaseCmd.Properties.LUN.getName(), registeredLun.getLun())); + returnValues.add(new Pair(BaseCmd.Properties.PORTAL.getName(), registeredLun.getPortal())); + returnValues.add(new Pair(BaseCmd.Properties.SIZE.getName(), registeredLun.getSize())); + returnValues.add(new Pair(BaseCmd.Properties.TAKEN.getName(), registeredLun.getTaken())); + returnValues.add(new Pair(BaseCmd.Properties.TARGET_IQN.getName(), registeredLun.getTargetIqn())); + + embeddedObject.add(new Pair("preallocatedlun", new Object[] { returnValues } )); + } + + return embeddedObject; + } + + @Override + public String getName() { + return s_name; + } + + @Override + public List> getProperties() { + return s_properties; + } + +}