@@ -116,6 +116,38 @@ func (s *ApiService) CreateInstance(ctx context.Context, request oapi.CreateInst
116116 networkEnabled = * request .Body .Network .Enabled
117117 }
118118
119+ // Parse network bandwidth limits (0 = auto)
120+ var networkBandwidthDownload int64
121+ var networkBandwidthUpload int64
122+ if request .Body .Network != nil {
123+ if request .Body .Network .BandwidthDownload != nil && * request .Body .Network .BandwidthDownload != "" {
124+ var bwBytes datasize.ByteSize
125+ bwStr := * request .Body .Network .BandwidthDownload
126+ bwStr = strings .TrimSuffix (bwStr , "/s" )
127+ bwStr = strings .TrimSuffix (bwStr , "ps" )
128+ if err := bwBytes .UnmarshalText ([]byte (bwStr )); err != nil {
129+ return oapi.CreateInstance400JSONResponse {
130+ Code : "invalid_bandwidth_download" ,
131+ Message : fmt .Sprintf ("invalid bandwidth_download format: %v" , err ),
132+ }, nil
133+ }
134+ networkBandwidthDownload = int64 (bwBytes )
135+ }
136+ if request .Body .Network .BandwidthUpload != nil && * request .Body .Network .BandwidthUpload != "" {
137+ var bwBytes datasize.ByteSize
138+ bwStr := * request .Body .Network .BandwidthUpload
139+ bwStr = strings .TrimSuffix (bwStr , "/s" )
140+ bwStr = strings .TrimSuffix (bwStr , "ps" )
141+ if err := bwBytes .UnmarshalText ([]byte (bwStr )); err != nil {
142+ return oapi.CreateInstance400JSONResponse {
143+ Code : "invalid_bandwidth_upload" ,
144+ Message : fmt .Sprintf ("invalid bandwidth_upload format: %v" , err ),
145+ }, nil
146+ }
147+ networkBandwidthUpload = int64 (bwBytes )
148+ }
149+ }
150+
119151 // Parse devices (GPU passthrough)
120152 var deviceRefs []string
121153 if request .Body .Devices != nil {
@@ -163,18 +195,20 @@ func (s *ApiService) CreateInstance(ctx context.Context, request oapi.CreateInst
163195 }
164196
165197 domainReq := instances.CreateInstanceRequest {
166- Name : request .Body .Name ,
167- Image : request .Body .Image ,
168- Size : size ,
169- HotplugSize : hotplugSize ,
170- OverlaySize : overlaySize ,
171- Vcpus : vcpus ,
172- DiskIOBps : diskIOBps ,
173- Env : env ,
174- NetworkEnabled : networkEnabled ,
175- Devices : deviceRefs ,
176- Volumes : volumes ,
177- Hypervisor : hvType ,
198+ Name : request .Body .Name ,
199+ Image : request .Body .Image ,
200+ Size : size ,
201+ HotplugSize : hotplugSize ,
202+ OverlaySize : overlaySize ,
203+ Vcpus : vcpus ,
204+ DiskIOBps : diskIOBps ,
205+ NetworkBandwidthDownload : networkBandwidthDownload ,
206+ NetworkBandwidthUpload : networkBandwidthUpload ,
207+ Env : env ,
208+ NetworkEnabled : networkEnabled ,
209+ Devices : deviceRefs ,
210+ Volumes : volumes ,
211+ Hypervisor : hvType ,
178212 }
179213
180214 inst , err := s .InstanceManager .CreateInstance (ctx , domainReq )
0 commit comments