Skip to content

Commit a1271b3

Browse files
authored
Merge branch 'main' into remove-trailing-whitespace
2 parents 768a67a + 1a9efe8 commit a1271b3

File tree

509 files changed

+37232
-2476
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

509 files changed

+37232
-2476
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@ jobs:
8989
smoke/test_nested_virtualization
9090
smoke/test_set_sourcenat
9191
smoke/test_webhook_lifecycle
92-
smoke/test_purge_expunged_vms",
92+
smoke/test_purge_expunged_vms
93+
smoke/test_extension_lifecycle
94+
smoke/test_extension_custom_action_lifecycle
95+
smoke/test_extension_custom",
9396
"smoke/test_network
9497
smoke/test_network_acl
9598
smoke/test_network_ipv6

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717
---
18-
default_stages: [commit, push]
18+
default_stages: [pre-commit, pre-push]
1919
default_language_version:
2020
# force all unspecified Python hooks to run python3
2121
python: python3
22-
minimum_pre_commit_version: "2.17.0"
22+
minimum_pre_commit_version: "3.2.0"
2323
repos:
2424
- repo: meta
2525
hooks:
@@ -32,7 +32,7 @@ repos:
3232
name: run gitleaks
3333
description: detect hardcoded secrets
3434
- repo: https://github.com/pre-commit/pre-commit-hooks
35-
rev: v4.6.0
35+
rev: v5.0.0
3636
hooks:
3737
#- id: check-added-large-files
3838
- id: check-case-conflict

api/src/main/java/com/cloud/agent/api/Command.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@
1919
import java.util.HashMap;
2020
import java.util.Map;
2121

22-
import com.cloud.agent.api.LogLevel.Log4jLevel;
23-
import org.apache.logging.log4j.Logger;
2422
import org.apache.logging.log4j.LogManager;
23+
import org.apache.logging.log4j.Logger;
24+
25+
import com.cloud.agent.api.LogLevel.Log4jLevel;
2526

2627
/**
2728
* implemented by classes that extends the Command class. Command specifies
@@ -60,6 +61,7 @@ public enum State {
6061
private int wait; //in second
6162
private boolean bypassHostMaintenance = false;
6263
private transient long requestSequence = 0L;
64+
protected Map<String, Map<String, String>> externalDetails;
6365

6466
protected Command() {
6567
this.wait = 0;
@@ -128,6 +130,14 @@ public void setRequestSequence(long requestSequence) {
128130
this.requestSequence = requestSequence;
129131
}
130132

133+
public void setExternalDetails(Map<String, Map<String, String>> externalDetails) {
134+
this.externalDetails = externalDetails;
135+
}
136+
137+
public Map<String, Map<String, String>> getExternalDetails() {
138+
return externalDetails;
139+
}
140+
131141
@Override
132142
public boolean equals(Object o) {
133143
if (this == o) return true;

api/src/main/java/com/cloud/agent/api/to/FirewallRuleTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class FirewallRuleTO implements InternalIdentity {
4747
int[] srcPortRange;
4848
boolean revoked;
4949
boolean alreadyAdded;
50-
private List<String> sourceCidrList;
50+
protected List<String> sourceCidrList;
5151
private List<String> destCidrList;
5252
FirewallRule.Purpose purpose;
5353
private Integer icmpType;

api/src/main/java/com/cloud/agent/api/to/PortForwardingRuleTO.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import com.cloud.utils.net.NetUtils;
2222
import org.apache.commons.lang3.StringUtils;
2323

24-
import java.util.List;
25-
2624
/**
2725
* PortForwardingRuleTO specifies one port forwarding rule.
2826
*
@@ -32,8 +30,6 @@ public class PortForwardingRuleTO extends FirewallRuleTO {
3230
String dstIp;
3331
int[] dstPortRange;
3432

35-
List<String> sourceCidrList;
36-
3733
protected PortForwardingRuleTO() {
3834
super();
3935
}

api/src/main/java/com/cloud/agent/api/to/VirtualMachineTO.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919
import java.util.List;
2020
import java.util.Map;
2121
import java.util.HashMap;
22+
import java.util.stream.Collectors;
2223

2324
import com.cloud.agent.api.LogLevel;
2425
import com.cloud.network.element.NetworkElement;
2526
import com.cloud.template.VirtualMachineTemplate.BootloaderType;
2627
import com.cloud.vm.VirtualMachine;
2728
import com.cloud.vm.VirtualMachine.Type;
29+
import com.cloud.vm.VmDetailConstants;
2830

2931
public class VirtualMachineTO {
3032
private long id;
@@ -496,4 +498,16 @@ public void setMetadataProductName(String metadataProductName) {
496498
public String toString() {
497499
return String.format("VM {id: \"%s\", name: \"%s\", uuid: \"%s\", type: \"%s\"}", id, name, uuid, type);
498500
}
501+
502+
public Map<String, String> getExternalDetails() {
503+
if (details == null) {
504+
return new HashMap<>();
505+
}
506+
return details.entrySet().stream()
507+
.filter(entry -> entry.getKey().startsWith(VmDetailConstants.EXTERNAL_DETAIL_PREFIX))
508+
.collect(Collectors.toMap(
509+
entry -> entry.getKey().substring(VmDetailConstants.EXTERNAL_DETAIL_PREFIX.length()),
510+
Map.Entry::getValue
511+
));
512+
}
499513
}

api/src/main/java/com/cloud/configuration/ConfigurationService.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
package com.cloud.configuration;
1818

1919
import java.util.List;
20+
import java.util.Map;
21+
import java.util.Objects;
2022

23+
import com.cloud.network.Network;
24+
import org.apache.cloudstack.api.ApiConstants;
2125
import org.apache.cloudstack.api.command.admin.config.ResetCfgCmd;
2226
import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
2327
import org.apache.cloudstack.api.command.admin.network.CreateGuestNetworkIpv6PrefixCmd;
@@ -373,4 +377,16 @@ Vlan updateVlanAndPublicIpRange(UpdateVlanIpRangeCmd cmd) throws ConcurrentOpera
373377
List<? extends PortableIp> listPortableIps(long id);
374378

375379
Boolean isAccountAllowedToCreateOfferingsWithTags(IsAccountAllowedToCreateOfferingsWithTagsCmd cmd);
380+
381+
public static final Map<String, String> ProviderDetailKeyMap = Map.of(
382+
Network.Provider.Nsx.getName(), ApiConstants.NSX_DETAIL_KEY,
383+
Network.Provider.Netris.getName(), ApiConstants.NETRIS_DETAIL_KEY
384+
);
385+
386+
public static boolean IsIpRangeForProvider(Network.Provider provider) {
387+
if (Objects.isNull(provider)) {
388+
return false;
389+
}
390+
return ProviderDetailKeyMap.containsKey(provider.getName());
391+
}
376392
}

api/src/main/java/com/cloud/event/EventTypes.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@
2929
import org.apache.cloudstack.api.response.ZoneResponse;
3030
import org.apache.cloudstack.config.Configuration;
3131
import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
32+
import org.apache.cloudstack.extension.Extension;
33+
import org.apache.cloudstack.extension.ExtensionCustomAction;
3234
import org.apache.cloudstack.ha.HAConfig;
3335
import org.apache.cloudstack.network.BgpPeer;
3436
import org.apache.cloudstack.network.Ipv4GuestSubnetNetworkMap;
3537
import org.apache.cloudstack.quota.QuotaTariff;
36-
import org.apache.cloudstack.storage.sharedfs.SharedFS;
3738
import org.apache.cloudstack.storage.object.Bucket;
3839
import org.apache.cloudstack.storage.object.ObjectStore;
40+
import org.apache.cloudstack.storage.sharedfs.SharedFS;
3941
import org.apache.cloudstack.usage.Usage;
4042
import org.apache.cloudstack.vm.schedule.VMSchedule;
4143

@@ -499,6 +501,8 @@ public class EventTypes {
499501

500502
public static final String EVENT_ZONE_VLAN_ASSIGN = "ZONE.VLAN.ASSIGN";
501503
public static final String EVENT_ZONE_VLAN_RELEASE = "ZONE.VLAN.RELEASE";
504+
public static final String EVENT_ZONE_VXLAN_ASSIGN = "ZONE.VXLAN.ASSIGN";
505+
public static final String EVENT_ZONE_VXLAN_RELEASE = "ZONE.VXLAN.RELEASE";
502506

503507
// Projects
504508
public static final String EVENT_PROJECT_CREATE = "PROJECT.CREATE";
@@ -804,6 +808,7 @@ public class EventTypes {
804808
// Management Server
805809
public static final String EVENT_MANAGEMENT_SERVER_REMOVE = "MANAGEMENT.SERVER.REMOVE";
806810

811+
// VM Lease
807812
public static final String VM_LEASE_EXPIRED = "VM.LEASE.EXPIRED";
808813
public static final String VM_LEASE_DISABLED = "VM.LEASE.DISABLED";
809814
public static final String VM_LEASE_CANCELLED = "VM.LEASE.CANCELLED";
@@ -814,6 +819,19 @@ public class EventTypes {
814819
public static final String EVENT_GUI_THEME_REMOVE = "GUI.THEME.REMOVE";
815820
public static final String EVENT_GUI_THEME_UPDATE = "GUI.THEME.UPDATE";
816821

822+
// Extension
823+
public static final String EVENT_EXTENSION_CREATE = "EXTENSION.CREATE";
824+
public static final String EVENT_EXTENSION_UPDATE = "EXTENSION.UPDATE";
825+
public static final String EVENT_EXTENSION_DELETE = "EXTENSION.DELETE";
826+
public static final String EVENT_EXTENSION_RESOURCE_REGISTER = "EXTENSION.RESOURCE.REGISTER";
827+
public static final String EVENT_EXTENSION_RESOURCE_UNREGISTER = "EXTENSION.RESOURCE.UNREGISTER";
828+
public static final String EVENT_EXTENSION_CUSTOM_ACTION_ADD = "EXTENSION.CUSTOM.ACTION.ADD";
829+
public static final String EVENT_EXTENSION_CUSTOM_ACTION_UPDATE = "EXTENSION.CUSTOM.ACTION.UPDATE";
830+
public static final String EVENT_EXTENSION_CUSTOM_ACTION_DELETE = "EXTENSION.CUSTOM.ACTION.DELETE";
831+
832+
// Custom Action
833+
public static final String EVENT_CUSTOM_ACTION = "CUSTOM.ACTION";
834+
817835
static {
818836

819837
// TODO: need a way to force author adding event types to declare the entity details as well, with out braking
@@ -1322,6 +1340,16 @@ public class EventTypes {
13221340
entityEventDetails.put(EVENT_GUI_THEME_CREATE, "GuiTheme");
13231341
entityEventDetails.put(EVENT_GUI_THEME_REMOVE, "GuiTheme");
13241342
entityEventDetails.put(EVENT_GUI_THEME_UPDATE, "GuiTheme");
1343+
1344+
// Extension
1345+
entityEventDetails.put(EVENT_EXTENSION_CREATE, Extension.class);
1346+
entityEventDetails.put(EVENT_EXTENSION_UPDATE, Extension.class);
1347+
entityEventDetails.put(EVENT_EXTENSION_DELETE, Extension.class);
1348+
entityEventDetails.put(EVENT_EXTENSION_RESOURCE_REGISTER, Extension.class);
1349+
entityEventDetails.put(EVENT_EXTENSION_RESOURCE_UNREGISTER, Extension.class);
1350+
entityEventDetails.put(EVENT_EXTENSION_CUSTOM_ACTION_ADD, ExtensionCustomAction.class);
1351+
entityEventDetails.put(EVENT_EXTENSION_CUSTOM_ACTION_UPDATE, ExtensionCustomAction.class);
1352+
entityEventDetails.put(EVENT_EXTENSION_CUSTOM_ACTION_DELETE, ExtensionCustomAction.class);
13251353
}
13261354

13271355
public static boolean isNetworkEvent(String eventType) {

api/src/main/java/com/cloud/hypervisor/Hypervisor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public enum Functionality {
5454
public static final HypervisorType Ovm3 = new HypervisorType("Ovm3", ImageFormat.RAW);
5555
public static final HypervisorType LXC = new HypervisorType("LXC");
5656
public static final HypervisorType Custom = new HypervisorType("Custom", null, EnumSet.of(RootDiskSizeOverride));
57+
public static final HypervisorType External = new HypervisorType("External", null, EnumSet.of(RootDiskSizeOverride));
5758
public static final HypervisorType Any = new HypervisorType("Any"); /*If you don't care about the hypervisor type*/
5859
private final String name;
5960
private final ImageFormat imageFormat;

api/src/main/java/com/cloud/network/IpAddress.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,5 @@ enum Purpose {
9999

100100
boolean isForSystemVms();
101101

102+
boolean isForRouter();
102103
}

0 commit comments

Comments
 (0)