You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/04/08 23:17:27 UTC

git commit: updated refs/heads/object_store to 7f64b61

Updated Branches:
  refs/heads/object_store 848fea606 -> 7f64b61cb


Move some image store related interface methods from ResourceService to
StorageService.

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7f64b61c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7f64b61c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7f64b61c

Branch: refs/heads/object_store
Commit: 7f64b61cbd1cf81c610d23559354dd778b32321c
Parents: 848fea6
Author: Min Chen <mi...@citrix.com>
Authored: Mon Apr 8 14:16:51 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Mon Apr 8 14:16:51 2013 -0700

----------------------------------------------------------------------
 api/src/com/cloud/resource/ResourceService.java    |    3 -
 api/src/com/cloud/storage/StorageService.java      |    9 ++
 .../command/admin/storage/AddImageStoreCmd.java    |    2 +-
 .../command/admin/storage/DeleteImageStoreCmd.java |   80 +++++++++++
 .../com/cloud/resource/ResourceManagerImpl.java    |   71 +----------
 .../src/com/cloud/storage/StorageManagerImpl.java  |  105 +++++++++++++--
 .../cloud/resource/MockResourceManagerImpl.java    |    8 -
 7 files changed, 184 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/api/src/com/cloud/resource/ResourceService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/resource/ResourceService.java b/api/src/com/cloud/resource/ResourceService.java
index d8c09d9..268bcd6 100755
--- a/api/src/com/cloud/resource/ResourceService.java
+++ b/api/src/com/cloud/resource/ResourceService.java
@@ -27,7 +27,6 @@ import org.apache.cloudstack.api.command.admin.host.PrepareForMaintenanceCmd;
 import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
 import org.apache.cloudstack.api.command.admin.host.UpdateHostCmd;
 import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
-import org.apache.cloudstack.api.command.admin.storage.AddImageStoreCmd;
 import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
 import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
 import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
@@ -39,7 +38,6 @@ import com.cloud.exception.ResourceInUseException;
 import com.cloud.host.Host;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.org.Cluster;
-import com.cloud.storage.ImageStore;
 import com.cloud.storage.S3;
 import com.cloud.storage.Swift;
 import com.cloud.utils.Pair;
@@ -103,7 +101,6 @@ public interface ResourceService {
 
     S3 discoverS3(AddS3Cmd cmd) throws DiscoveryException;
 
-    ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
 
 
     List<HypervisorType> getSupportedHypervisorTypes(long zoneId, boolean forVirtualRouter, Long podId);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/api/src/com/cloud/storage/StorageService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/StorageService.java b/api/src/com/cloud/storage/StorageService.java
index 63c5023..ee1a956 100644
--- a/api/src/com/cloud/storage/StorageService.java
+++ b/api/src/com/cloud/storage/StorageService.java
@@ -18,12 +18,16 @@ package com.cloud.storage;
 
 import java.net.UnknownHostException;
 
+import org.apache.cloudstack.api.command.admin.storage.AddImageStoreCmd;
 import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd;
 import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd;
+import org.apache.cloudstack.api.command.admin.storage.DeleteImageStoreCmd;
 import org.apache.cloudstack.api.command.admin.storage.DeletePoolCmd;
 import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd;
 
+import com.cloud.exception.DiscoveryException;
 import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.ResourceInUseException;
 import com.cloud.exception.ResourceUnavailableException;
 
@@ -82,4 +86,9 @@ public interface StorageService{
     public StoragePool updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException;
 
     public StoragePool getStoragePool(long id);
+
+    boolean deleteImageStore(DeleteImageStoreCmd cmd);
+
+    ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java b/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
index 40ae6b2..511283f 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java
@@ -102,7 +102,7 @@ public class AddImageStoreCmd extends BaseCmd {
     @Override
     public void execute(){
         try{
-            ImageStore result = _resourceService.discoverImageStore(this);
+            ImageStore result = _storageService.discoverImageStore(this);
             ImageStoreResponse storeResponse = null;
             if (result != null ) {
                     storeResponse = _responseGenerator.createImageStoreResponse(result);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/api/src/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java b/api/src/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
new file mode 100644
index 0000000..34a4ae0
--- /dev/null
+++ b/api/src/org/apache/cloudstack/api/command/admin/storage/DeleteImageStoreCmd.java
@@ -0,0 +1,80 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.api.command.admin.storage;
+
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.HostResponse;
+import org.apache.cloudstack.api.response.ImageStoreResponse;
+import org.apache.cloudstack.api.response.SuccessResponse;
+import org.apache.log4j.Logger;
+
+import com.cloud.user.Account;
+
+@APICommand(name = "deleteImageStore", description = "Deletes an image store .", responseObject = SuccessResponse.class)
+public class DeleteImageStoreCmd extends BaseCmd {
+    public static final Logger s_logger = Logger.getLogger(DeleteImageStoreCmd.class.getName());
+
+    private static final String s_name = "deleteimagestoreresponse";
+
+    // ///////////////////////////////////////////////////
+    // ////////////// API parameters /////////////////////
+    // ///////////////////////////////////////////////////
+
+    @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ImageStoreResponse.class,
+            required = true, description = "the image store ID")
+    private Long id;
+
+
+    // ///////////////////////////////////////////////////
+    // ///////////////// Accessors ///////////////////////
+    // ///////////////////////////////////////////////////
+
+    public Long getId() {
+        return id;
+    }
+
+
+    // ///////////////////////////////////////////////////
+    // ///////////// API Implementation///////////////////
+    // ///////////////////////////////////////////////////
+
+    @Override
+    public String getCommandName() {
+        return s_name;
+    }
+
+    @Override
+    public long getEntityOwnerId() {
+        return Account.ACCOUNT_ID_SYSTEM;
+    }
+
+    @Override
+    public void execute() {
+        boolean result = _storageService.deleteImageStore(this);
+        if (result) {
+            SuccessResponse response = new SuccessResponse(getCommandName());
+            this.setResponseObject(response);
+        } else {
+            throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to delete image store");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/server/src/com/cloud/resource/ResourceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 27df1af..ef56769 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -176,8 +176,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
     @Inject
     protected SecondaryStorageVmManager _secondaryStorageMgr;
     @Inject
-    DataStoreProviderManager _dataStoreProviderMgr;
-    @Inject
     protected RegionDao _regionDao;
     @Inject
     protected DataCenterDao _dcDao;
@@ -217,8 +215,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
     protected HighAvailabilityManager _haMgr;
     @Inject
     protected StorageService _storageSvr;
-    @Inject
-    DataStoreManager _dataStoreMgr;
+
 
     protected List<? extends Discoverer> _discoverers;
 
@@ -633,72 +630,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
         return this._s3Mgr.listS3s(cmd);
     }
 
-    @Override
-    public ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException,
-            InvalidParameterValueException {
-        String providerName = cmd.getProviderName();
-        DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(providerName);
-
-        if (storeProvider == null) {
-            storeProvider = _dataStoreProviderMgr.getDefaultImageDataStoreProvider();
-            if (storeProvider == null) {
-                throw new InvalidParameterValueException("can't find image store provider: " + providerName);
-            }
-        }
-
-        Long dcId = cmd.getZoneId();
-        String url = cmd.getUrl();
-        Map details = cmd.getDetails();
-
-        ScopeType scopeType = null;
-        String scope = cmd.getScope();
-        if (scope != null) {
-            try {
-                scopeType = Enum.valueOf(ScopeType.class, scope.toUpperCase());
-            } catch (Exception e) {
-                throw new InvalidParameterValueException("invalid scope" + scope);
-            }
-        }
-        if (scopeType == ScopeType.ZONE && dcId == null) {
-            throw new InvalidParameterValueException("zone id can't be null, if scope is zone");
-        }
-
-        if (dcId != null) {
-            // Check if the zone exists in the system
-            DataCenterVO zone = _dcDao.findById(dcId);
-            if (zone == null) {
-                throw new InvalidParameterValueException("Can't find zone by id " + dcId);
-            }
-
-            Account account = UserContext.current().getCaller();
-            if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) {
-                PermissionDeniedException ex = new PermissionDeniedException(
-                        "Cannot perform this operation, Zone with specified id is currently disabled");
-                ex.addProxyObject(zone, dcId, "dcId");
-                throw ex;
-            }
-        }
-
-
-        Map<String, Object> params = new HashMap<String, Object>();
-        params.put("zoneId", dcId);
-        params.put("url", cmd.getUrl());
-        params.put("name", cmd.getUrl());
-        params.put("details", details);
-        params.put("scope", scopeType);
-        params.put("providerName", storeProvider.getName());
-
-        DataStoreLifeCycle lifeCycle = storeProvider.getDataStoreLifeCycle();
-        DataStore store = null;
-        try {
-            store = lifeCycle.initialize(params);
-        } catch (Exception e) {
-            s_logger.debug("Failed to add data store", e);
-            throw new CloudRuntimeException("Failed to add data store", e);
-        }
-
-        return (ImageStore) _dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Image);
-    }
 
     private List<HostVO> discoverHostsFull(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password,
             String hypervisorType, List<String> hostTags, Map<String, String> params, boolean deferAgentCreation) throws IllegalArgumentException,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/server/src/com/cloud/storage/StorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java
index 72a0e07..88b1a52 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -40,8 +40,10 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.cloudstack.api.command.admin.storage.AddImageStoreCmd;
 import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd;
 import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd;
+import org.apache.cloudstack.api.command.admin.storage.DeleteImageStoreCmd;
 import org.apache.cloudstack.api.command.admin.storage.DeletePoolCmd;
 import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd;
 import org.apache.cloudstack.engine.subsystem.api.storage.ClusterScope;
@@ -103,6 +105,7 @@ import com.cloud.domain.dao.DomainDao;
 import com.cloud.event.dao.EventDao;
 import com.cloud.exception.AgentUnavailableException;
 import com.cloud.exception.ConnectionException;
+import com.cloud.exception.DiscoveryException;
 import com.cloud.exception.InsufficientCapacityException;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.OperationTimedoutException;
@@ -294,6 +297,11 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
 
     @Inject protected ResourceTagDao _resourceTagDao;
 
+    @Inject
+    DataStoreManager _dataStoreMgr;
+    @Inject
+    DataStoreProviderManager _dataStoreProviderMgr;
+
     protected List<StoragePoolAllocator> _storagePoolAllocators;
     public List<StoragePoolAllocator> getStoragePoolAllocators() {
 		return _storagePoolAllocators;
@@ -453,13 +461,13 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         VirtualMachineProfile<VMInstanceVO> profile = new VirtualMachineProfileImpl<VMInstanceVO>(
         		vm);
         for (StoragePoolAllocator allocator : _storagePoolAllocators) {
-        	
+
         	ExcludeList avoidList = new ExcludeList();
         	for(StoragePool pool : avoid){
         		avoidList.addPool(pool.getId());
         	}
         	DataCenterDeployment plan = new DataCenterDeployment(dc.getId(), pod.getId(), clusterId, hostId, null, null);
-        	
+
         	final List<StoragePool> poolList = allocator.allocateToPool(dskCh, profile, plan, avoidList, 1);
         	if (poolList != null && !poolList.isEmpty()) {
         		return (StoragePool)this.dataStoreMgr.getDataStore(poolList.get(0).getId(), DataStoreRole.Primary);
@@ -672,7 +680,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         return true;
     }
 
-    
+
     @Override
     public String getStoragePoolTags(long poolId) {
         return _configMgr.listToCsvTags(_storagePoolDao
@@ -701,7 +709,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
 
         return true;
     }
-    
+
     @DB
     @Override
     public DataStore createLocalStorage(Host host, StoragePoolInfo pInfo) throws ConnectionException {
@@ -715,7 +723,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
             StoragePoolVO pool = _storagePoolDao.findPoolByHostPath(host.getDataCenterId(), host.getPodId(), pInfo.getHost(), pInfo.getHostPath(), pInfo.getUuid());
             if(pool == null && host.getHypervisorType() == HypervisorType.VMware) {
                 // perform run-time upgrade. In versions prior to 2.2.12, there is a bug that we don't save local datastore info (host path is empty), this will cause us
-                // not able to distinguish multiple local datastores that may be available on the host, to support smooth migration, we 
+                // not able to distinguish multiple local datastores that may be available on the host, to support smooth migration, we
                 // need to perform runtime upgrade here
                 if(pInfo.getHostPath().length() > 0) {
                     pool = _storagePoolDao.findPoolByHostPath(host.getDataCenterId(), host.getPodId(), pInfo.getHost(), "", pInfo.getUuid());
@@ -735,13 +743,13 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
                 params.put("details", pInfo.getDetails());
                 params.put("uuid", pInfo.getUuid());
                 params.put("providerName", provider.getName());
-                
+
                 store = lifeCycle.initialize(params);
             } else {
                 store = (DataStore) dataStoreMgr.getDataStore(pool.getId(),
                         DataStoreRole.Primary);
             }
-            
+
             HostScope scope = new HostScope(host.getId());
             lifeCycle.attachHost(store, scope, pInfo);
         } catch (Exception e) {
@@ -1007,7 +1015,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
             }
             CapacityState capacityState = (allocationState == AllocationState.Disabled) ?
                     CapacityState.Disabled : CapacityState.Enabled;
-            
+
             capacity.setCapacityState(capacityState);
             _capacityDao.persist(capacity);
         } else {
@@ -1147,7 +1155,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
                 }finally {
                     scanLock.unlock();
                 }
-            } 
+            }
         }finally {
             scanLock.releaseRef();
         }
@@ -1479,7 +1487,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         DataStore store = dataStoreMgr.getDataStore(
                 primaryStorage.getId(), DataStoreRole.Primary);
         lifeCycle.cancelMaintain(store);
-        
+
         return (PrimaryDataStoreInfo) dataStoreMgr.getDataStore(
                 primaryStorage.getId(), DataStoreRole.Primary);
     }
@@ -1627,7 +1635,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
                 DataStoreRole.Primary);
     }
 
-   
+
 
     @Override
     @DB
@@ -1708,7 +1716,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         return secHost;
     }
 
-    
+
 
     @Override
     public HypervisorType getHypervisorTypeFromFormat(ImageFormat format) {
@@ -1875,4 +1883,77 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
         return null;
     }
 
+    @Override
+    public ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException,
+            InvalidParameterValueException {
+        String providerName = cmd.getProviderName();
+        DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(providerName);
+
+        if (storeProvider == null) {
+            storeProvider = _dataStoreProviderMgr.getDefaultImageDataStoreProvider();
+            if (storeProvider == null) {
+                throw new InvalidParameterValueException("can't find image store provider: " + providerName);
+            }
+        }
+
+        Long dcId = cmd.getZoneId();
+        String url = cmd.getUrl();
+        Map details = cmd.getDetails();
+
+        ScopeType scopeType = null;
+        String scope = cmd.getScope();
+        if (scope != null) {
+            try {
+                scopeType = Enum.valueOf(ScopeType.class, scope.toUpperCase());
+            } catch (Exception e) {
+                throw new InvalidParameterValueException("invalid scope" + scope);
+            }
+        }
+        if (scopeType == ScopeType.ZONE && dcId == null) {
+            throw new InvalidParameterValueException("zone id can't be null, if scope is zone");
+        }
+
+        if (dcId != null) {
+            // Check if the zone exists in the system
+            DataCenterVO zone = _dcDao.findById(dcId);
+            if (zone == null) {
+                throw new InvalidParameterValueException("Can't find zone by id " + dcId);
+            }
+
+            Account account = UserContext.current().getCaller();
+            if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) {
+                PermissionDeniedException ex = new PermissionDeniedException(
+                        "Cannot perform this operation, Zone with specified id is currently disabled");
+                ex.addProxyObject(zone, dcId, "dcId");
+                throw ex;
+            }
+        }
+
+
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("zoneId", dcId);
+        params.put("url", cmd.getUrl());
+        params.put("name", cmd.getUrl());
+        params.put("details", details);
+        params.put("scope", scopeType);
+        params.put("providerName", storeProvider.getName());
+
+        DataStoreLifeCycle lifeCycle = storeProvider.getDataStoreLifeCycle();
+        DataStore store = null;
+        try {
+            store = lifeCycle.initialize(params);
+        } catch (Exception e) {
+            s_logger.debug("Failed to add data store", e);
+            throw new CloudRuntimeException("Failed to add data store", e);
+        }
+
+        return (ImageStore) _dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Image);
+    }
+    @Override
+    public boolean deleteImageStore(DeleteImageStoreCmd cmd) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f64b61c/server/test/com/cloud/resource/MockResourceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/resource/MockResourceManagerImpl.java b/server/test/com/cloud/resource/MockResourceManagerImpl.java
index da4d3fb..819120b 100644
--- a/server/test/com/cloud/resource/MockResourceManagerImpl.java
+++ b/server/test/com/cloud/resource/MockResourceManagerImpl.java
@@ -609,12 +609,4 @@ public class MockResourceManagerImpl extends ManagerBase implements ResourceMana
 		return null;
 	}
 
-    @Override
-    public ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException,
-            InvalidParameterValueException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-
 }