tree 74a8f2dd7189d6c460e9e1769687d6013619ac70
parent e2183ed666d202cb5c83b3a640160bea52ab18fa
author Gabriel Beims Bräscher <gabriel@apache.org> 1622456546 -0300
committer GitHub <noreply@github.com> 1622456546 +0530
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgtLjiCRBK7hj4Ov3rIwAANAoIAHAqpEwGIZ4I3nAkiaUBxoRC
 czAeUHBQkuIrupbYmu7vkpt/l9Rnz91kUZaRUar2uGbl7NKnTIHtCkKdcsHVp06o
 C6prRtzeiAyj0KIOO1ivZT0BW5Ei4HbU3n0WiHYsA0JQO/LlMNJ6IOdCS2qXho9P
 U8Qezyeai11OMEXDL6q1uKJ4CZ7ZMcOVBRGE+2C7nPCDG1MUsY3hewOov/wVzyhx
 LFH7dLKwzFceiqHVwmohecBP6BQcEI4iN3/rKMZ3oOnmt/xCrynzadMBR2jv6mG1
 Gq5+lvPUrEESLsg8uIglcuhBc3JcirOfey0EGKUy3hn5kPTbaVR2v3JNw0K0ug4=
 =tHg3
 -----END PGP SIGNATURE-----
 

engine: fix network with SG disabled still has security group script adding rules on KVM (#5049)

This PR fixes #5047 which can be reproduced on Zones with _(I) Advanced Networks, (II) Security Groups enabled for the Zone, (III)  network offering without Security Groups_; for instance, `DefaultSharedNetworkOffering` which does not list Security Group as supported service.

The issue is due to the following code inside the method `VirtualMachineManagerImpl.orchestrateReboot`:
[VirtualMachineManagerImpl.java#L3340](https://github.com/apache/cloudstack/blob/280c13a4bb103dd748ec304bfe0714a148c24602/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java#L3340).

```
  final Answer rebootAnswer = cmds.getAnswer(RebootAnswer.class);
  if (rebootAnswer != null && rebootAnswer.getResult()) {
      if (dc.isSecurityGroupEnabled() && vm.getType() == VirtualMachine.Type.User) {
          List<Long> affectedVms = new ArrayList<Long>();
          affectedVms.add(vm.getId());
          _securityGroupManager.scheduleRulesetUpdateToHosts(affectedVms, true, null);
      }
      return;
  }
```