You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/12/08 11:28:46 UTC
stratos git commit: Introducing logic to start mock members if
present in the registry on server startup
Repository: stratos
Updated Branches:
refs/heads/master 089477175 -> 48c364073
Introducing logic to start mock members if present in the registry on server startup
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/48c36407
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/48c36407
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/48c36407
Branch: refs/heads/master
Commit: 48c36407339cc81a835c7cf3d79a9109f2055304
Parents: 0894771
Author: Imesh Gunaratne <im...@apache.org>
Authored: Mon Dec 8 15:58:36 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Mon Dec 8 15:58:36 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/iaases/MockIaas.java | 114 +++++++++++
.../cloud/controller/iaases/mock/MockIaas.java | 182 ------------------
.../controller/iaases/mock/MockIaasService.java | 187 +++++++++++++++++++
.../CloudControllerServiceComponent.java | 4 +
.../controller/registry/RegistryManager.java | 4 +-
.../main/resources/conf/cloud-controller.xml | 2 +-
6 files changed, 307 insertions(+), 186 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/MockIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/MockIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/MockIaas.java
new file mode 100644
index 0000000..9e9273e
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/MockIaas.java
@@ -0,0 +1,114 @@
+/*
+ * 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.stratos.cloud.controller.iaases;
+
+import org.apache.stratos.cloud.controller.domain.ClusterContext;
+import org.apache.stratos.cloud.controller.domain.IaasProvider;
+import org.apache.stratos.cloud.controller.domain.MemberContext;
+import org.apache.stratos.cloud.controller.domain.Partition;
+import org.apache.stratos.cloud.controller.exception.*;
+import org.apache.stratos.cloud.controller.iaases.mock.MockIaasService;
+import org.apache.stratos.cloud.controller.iaases.validators.PartitionValidator;
+import org.jclouds.compute.domain.NodeMetadata;
+
+/**
+ * Mock IaaS client for invoking mock IaaS service.
+ */
+public class MockIaas extends Iaas {
+
+ public MockIaas(IaasProvider iaasProvider) {
+ super(iaasProvider);
+ }
+
+ @Override
+ public void initialize() {
+ }
+
+ @Override
+ public NodeMetadata createInstance(ClusterContext clusterContext, MemberContext memberContext) {
+ return MockIaasService.getInstance().createInstance(clusterContext, memberContext);
+ }
+
+ @Override
+ public void releaseAddress(String ip) {
+ MockIaasService.getInstance().releaseAddress(ip);
+ }
+
+ @Override
+ public boolean isValidRegion(String region) throws InvalidRegionException {
+ return MockIaasService.getInstance().isValidRegion(region);
+ }
+
+ @Override
+ public boolean isValidZone(String region, String zone) throws InvalidZoneException, InvalidRegionException {
+ return MockIaasService.getInstance().isValidZone(region, zone);
+ }
+
+ @Override
+ public boolean isValidHost(String zone, String host) throws InvalidHostException {
+ return MockIaasService.getInstance().isValidHost(zone, host);
+ }
+
+ @Override
+ public PartitionValidator getPartitionValidator() {
+ return MockIaasService.getInstance().getPartitionValidator();
+ }
+
+ @Override
+ public String createVolume(int sizeGB, String snapshotId) {
+ return MockIaasService.getInstance().createVolume(sizeGB, snapshotId);
+ }
+
+ @Override
+ public String attachVolume(String instanceId, String volumeId, String deviceName) {
+ return MockIaasService.getInstance().attachVolume(instanceId, volumeId, deviceName);
+ }
+
+ @Override
+ public void detachVolume(String instanceId, String volumeId) {
+ MockIaasService.getInstance().detachVolume(instanceId, volumeId);
+ }
+
+ @Override
+ public void deleteVolume(String volumeId) {
+ MockIaasService.getInstance().deleteVolume(volumeId);
+ }
+
+ @Override
+ public String getIaasDevice(String device) {
+ return MockIaasService.getInstance().getIaasDevice(device);
+ }
+
+ @Override
+ public void allocateIpAddress(String clusterId, MemberContext memberContext, Partition partition,
+ String cartridgeType, NodeMetadata node) {
+ MockIaasService.getInstance().allocateIpAddress(clusterId, memberContext, partition, cartridgeType, node);
+ }
+
+ @Override
+ public void setDynamicPayload(byte[] payload) {
+ MockIaasService.getInstance().setDynamicPayload(payload);
+ }
+
+ @Override
+ public void terminateInstance(MemberContext memberContext) throws InvalidCartridgeTypeException, InvalidMemberException {
+ MockIaasService.getInstance().terminateInstance(memberContext);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
deleted file mode 100644
index bfe6306..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaas.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * 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.stratos.cloud.controller.iaases.mock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cloud.controller.domain.ClusterContext;
-import org.apache.stratos.cloud.controller.domain.IaasProvider;
-import org.apache.stratos.cloud.controller.domain.MemberContext;
-import org.apache.stratos.cloud.controller.domain.Partition;
-import org.apache.stratos.cloud.controller.exception.*;
-import org.apache.stratos.cloud.controller.iaases.Iaas;
-import org.apache.stratos.cloud.controller.iaases.validators.PartitionValidator;
-import org.apache.stratos.cloud.controller.registry.RegistryManager;
-import org.apache.stratos.common.threading.StratosThreadPool;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.wso2.carbon.registry.core.exceptions.RegistryException;
-
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-
-/**
- * Mock IaaS definition. This simulates an infrastructure as a service platform by creating mock members
- * and publishing member lifecycle events. Each member will publish mock statistics values after publishing
- * instance started, instance activated events.
- */
-public class MockIaas extends Iaas {
-
- private static final Log log = LogFactory.getLog(MockIaas.class);
- private static final String MOCK_IAAS_MEMBERS = "/mock/iaas/members";
-
- private ExecutorService executorService;
- private MockPartitionValidator partitionValidator;
- private ConcurrentHashMap<String, MockMember> membersMap;
-
- public MockIaas(IaasProvider iaasProvider) {
- super(iaasProvider);
- executorService = StratosThreadPool.getExecutorService("MOCK_IAAS_THREAD_EXECUTOR", 100);
- partitionValidator = new MockPartitionValidator();
- membersMap = readFromRegistry();
- if(membersMap != null) {
- // Start existing members
- for(MockMember mockMember : membersMap.values()) {
- executorService.submit(mockMember);
- }
- } else {
- // No members found in registry, create new map
- membersMap = new ConcurrentHashMap<String, MockMember>();
- }
- }
-
- @Override
- public void initialize() {
- }
-
- @Override
- public NodeMetadata createInstance(ClusterContext clusterContext, MemberContext memberContext) {
- synchronized (MockIaas.class) {
- // Create mock member instance
- MockMemberContext mockMemberContext = new MockMemberContext(clusterContext.getCartridgeType(),
- clusterContext.getClusterId(), memberContext.getMemberId(), memberContext.getNetworkPartitionId(),
- memberContext.getPartition().getId(), memberContext.getInstanceId());
- MockMember mockMember = new MockMember(mockMemberContext);
- membersMap.put(mockMember.getMockMemberContext().getMemberId(), mockMember);
- executorService.submit(mockMember);
-
- // Prepare node metadata
- MockNodeMetadata nodeMetadata = new MockNodeMetadata();
- nodeMetadata.setId(UUID.randomUUID().toString());
-
- // Persist changes
- persistInRegistry();
-
- return nodeMetadata;
- }
- }
-
- private void persistInRegistry() {
- try {
- RegistryManager.getInstance().persist(MOCK_IAAS_MEMBERS, membersMap);
- } catch (RegistryException e) {
- log.error("Could not persist mock iaas members in registry", e);
- };
- }
-
- private ConcurrentHashMap<String, MockMember> readFromRegistry() {
- return (ConcurrentHashMap<String, MockMember>) RegistryManager.getInstance().read(MOCK_IAAS_MEMBERS);
- }
-
- @Override
- public void allocateIpAddress(String clusterId, MemberContext memberContext, Partition partition,
- String cartridgeType, NodeMetadata node) {
- // Allocate mock ip addresses
- memberContext.setPrivateIpAddress(MockIPAddressPool.getInstance().getNextPrivateIpAddress());
- memberContext.setPublicIpAddress(MockIPAddressPool.getInstance().getNextPublicIpAddress());
- }
-
- @Override
- public void releaseAddress(String ip) {
-
- }
-
- @Override
- public boolean isValidRegion(String region) throws InvalidRegionException {
- return true;
- }
-
- @Override
- public boolean isValidZone(String region, String zone) throws InvalidZoneException, InvalidRegionException {
- return true;
- }
-
- @Override
- public boolean isValidHost(String zone, String host) throws InvalidHostException {
- return true;
- }
-
- @Override
- public PartitionValidator getPartitionValidator() {
- return partitionValidator;
- }
-
- @Override
- public String createVolume(int sizeGB, String snapshotId) {
- return null;
- }
-
- @Override
- public String attachVolume(String instanceId, String volumeId, String deviceName) {
- return null;
- }
-
- @Override
- public void detachVolume(String instanceId, String volumeId) {
-
- }
-
- @Override
- public void deleteVolume(String volumeId) {
-
- }
-
- @Override
- public String getIaasDevice(String device) {
- return null;
- }
-
- @Override
- public void setDynamicPayload(byte[] payload) {
-
- }
-
- @Override
- public void terminateInstance(MemberContext memberContext) throws InvalidCartridgeTypeException, InvalidMemberException {
- synchronized (MockIaas.class) {
- MockMember mockMember = membersMap.get(memberContext.getMemberId());
- if (mockMember != null) {
- mockMember.terminate();
- membersMap.remove(memberContext.getMemberId());
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
new file mode 100644
index 0000000..4bf9dd4
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/mock/MockIaasService.java
@@ -0,0 +1,187 @@
+/*
+ * 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.stratos.cloud.controller.iaases.mock;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.domain.ClusterContext;
+import org.apache.stratos.cloud.controller.domain.MemberContext;
+import org.apache.stratos.cloud.controller.domain.Partition;
+import org.apache.stratos.cloud.controller.exception.*;
+import org.apache.stratos.cloud.controller.iaases.validators.PartitionValidator;
+import org.apache.stratos.cloud.controller.registry.RegistryManager;
+import org.apache.stratos.common.threading.StratosThreadPool;
+import org.jclouds.compute.domain.NodeMetadata;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+
+/**
+ * Mock IaaS service implementation. This is a singleton class that simulates a standard Infrastructure as a Service
+ * platform by creating mock members and managing their lifecycle states.
+ *
+ * How does this work:
+ * - Mock IaaS starts a Mock Member thread or each instance created
+ * - A sample private IP and a public IP will be assigned to the instance
+ * - Mock Member will publish Instance Started and Instance Activated events once the thread is started
+ * - Afterwards it will start publishing sample health statistics values to CEP
+ * - If the Mock IaaS was asked to terminate an instance it will stop the relevant thread
+ */
+public class MockIaasService {
+
+ private static final Log log = LogFactory.getLog(MockIaasService.class);
+ private static final String MOCK_IAAS_MEMBERS = "/mock/iaas/members";
+ private static volatile MockIaasService instance;
+
+ private ExecutorService executorService;
+ private MockPartitionValidator partitionValidator;
+ private ConcurrentHashMap<String, MockMember> membersMap;
+
+ private MockIaasService() {
+ super();
+ executorService = StratosThreadPool.getExecutorService("MOCK_IAAS_THREAD_EXECUTOR", 100);
+ partitionValidator = new MockPartitionValidator();
+ membersMap = readFromRegistry();
+ if(membersMap == null) {
+ // No members found in registry, create a new map
+ membersMap = new ConcurrentHashMap<String, MockMember>();
+ }
+ }
+
+ public static MockIaasService getInstance() {
+ if (instance == null) {
+ synchronized (MockIaasService.class) {
+ if (instance == null) {
+ instance = new MockIaasService();
+ }
+ }
+ }
+ return instance;
+ }
+
+ /**
+ * Start mock members if present in registry
+ */
+ public static void startMockMembersIfPresentInRegistry() {
+ ConcurrentHashMap<String, MockMember> membersMap = readFromRegistry();
+ if(membersMap != null) {
+ ExecutorService executorService = StratosThreadPool.getExecutorService("MOCK_IAAS_THREAD_EXECUTOR", 100);
+ for (MockMember mockMember : membersMap.values()) {
+ executorService.submit(mockMember);
+ }
+ }
+ }
+
+ public NodeMetadata createInstance(ClusterContext clusterContext, MemberContext memberContext) {
+ synchronized (MockIaasService.class) {
+ // Create mock member instance
+ MockMemberContext mockMemberContext = new MockMemberContext(clusterContext.getCartridgeType(),
+ clusterContext.getClusterId(), memberContext.getMemberId(), memberContext.getNetworkPartitionId(),
+ memberContext.getPartition().getId(), memberContext.getInstanceId());
+ MockMember mockMember = new MockMember(mockMemberContext);
+ membersMap.put(mockMember.getMockMemberContext().getMemberId(), mockMember);
+ executorService.submit(mockMember);
+
+ // Prepare node metadata
+ MockNodeMetadata nodeMetadata = new MockNodeMetadata();
+ nodeMetadata.setId(UUID.randomUUID().toString());
+
+ // Persist changes
+ persistInRegistry();
+
+ return nodeMetadata;
+ }
+ }
+
+ private void persistInRegistry() {
+ try {
+ RegistryManager.getInstance().persist(MOCK_IAAS_MEMBERS, membersMap);
+ } catch (RegistryException e) {
+ log.error("Could not persist mock iaas members in registry", e);
+ };
+ }
+
+ private static ConcurrentHashMap<String, MockMember> readFromRegistry() {
+ return (ConcurrentHashMap<String, MockMember>) RegistryManager.getInstance().read(MOCK_IAAS_MEMBERS);
+ }
+
+ public void allocateIpAddress(String clusterId, MemberContext memberContext, Partition partition,
+ String cartridgeType, NodeMetadata node) {
+ // Allocate mock ip addresses
+ memberContext.setPrivateIpAddress(MockIPAddressPool.getInstance().getNextPrivateIpAddress());
+ memberContext.setPublicIpAddress(MockIPAddressPool.getInstance().getNextPublicIpAddress());
+ }
+
+ public void releaseAddress(String ip) {
+
+ }
+
+ public boolean isValidRegion(String region) throws InvalidRegionException {
+ return true;
+ }
+
+ public boolean isValidZone(String region, String zone) throws InvalidZoneException, InvalidRegionException {
+ return true;
+ }
+
+ public boolean isValidHost(String zone, String host) throws InvalidHostException {
+ return true;
+ }
+
+ public PartitionValidator getPartitionValidator() {
+ return partitionValidator;
+ }
+
+ public String createVolume(int sizeGB, String snapshotId) {
+ return null;
+ }
+
+ public String attachVolume(String instanceId, String volumeId, String deviceName) {
+ return null;
+ }
+
+ public void detachVolume(String instanceId, String volumeId) {
+
+ }
+
+ public void deleteVolume(String volumeId) {
+
+ }
+
+ public String getIaasDevice(String device) {
+ return null;
+ }
+
+ public void setDynamicPayload(byte[] payload) {
+
+ }
+
+ public void terminateInstance(MemberContext memberContext) throws InvalidCartridgeTypeException, InvalidMemberException {
+ synchronized (MockIaasService.class) {
+ MockMember mockMember = membersMap.get(memberContext.getMemberId());
+ if (mockMember != null) {
+ mockMember.terminate();
+ membersMap.remove(memberContext.getMemberId());
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
index ed1b0f5..b60021b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
@@ -25,6 +25,7 @@ import com.hazelcast.core.HazelcastInstance;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.context.CloudControllerContext;
+import org.apache.stratos.cloud.controller.iaases.mock.MockIaasService;
import org.apache.stratos.cloud.controller.messaging.receiver.application.ApplicationTopicReceiver;
import org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver;
import org.apache.stratos.cloud.controller.exception.CloudControllerException;
@@ -105,6 +106,9 @@ public class CloudControllerServiceComponent {
} else {
executeCoordinatorTasks();
}
+
+ // Start mock members if present in registry
+ MockIaasService.startMockMembersIfPresentInRegistry();
} catch (Throwable e) {
log.error("******* Cloud Controller Service bundle is failed to activate ****", e);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/registry/RegistryManager.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/registry/RegistryManager.java
index bcb4e7a..20921e8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/registry/RegistryManager.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/registry/RegistryManager.java
@@ -1,4 +1,3 @@
-package org.apache.stratos.cloud.controller.registry;
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,14 +19,13 @@ package org.apache.stratos.cloud.controller.registry;
*
*/
+package org.apache.stratos.cloud.controller.registry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cloud.controller.context.CloudControllerContext;
import org.apache.stratos.cloud.controller.exception.CloudControllerException;
import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
import org.apache.stratos.cloud.controller.internal.ServiceReferenceHolder;
-import org.apache.stratos.messaging.domain.topology.Topology;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.Resource;
http://git-wip-us.apache.org/repos/asf/stratos/blob/48c36407/features/cloud-controller/org.apache.stratos.cloud.controller.feature/src/main/resources/conf/cloud-controller.xml
----------------------------------------------------------------------
diff --git a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/src/main/resources/conf/cloud-controller.xml b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/src/main/resources/conf/cloud-controller.xml
index 8b6f405..c246e67 100644
--- a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/src/main/resources/conf/cloud-controller.xml
+++ b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/src/main/resources/conf/cloud-controller.xml
@@ -68,7 +68,7 @@
<credential svns:secretAlias="cloud.controller.docker.credential">credential</credential>
</iaasProvider>
<iaasProvider type="mock" name="Mock">
- <className>org.apache.stratos.cloud.controller.iaases.mock.MockIaas</className>
+ <className>org.apache.stratos.cloud.controller.iaases.MockIaas</className>
<provider>mock</provider>
<identity svns:secretAlias="cloud.controller.docker.identity">identity</identity>
<credential svns:secretAlias="cloud.controller.docker.credential">credential</credential>