Repository: stratos Updated Branches: refs/heads/master 094b5fb6a -> 230f5f342
Updating mock iaas api to create the mock iaas service instance on demand Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/230f5f34 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/230f5f34 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/230f5f34 Branch: refs/heads/master Commit: 230f5f342cb0604c38854238eaae6eb419cf800b Parents: 094b5fb Author: Imesh Gunaratne <[email protected]> Authored: Sun Mar 29 07:34:59 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Sun Mar 29 07:34:59 2015 +0530 ---------------------------------------------------------------------- .../stratos/mock/iaas/api/MockIaasApi.java | 54 ++++++++++++-------- 1 file changed, 34 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/230f5f34/components/org.apache.stratos.mock.iaas.api/src/main/java/org/apache/stratos/mock/iaas/api/MockIaasApi.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.mock.iaas.api/src/main/java/org/apache/stratos/mock/iaas/api/MockIaasApi.java b/components/org.apache.stratos.mock.iaas.api/src/main/java/org/apache/stratos/mock/iaas/api/MockIaasApi.java index 9ffac45..8b7d4dc 100644 --- a/components/org.apache.stratos.mock.iaas.api/src/main/java/org/apache/stratos/mock/iaas/api/MockIaasApi.java +++ b/components/org.apache.stratos.mock.iaas.api/src/main/java/org/apache/stratos/mock/iaas/api/MockIaasApi.java @@ -47,18 +47,6 @@ public class MockIaasApi { private MockIaasService mockIaasService; public MockIaasApi() { - try { - try { - mockIaasService = (MockIaasService) PrivilegedCarbonContext.getThreadLocalCarbonContext(). - getOSGiService(MockIaasService.class); - } catch (NullPointerException ignore) { - // Above carbon context method throws a NPE if service is not registered - } - } catch (Exception e) { - String message = "Could not initialize Mock IaaS API"; - log.error(message, e); - throw new RuntimeException(message, e); - } } @POST @@ -71,7 +59,7 @@ public class MockIaasApi { validateMockIaasService(); log.info(String.format("Starting mock instance: [member-id] %s", mockInstanceContext.getMemberId())); - MockInstanceMetadata mockInstanceMetadata = mockIaasService.startInstance(mockInstanceContext); + MockInstanceMetadata mockInstanceMetadata = getMockIaasService().startInstance(mockInstanceContext); log.info(String.format("Mock instance started successfully: [member-id] %s [instance-id] %s", mockInstanceContext.getMemberId(), mockInstanceContext.getInstanceId())); return Response.ok(mockInstanceMetadata).build(); @@ -92,7 +80,7 @@ public class MockIaasApi { log.debug(String.format("Get mock instances")); - List<MockInstanceMetadata> mockInstanceMetadataList = mockIaasService.getInstances(); + List<MockInstanceMetadata> mockInstanceMetadataList = getMockIaasService().getInstances(); MockInstanceMetadata[] mockInstanceMetadataArray = mockInstanceMetadataList.toArray( new MockInstanceMetadata[mockInstanceMetadataList.size()]); return Response.ok(mockInstanceMetadataArray).build(); @@ -113,7 +101,7 @@ public class MockIaasApi { log.debug(String.format("Get mock instance: [instance-id] %s", instanceId)); - MockInstanceMetadata mockInstanceMetadata = mockIaasService.getInstance(instanceId); + MockInstanceMetadata mockInstanceMetadata = getMockIaasService().getInstance(instanceId); if(mockInstanceMetadata == null) { return Response.status(Response.Status.NOT_FOUND).build(); } @@ -137,11 +125,11 @@ public class MockIaasApi { log.info(String.format("Allocating ip addresses: [instance-id] %s", instanceId)); - MockInstanceMetadata mockInstanceMetadata = mockIaasService.getInstance(instanceId); + MockInstanceMetadata mockInstanceMetadata = getMockIaasService().getInstance(instanceId); if(mockInstanceMetadata == null) { return Response.status(Response.Status.NOT_FOUND).build(); } - mockInstanceMetadata = mockIaasService.allocateIpAddress(instanceId); + mockInstanceMetadata = getMockIaasService().allocateIpAddress(instanceId); log.info(String.format("IP addresses allocated: [instance-id] %s [default-private-ip] %s " + "[default-public-ip] %s", instanceId, mockInstanceMetadata.getDefaultPrivateIp(), mockInstanceMetadata.getDefaultPublicIp())); @@ -161,7 +149,7 @@ public class MockIaasApi { validateMockIaasService(); log.info(String.format("Terminating mock instance: [instance-id] %s", instanceId)); - mockIaasService.terminateInstance(instanceId); + getMockIaasService().terminateInstance(instanceId); log.info(String.format("Mock instance terminated successfully: [instance-id] %s", instanceId)); return Response.ok().build(); } catch (Exception e) { @@ -172,11 +160,37 @@ public class MockIaasApi { } /** + * Get mock iaas service instance + * @return + */ + private MockIaasService getMockIaasService() { + if(mockIaasService == null) { + synchronized (MockIaasApi.class) { + if(mockIaasService == null) { + try { + try { + mockIaasService = (MockIaasService) PrivilegedCarbonContext.getThreadLocalCarbonContext(). + getOSGiService(MockIaasService.class); + } catch (NullPointerException ignore) { + // Above carbon context method throws a NPE if service is not registered + } + } catch (Exception e) { + String message = "Could not initialize Mock IaaS API"; + log.error(message, e); + throw new RuntimeException(message, e); + } + } + } + } + return mockIaasService; + } + + /** * Validate mock iaas service. */ private void validateMockIaasService() { - if(mockIaasService == null) { - throw new RuntimeException(String.format("Mock IaaS is disabled, please check %s file", + if(getMockIaasService() == null) { + throw new RuntimeException(String.format("Mock IaaS may have been disabled, please check %s file", MockIaasConfig.MOCK_IAAS_CONFIG_FILE_NAME)); } }
