From 36b141ceeb3df970516d717bb865e5d837c065a1 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 8 May 2024 13:26:44 +0530 Subject: [PATCH 1/4] vpc,event: fix events for createVpc Fixes #8496 Signed-off-by: Abhishek Kumar --- .../main/java/com/cloud/network/vpc/VpcService.java | 2 ++ .../cloudstack/api/command/user/vpc/CreateVPCCmd.java | 6 +----- .../java/com/cloud/network/vpc/VpcManagerImpl.java | 10 ++++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/cloud/network/vpc/VpcService.java b/api/src/main/java/com/cloud/network/vpc/VpcService.java index 2cdc034a16e1..0f0d29f4082c 100644 --- a/api/src/main/java/com/cloud/network/vpc/VpcService.java +++ b/api/src/main/java/com/cloud/network/vpc/VpcService.java @@ -132,6 +132,8 @@ Pair, Integer> listVpcs(Long id, String vpcName, String disp */ boolean startVpc(long vpcId, boolean destroyOnFailure) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException; + void startVpc(CreateVPCCmd cmd) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException; + /** * Shuts down the VPC which includes shutting down all VPC provider and rules cleanup on the backend * diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java index 7ca66b2a471e..39f2b32751de 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java @@ -210,11 +210,7 @@ public void create() throws ResourceAllocationException { public void execute() { Vpc vpc = null; try { - if (isStart()) { - _vpcService.startVpc(getEntityId(), true); - } else { - s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); - } + _vpcService.startVpc(this); vpc = _entityMgr.findById(Vpc.class, getEntityId()); } catch (ResourceUnavailableException ex) { s_logger.warn("Exception: ", ex); diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index 58098ee38327..b14a49817750 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -1677,6 +1677,16 @@ public boolean startVpc(final long vpcId, final boolean destroyOnFailure) throws return result; } + + @Override + @ActionEvent(eventType = EventTypes.EVENT_VPC_CREATE, eventDescription = "creating vpc", async = true) + public void startVpc(final CreateVPCCmd cmd) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { + if (!cmd.isStart()) { + s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); + } + startVpc(cmd.getEntityId(), false); + } + protected boolean startVpc(final Vpc vpc, final DeployDestination dest, final ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { // deploy provider From 7dddea9ab3dfc0e9e5bc1d587c60b7667708d94a Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 8 May 2024 14:03:28 +0530 Subject: [PATCH 2/4] fix test Signed-off-by: Abhishek Kumar --- .../cloudstack/api/command/user/vpc/CreateVPCCmdTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java b/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java index 79f27fd6687e..a28e9e9fd04f 100644 --- a/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java +++ b/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java @@ -167,17 +167,16 @@ public void testCreate() throws ResourceAllocationException { @Test public void testExecute() throws ResourceUnavailableException, InsufficientCapacityException { - ReflectionTestUtils.setField(cmd, "start", true); Vpc vpc = Mockito.mock(Vpc.class); VpcResponse response = Mockito.mock(VpcResponse.class); ReflectionTestUtils.setField(cmd, "id", 1L); responseGenerator = Mockito.mock(ResponseGenerator.class); - Mockito.when(_vpcService.startVpc(1L, true)).thenReturn(true); + Mockito.doNothing().when(_vpcService).startVpc(cmd); Mockito.when(_entityMgr.findById(Mockito.eq(Vpc.class), Mockito.any(Long.class))).thenReturn(vpc); cmd._responseGenerator = responseGenerator; Mockito.when(responseGenerator.createVpcResponse(ResponseObject.ResponseView.Restricted, vpc)).thenReturn(response); cmd.execute(); - Mockito.verify(_vpcService, Mockito.times(1)).startVpc(Mockito.anyLong(), Mockito.anyBoolean()); + Mockito.verify(_vpcService, Mockito.times(1)).startVpc(cmd); } } From 4419a7386d5dad41a7293c4aecd77c9e3cd1cf46 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 8 May 2024 14:04:45 +0530 Subject: [PATCH 3/4] fix Signed-off-by: Abhishek Kumar --- server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index b14a49817750..7f8c8a022bc9 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -1683,6 +1683,7 @@ public boolean startVpc(final long vpcId, final boolean destroyOnFailure) throws public void startVpc(final CreateVPCCmd cmd) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { if (!cmd.isStart()) { s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); + return; } startVpc(cmd.getEntityId(), false); } From 985b5f493303d8d8fac22bbec39cd2db8da415b6 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 8 May 2024 16:32:16 +0530 Subject: [PATCH 4/4] Update server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java --- server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index 7f8c8a022bc9..c9391a321671 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -1685,7 +1685,7 @@ public void startVpc(final CreateVPCCmd cmd) throws ConcurrentOperationException s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); return; } - startVpc(cmd.getEntityId(), false); + startVpc(cmd.getEntityId(), true); } protected boolean startVpc(final Vpc vpc, final DeployDestination dest, final ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException,