Skip to content

Commit 59651bd

Browse files
committed
Allow managing GPU inventory and mapping a gpu device to gpu offering
1 parent 58cb165 commit 59651bd

File tree

87 files changed

+2249
-2198
lines changed

Some content is hidden

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

87 files changed

+2249
-2198
lines changed

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

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public class VgpuTypesInfo {
2424
private GpuDevice.DeviceType deviceType;
2525
private String parentBusAddress;
2626
private String busAddress;
27+
private String numaNode;
28+
private String pciRoot;
2729
private String deviceId;
2830
private String deviceName;
2931
private String vendorId;
@@ -67,6 +69,10 @@ public Long getMaxVpuPerGpu() {
6769
return maxVgpuPerGpu;
6870
}
6971

72+
public void setMaxVgpuPerGpu(Long maxVgpuPerGpu) {
73+
this.maxVgpuPerGpu = maxVgpuPerGpu;
74+
}
75+
7076
public Long getRemainingCapacity() {
7177
return remainingCapacity;
7278
}
@@ -115,6 +121,22 @@ public void setBusAddress(String busAddress) {
115121
this.busAddress = busAddress;
116122
}
117123

124+
public String getNumaNode() {
125+
return numaNode;
126+
}
127+
128+
public void setNumaNode(String numaNode) {
129+
this.numaNode = numaNode;
130+
}
131+
132+
public String getPciRoot() {
133+
return pciRoot;
134+
}
135+
136+
public void setPciRoot(String pciRoot) {
137+
this.pciRoot = pciRoot;
138+
}
139+
118140
public String getDeviceId() {
119141
return deviceId;
120142
}
@@ -155,7 +177,24 @@ public void setVmName(String vmName) {
155177
this.vmName = vmName;
156178
}
157179

158-
public VgpuTypesInfo(GpuDevice.DeviceType deviceType, String groupName, String modelName, String busAddress, String vendorId, String vendorName, String deviceId, String deviceName) {
180+
public VgpuTypesInfo(GpuDevice.DeviceType deviceType, String groupName, String modelName, String busAddress,
181+
String vendorId, String vendorName, String deviceId, String deviceName, String numaNode, String pciRoot
182+
) {
183+
this.deviceType = deviceType;
184+
this.groupName = groupName;
185+
this.modelName = modelName;
186+
this.busAddress = busAddress;
187+
this.deviceId = deviceId;
188+
this.deviceName = deviceName;
189+
this.vendorId = vendorId;
190+
this.vendorName = vendorName;
191+
this.numaNode = numaNode;
192+
this.pciRoot = pciRoot;
193+
}
194+
195+
public VgpuTypesInfo(GpuDevice.DeviceType deviceType, String groupName, String modelName, String busAddress,
196+
String vendorId, String vendorName, String deviceId, String deviceName
197+
) {
159198
this.deviceType = deviceType;
160199
this.groupName = groupName;
161200
this.modelName = modelName;
@@ -166,8 +205,9 @@ public VgpuTypesInfo(GpuDevice.DeviceType deviceType, String groupName, String m
166205
this.vendorName = vendorName;
167206
}
168207

169-
public VgpuTypesInfo(String groupName, String modelName, Long videoRam, Long maxHeads, Long maxResolutionX, Long maxResolutionY, Long maxVgpuPerGpu,
170-
Long remainingCapacity, Long maxCapacity) {
208+
public VgpuTypesInfo(String groupName, String modelName, Long videoRam, Long maxHeads, Long maxResolutionX,
209+
Long maxResolutionY, Long maxVgpuPerGpu, Long remainingCapacity, Long maxCapacity
210+
) {
171211
this.groupName = groupName;
172212
this.modelName = modelName;
173213
this.videoRam = videoRam;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ enum ResourceType { // All storage type resources are allocated_storage and not
3737
backup("backup", 12),
3838
backup_storage("backup_storage", 13),
3939
bucket("bucket", 14),
40-
object_storage("object_storage", 15);
40+
object_storage("object_storage", 15),
41+
gpu("gpu", 16);
4142

4243
private String name;
4344
private int ordinal;

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.apache.cloudstack.config.Configuration;
3131
import org.apache.cloudstack.datacenter.DataCenterIpv4GuestSubnet;
3232
import org.apache.cloudstack.gpu.GpuCard;
33-
import org.apache.cloudstack.gpu.GpuOffering;
33+
import org.apache.cloudstack.gpu.GpuDevice;
3434
import org.apache.cloudstack.gpu.VgpuProfile;
3535
import org.apache.cloudstack.ha.HAConfig;
3636
import org.apache.cloudstack.network.BgpPeer;
@@ -379,11 +379,6 @@ public class EventTypes {
379379
public static final String EVENT_DISK_OFFERING_EDIT = "DISK.OFFERING.EDIT";
380380
public static final String EVENT_DISK_OFFERING_DELETE = "DISK.OFFERING.DELETE";
381381

382-
// GPU Offerings
383-
public static final String EVENT_GPU_OFFERING_CREATE = "GPU.OFFERING.CREATE";
384-
public static final String EVENT_GPU_OFFERING_EDIT = "GPU.OFFERING.EDIT";
385-
public static final String EVENT_GPU_OFFERING_DELETE = "GPU.OFFERING.DELETE";
386-
387382
// GPU Cards
388383
public static final String EVENT_GPU_CARD_CREATE = "GPU.CARD.CREATE";
389384
public static final String EVENT_GPU_CARD_EDIT = "GPU.CARD.EDIT";
@@ -394,6 +389,11 @@ public class EventTypes {
394389
public static final String EVENT_VGPU_PROFILE_EDIT = "VGPU.PROFILE.EDIT";
395390
public static final String EVENT_VGPU_PROFILE_DELETE = "VGPU.PROFILE.DELETE";
396391

392+
// GPU Devices
393+
public static final String EVENT_GPU_DEVICE_CREATE = "GPU.DEVICE.CREATE";
394+
public static final String EVENT_GPU_DEVICE_EDIT = "GPU.DEVICE.EDIT";
395+
public static final String EVENT_GPU_DEVICE_DELETE = "GPU.DEVICE.DELETE";
396+
397397
// Network offerings
398398
public static final String EVENT_NETWORK_OFFERING_CREATE = "NETWORK.OFFERING.CREATE";
399399
public static final String EVENT_NETWORK_OFFERING_ASSIGN = "NETWORK.OFFERING.ASSIGN";
@@ -1018,11 +1018,6 @@ public class EventTypes {
10181018
entityEventDetails.put(EVENT_DISK_OFFERING_EDIT, DiskOffering.class);
10191019
entityEventDetails.put(EVENT_DISK_OFFERING_DELETE, DiskOffering.class);
10201020

1021-
// GPU Offerings
1022-
entityEventDetails.put(EVENT_GPU_OFFERING_CREATE, GpuOffering.class);
1023-
entityEventDetails.put(EVENT_GPU_OFFERING_EDIT, GpuOffering.class);
1024-
entityEventDetails.put(EVENT_GPU_OFFERING_DELETE, GpuOffering.class);
1025-
10261021
// GPU Cards
10271022
entityEventDetails.put(EVENT_GPU_CARD_CREATE, GpuCard.class);
10281023
entityEventDetails.put(EVENT_GPU_CARD_EDIT, GpuCard.class);
@@ -1033,6 +1028,11 @@ public class EventTypes {
10331028
entityEventDetails.put(EVENT_VGPU_PROFILE_EDIT, VgpuProfile.class);
10341029
entityEventDetails.put(EVENT_VGPU_PROFILE_DELETE, VgpuProfile.class);
10351030

1031+
// GPU Devices
1032+
entityEventDetails.put(EVENT_GPU_DEVICE_CREATE, GpuDevice.class);
1033+
entityEventDetails.put(EVENT_GPU_DEVICE_EDIT, GpuDevice.class);
1034+
entityEventDetails.put(EVENT_GPU_DEVICE_DELETE, GpuDevice.class);
1035+
10361036
// Network offerings
10371037
entityEventDetails.put(EVENT_NETWORK_OFFERING_CREATE, NetworkOffering.class);
10381038
entityEventDetails.put(EVENT_NETWORK_OFFERING_ASSIGN, NetworkOffering.class);

api/src/main/java/com/cloud/offering/ServiceOffering.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ public interface ServiceOffering extends InfrastructureEntity, InternalIdentity,
3636

3737
static final String PURGE_DB_ENTITIES_KEY = "purge.db.entities";
3838

39-
Integer getGpuCount();
40-
4139
enum State {
4240
Inactive, Active,
4341
}
@@ -145,5 +143,7 @@ enum StorageType {
145143

146144
void setDiskOfferingStrictness(boolean diskOfferingStrictness);
147145

148-
Long getGpuOfferingId();
146+
Long getVgpuProfileId();
147+
148+
Integer getGpuCount();
149149
}

api/src/main/java/com/cloud/user/ResourceLimitService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public interface ResourceLimitService {
5151
static final ConfigKey<Long> DefaultMaxDomainProjects = new ConfigKey<>("Domain Defaults",Long.class,"max.domain.projects","50",
5252
"The default maximum number of projects that can be created for a domain",false);
5353

54-
static final List<ResourceType> HostTagsSupportingTypes = List.of(ResourceType.user_vm, ResourceType.cpu, ResourceType.memory);
54+
static final List<ResourceType> HostTagsSupportingTypes = List.of(ResourceType.user_vm, ResourceType.cpu, ResourceType.memory, ResourceType.gpu);
5555
static final List<ResourceType> StorageTagsSupportingTypes = List.of(ResourceType.volume, ResourceType.primary_storage);
5656

5757
/**

api/src/main/java/org/apache/cloudstack/annotation/AnnotationService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ enum EntityType {
4242
VM_SNAPSHOT(true), INSTANCE_GROUP(true), SSH_KEYPAIR(true), USER_DATA(true),
4343
NETWORK(true), VPC(true), PUBLIC_IP_ADDRESS(true), VPN_CUSTOMER_GATEWAY(true),
4444
TEMPLATE(true), ISO(true), KUBERNETES_CLUSTER(true),
45-
SERVICE_OFFERING(false), DISK_OFFERING(false), NETWORK_OFFERING(false), GPU_OFFERING(false),
45+
SERVICE_OFFERING(false), DISK_OFFERING(false), NETWORK_OFFERING(false),
4646
ZONE(false), POD(false), CLUSTER(false), HOST(false), DOMAIN(false),
4747
PRIMARY_STORAGE(false), SECONDARY_STORAGE(false), VR(false), SYSTEM_VM(false),
4848
AUTOSCALE_VM_GROUP(true), MANAGEMENT_SERVER(false), OBJECT_STORAGE(false);
@@ -83,7 +83,6 @@ static public List<EntityType> getNotAllowedTypesForNonAdmins(RoleType roleType)
8383
list.add(EntityType.DOMAIN);
8484
list.add(EntityType.SERVICE_OFFERING);
8585
list.add(EntityType.DISK_OFFERING);
86-
list.add(EntityType.GPU_OFFERING);
8786
}
8887
return list;
8988
}

api/src/main/java/org/apache/cloudstack/api/ApiCommandResourceType.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ public enum ApiCommandResourceType {
7070
Project(com.cloud.projects.Project.class),
7171
Domain(com.cloud.domain.Domain.class),
7272
DiskOffering(com.cloud.offering.DiskOffering.class),
73-
GpuOffering(org.apache.cloudstack.gpu.GpuOffering.class),
7473
ServiceOffering(com.cloud.offering.ServiceOffering.class),
7574
NetworkOffering(com.cloud.offering.NetworkOffering.class),
7675
VpcOffering(com.cloud.network.vpc.VpcOffering.class),

api/src/main/java/org/apache/cloudstack/api/ApiConstants.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ public class ApiConstants {
370370
public static final String NEW_START_IP = "newstartip";
371371
public static final String NEW_END_IP = "newendip";
372372
public static final String KUBERNETES_NODE_VERSION = "kubernetesnodeversion";
373+
public static final String NUMA_NODE = "numanode";
373374
public static final String NUM_RETRIES = "numretries";
374375
public static final String OFFER_HA = "offerha";
375376
public static final String OS_DISTRIBUTION = "osdistribution";
@@ -389,8 +390,8 @@ public class ApiConstants {
389390
public static final String GPU_CARD_ID = "gpucardid";
390391
public static final String GPU_CARD_NAME = "gpucardname";
391392
public static final String GPU_COUNT = "gpucount";
392-
public static final String GPU_OFFERING_ID = "gpuofferingid";
393-
public static final String GPU_OFFERING_NAME = "gpuofferingname";
393+
public static final String GPU_DEVICE_TYPE = "gpudevicetype";
394+
public static final String MAX_VGPU_PER_PHYSICAL_GPU = "maxvgpuperphysicalgpu";
394395
public static final String GUEST_OS_LIST = "guestoslist";
395396
public static final String GUEST_OS_COUNT = "guestoscount";
396397
public static final String OS_MAPPING_CHECK_ENABLED = "osmappingcheckenabled";
@@ -406,6 +407,7 @@ public class ApiConstants {
406407
public static final String PARENT_SUBNET = "parentsubnet";
407408
public static final String PARENT_TEMPLATE_ID = "parenttemplateid";
408409
public static final String PASSWORD = "password";
410+
public static final String PCI_ROOT = "pciroot";
409411
public static final String CURRENT_PASSWORD = "currentpassword";
410412
public static final String SHOULD_UPDATE_PASSWORD = "update_passwd_on_host";
411413
public static final String PASSWORD_ENABLED = "passwordenabled";
@@ -570,7 +572,6 @@ public class ApiConstants {
570572
public static final String VENDOR_NAME = "vendorname";
571573
public static final String VGPU_PROFILE_ID = "vgpuprofileid";
572574
public static final String VGPU_PROFILE_NAME = "vgpuprofilename";
573-
public static final String VGPU_PROFILE_IDS = "vgpuprofileids";
574575
public static final String VIRTUAL_MACHINE_ID = "virtualmachineid";
575576
public static final String VIRTUAL_MACHINE_IDS = "virtualmachineids";
576577
public static final String VIRTUAL_MACHINE_NAME = "virtualmachinename";
@@ -579,7 +580,6 @@ public class ApiConstants {
579580
public static final String VIRTUAL_MACHINE_TYPE = "virtualmachinetype";
580581
public static final String VIRTUAL_MACHINE_STATE = "vmstate";
581582
public static final String VIRTUAL_MACHINES = "virtualmachines";
582-
public static final String VRAM_SIZE = "vramsize";
583583
public static final String USAGE_ID = "usageid";
584584
public static final String USAGE_TYPE = "usagetype";
585585
public static final String INCLUDE_TAGS = "includetags";
@@ -1314,7 +1314,7 @@ public enum HostDetails {
13141314
}
13151315

13161316
public enum VMDetails {
1317-
all, group, nics, stats, secgrp, tmpl, servoff, diskoff, gpuoff, backoff, iso, volume, min, affgrp, vnfnics;
1317+
all, group, nics, stats, secgrp, tmpl, servoff, diskoff, backoff, iso, volume, min, affgrp, vnfnics;
13181318
}
13191319

13201320
public enum DomainDetails {

api/src/main/java/org/apache/cloudstack/api/command/admin/gpu/CreateGpuCardCmd.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,6 @@ public class CreateGpuCardCmd extends BaseCmd {
6666
description = "the vendor ID of the GPU card")
6767
private String vendorId;
6868

69-
@Parameter(name = ApiConstants.VRAM_SIZE, type = CommandType.LONG, description = "the VRAM "
70-
+ "size of "
71-
+ "the GPU "
72-
+ "card in MB")
73-
private Long vramSize;
74-
7569
/// //////////////////////////////////////////////////
7670
/// //////////////// Accessors ///////////////////////
7771
/// //////////////////////////////////////////////////
@@ -96,10 +90,6 @@ public String getVendorId() {
9690
return vendorId;
9791
}
9892

99-
public Long getVramSize() {
100-
return vramSize;
101-
}
102-
10393
@Override
10494
public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
10595
ServerApiException, ConcurrentOperationException,

0 commit comments

Comments
 (0)