resources_test.yaml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. suite: container resources test
  2. templates:
  3. - common.yaml
  4. tests:
  5. - it: should create the resources correctly
  6. set:
  7. image: &image
  8. repository: nginx
  9. tag: 1.19.0
  10. pullPolicy: IfNotPresent
  11. workload:
  12. workload-name1:
  13. enabled: true
  14. primary: true
  15. type: Deployment
  16. podSpec:
  17. containers:
  18. container-name1:
  19. enabled: true
  20. primary: true
  21. imageSelector: image
  22. probes: &probes
  23. liveness:
  24. enabled: false
  25. readiness:
  26. enabled: false
  27. startup:
  28. enabled: false
  29. asserts:
  30. - documentIndex: &deploymentDoc 0
  31. isKind:
  32. of: Deployment
  33. - documentIndex: *deploymentDoc
  34. isAPIVersion:
  35. of: apps/v1
  36. - documentIndex: *deploymentDoc
  37. isSubset:
  38. path: spec.template.spec.containers[0]
  39. content:
  40. resources:
  41. limits:
  42. cpu: 4000m
  43. memory: 8Gi
  44. requests:
  45. cpu: 10m
  46. memory: 50Mi
  47. - it: should override the default limits
  48. set:
  49. image: *image
  50. workload:
  51. workload-name1:
  52. enabled: true
  53. primary: true
  54. type: Deployment
  55. podSpec:
  56. containers:
  57. container-name1:
  58. enabled: true
  59. primary: true
  60. imageSelector: image
  61. probes: *probes
  62. resources:
  63. limits:
  64. cpu: 2000m
  65. memory: 4Gi
  66. asserts:
  67. - documentIndex: &deploymentDoc 0
  68. isKind:
  69. of: Deployment
  70. - documentIndex: *deploymentDoc
  71. isAPIVersion:
  72. of: apps/v1
  73. - documentIndex: *deploymentDoc
  74. isSubset:
  75. path: spec.template.spec.containers[0]
  76. content:
  77. resources:
  78. limits:
  79. cpu: 2000m
  80. memory: 4Gi
  81. requests:
  82. cpu: 10m
  83. memory: 50Mi
  84. - it: should override the default limits.cpu
  85. set:
  86. image: *image
  87. workload:
  88. workload-name1:
  89. enabled: true
  90. primary: true
  91. type: Deployment
  92. podSpec:
  93. containers:
  94. container-name1:
  95. enabled: true
  96. primary: true
  97. imageSelector: image
  98. probes: *probes
  99. resources:
  100. limits:
  101. cpu: 2000m
  102. asserts:
  103. - documentIndex: &deploymentDoc 0
  104. isKind:
  105. of: Deployment
  106. - documentIndex: *deploymentDoc
  107. isAPIVersion:
  108. of: apps/v1
  109. - documentIndex: *deploymentDoc
  110. isSubset:
  111. path: spec.template.spec.containers[0]
  112. content:
  113. resources:
  114. limits:
  115. cpu: 2000m
  116. memory: 8Gi
  117. requests:
  118. cpu: 10m
  119. memory: 50Mi
  120. - it: should override the default limits.memory
  121. set:
  122. image: *image
  123. workload:
  124. workload-name1:
  125. enabled: true
  126. primary: true
  127. type: Deployment
  128. podSpec:
  129. containers:
  130. container-name1:
  131. enabled: true
  132. primary: true
  133. imageSelector: image
  134. probes: *probes
  135. resources:
  136. limits:
  137. memory: 4Gi
  138. asserts:
  139. - documentIndex: &deploymentDoc 0
  140. isKind:
  141. of: Deployment
  142. - documentIndex: *deploymentDoc
  143. isAPIVersion:
  144. of: apps/v1
  145. - documentIndex: *deploymentDoc
  146. isSubset:
  147. path: spec.template.spec.containers[0]
  148. content:
  149. resources:
  150. limits:
  151. cpu: 4000m
  152. memory: 4Gi
  153. requests:
  154. cpu: 10m
  155. memory: 50Mi
  156. - it: should not render limits.cpu
  157. set:
  158. image: *image
  159. workload:
  160. workload-name1:
  161. enabled: true
  162. primary: true
  163. type: Deployment
  164. podSpec:
  165. containers:
  166. container-name1:
  167. enabled: true
  168. primary: true
  169. imageSelector: image
  170. probes: *probes
  171. resources:
  172. limits:
  173. cpu: 0
  174. asserts:
  175. - documentIndex: &deploymentDoc 0
  176. isKind:
  177. of: Deployment
  178. - documentIndex: *deploymentDoc
  179. isAPIVersion:
  180. of: apps/v1
  181. - documentIndex: *deploymentDoc
  182. isSubset:
  183. path: spec.template.spec.containers[0]
  184. content:
  185. resources:
  186. limits:
  187. memory: 8Gi
  188. requests:
  189. cpu: 10m
  190. memory: 50Mi
  191. - it: should not render limits.memory
  192. set:
  193. image: *image
  194. workload:
  195. workload-name1:
  196. enabled: true
  197. primary: true
  198. type: Deployment
  199. podSpec:
  200. containers:
  201. container-name1:
  202. enabled: true
  203. primary: true
  204. imageSelector: image
  205. probes: *probes
  206. resources:
  207. limits:
  208. memory: 0
  209. asserts:
  210. - documentIndex: &deploymentDoc 0
  211. isKind:
  212. of: Deployment
  213. - documentIndex: *deploymentDoc
  214. isAPIVersion:
  215. of: apps/v1
  216. - documentIndex: *deploymentDoc
  217. isSubset:
  218. path: spec.template.spec.containers[0]
  219. content:
  220. resources:
  221. limits:
  222. cpu: 4000m
  223. requests:
  224. cpu: 10m
  225. memory: 50Mi
  226. - it: should override the default requests
  227. set:
  228. image: *image
  229. workload:
  230. workload-name1:
  231. enabled: true
  232. primary: true
  233. type: Deployment
  234. podSpec:
  235. containers:
  236. container-name1:
  237. enabled: true
  238. primary: true
  239. imageSelector: image
  240. probes: *probes
  241. resources:
  242. requests:
  243. cpu: 200m
  244. memory: 1Gi
  245. asserts:
  246. - documentIndex: &deploymentDoc 0
  247. isKind:
  248. of: Deployment
  249. - documentIndex: *deploymentDoc
  250. isAPIVersion:
  251. of: apps/v1
  252. - documentIndex: *deploymentDoc
  253. isSubset:
  254. path: spec.template.spec.containers[0]
  255. content:
  256. resources:
  257. limits:
  258. cpu: 4000m
  259. memory: 8Gi
  260. requests:
  261. cpu: 200m
  262. memory: 1Gi
  263. - it: should override the default requests.cpu
  264. set:
  265. image: *image
  266. workload:
  267. workload-name1:
  268. enabled: true
  269. primary: true
  270. type: Deployment
  271. podSpec:
  272. containers:
  273. container-name1:
  274. enabled: true
  275. primary: true
  276. imageSelector: image
  277. probes: *probes
  278. resources:
  279. requests:
  280. cpu: 200m
  281. asserts:
  282. - documentIndex: &deploymentDoc 0
  283. isKind:
  284. of: Deployment
  285. - documentIndex: *deploymentDoc
  286. isAPIVersion:
  287. of: apps/v1
  288. - documentIndex: *deploymentDoc
  289. isSubset:
  290. path: spec.template.spec.containers[0]
  291. content:
  292. resources:
  293. limits:
  294. cpu: 4000m
  295. memory: 8Gi
  296. requests:
  297. cpu: 200m
  298. memory: 50Mi
  299. - it: should override the default requests.memory
  300. set:
  301. image: *image
  302. workload:
  303. workload-name1:
  304. enabled: true
  305. primary: true
  306. type: Deployment
  307. podSpec:
  308. containers:
  309. container-name1:
  310. enabled: true
  311. primary: true
  312. imageSelector: image
  313. probes: *probes
  314. resources:
  315. requests:
  316. memory: 1Gi
  317. asserts:
  318. - documentIndex: &deploymentDoc 0
  319. isKind:
  320. of: Deployment
  321. - documentIndex: *deploymentDoc
  322. isAPIVersion:
  323. of: apps/v1
  324. - documentIndex: *deploymentDoc
  325. isSubset:
  326. path: spec.template.spec.containers[0]
  327. content:
  328. resources:
  329. limits:
  330. cpu: 4000m
  331. memory: 8Gi
  332. requests:
  333. cpu: 10m
  334. memory: 1Gi
  335. - it: should assign GPU on the primary pod/container
  336. set:
  337. image: *image
  338. scaleGPU:
  339. - gpu:
  340. nvidia.com/gpu: 1
  341. global:
  342. ixChartContext:
  343. addNvidiaRuntimeClass: true
  344. nvidiaRuntimeClassName: nvidia
  345. workload:
  346. workload-name1:
  347. enabled: true
  348. primary: true
  349. type: Deployment
  350. podSpec:
  351. containers:
  352. container-name1:
  353. enabled: true
  354. primary: true
  355. imageSelector: image
  356. probes: *probes
  357. container-name2:
  358. enabled: true
  359. primary: false
  360. imageSelector: image
  361. probes: *probes
  362. workload-name2:
  363. enabled: true
  364. primary: false
  365. type: Deployment
  366. podSpec:
  367. containers:
  368. container-name1:
  369. enabled: true
  370. primary: true
  371. imageSelector: image
  372. probes: *probes
  373. asserts:
  374. - documentIndex: &deploymentDoc 0
  375. isKind:
  376. of: Deployment
  377. - documentIndex: *deploymentDoc
  378. isAPIVersion:
  379. of: apps/v1
  380. - documentIndex: *deploymentDoc
  381. equal:
  382. path: spec.template.spec.runtimeClassName
  383. value: nvidia
  384. - documentIndex: *deploymentDoc
  385. isSubset:
  386. path: spec.template.spec.containers[0]
  387. content:
  388. resources:
  389. limits:
  390. cpu: 4000m
  391. memory: 8Gi
  392. nvidia.com/gpu: "1"
  393. requests:
  394. cpu: 10m
  395. memory: 50Mi
  396. - documentIndex: *deploymentDoc
  397. isSubset:
  398. path: spec.template.spec.containers[1]
  399. content:
  400. resources:
  401. limits:
  402. cpu: 4000m
  403. memory: 8Gi
  404. requests:
  405. cpu: 10m
  406. memory: 50Mi
  407. - documentIndex: &otherDeploymentDoc 1
  408. isKind:
  409. of: Deployment
  410. - documentIndex: *otherDeploymentDoc
  411. isAPIVersion:
  412. of: apps/v1
  413. - documentIndex: *otherDeploymentDoc
  414. isNull:
  415. path: spec.template.spec.runtimeClassName
  416. - documentIndex: *otherDeploymentDoc
  417. isSubset:
  418. path: spec.template.spec.containers[0]
  419. content:
  420. resources:
  421. limits:
  422. cpu: 4000m
  423. memory: 8Gi
  424. requests:
  425. cpu: 10m
  426. memory: 50Mi
  427. - it: should assign GPU on the selected pod/container
  428. set:
  429. image: *image
  430. global:
  431. ixChartContext:
  432. addNvidiaRuntimeClass: true
  433. nvidiaRuntimeClassName: nvidia
  434. scaleGPU:
  435. - gpu:
  436. nvidia.com/gpu: 1
  437. targetSelector:
  438. workload-name2:
  439. - container-name1
  440. workload:
  441. workload-name1:
  442. enabled: true
  443. primary: true
  444. type: Deployment
  445. podSpec:
  446. containers:
  447. container-name1:
  448. enabled: true
  449. primary: true
  450. imageSelector: image
  451. probes: *probes
  452. container-name2:
  453. enabled: true
  454. primary: false
  455. imageSelector: image
  456. probes: *probes
  457. workload-name2:
  458. enabled: true
  459. primary: false
  460. type: Deployment
  461. podSpec:
  462. containers:
  463. container-name1:
  464. enabled: true
  465. primary: true
  466. imageSelector: image
  467. probes: *probes
  468. asserts:
  469. - documentIndex: &deploymentDoc 0
  470. isKind:
  471. of: Deployment
  472. - documentIndex: *deploymentDoc
  473. isAPIVersion:
  474. of: apps/v1
  475. - documentIndex: *deploymentDoc
  476. isNull:
  477. path: spec.template.spec.runtimeClassName
  478. - documentIndex: *deploymentDoc
  479. isSubset:
  480. path: spec.template.spec.containers[0]
  481. content:
  482. resources:
  483. limits:
  484. cpu: 4000m
  485. memory: 8Gi
  486. requests:
  487. cpu: 10m
  488. memory: 50Mi
  489. - documentIndex: *deploymentDoc
  490. isSubset:
  491. path: spec.template.spec.containers[1]
  492. content:
  493. resources:
  494. limits:
  495. cpu: 4000m
  496. memory: 8Gi
  497. requests:
  498. cpu: 10m
  499. memory: 50Mi
  500. - documentIndex: &otherDeploymentDoc 1
  501. isKind:
  502. of: Deployment
  503. - documentIndex: *otherDeploymentDoc
  504. isAPIVersion:
  505. of: apps/v1
  506. - documentIndex: *otherDeploymentDoc
  507. equal:
  508. path: spec.template.spec.runtimeClassName
  509. value: nvidia
  510. - documentIndex: *otherDeploymentDoc
  511. isSubset:
  512. path: spec.template.spec.containers[0]
  513. content:
  514. resources:
  515. limits:
  516. cpu: 4000m
  517. memory: 8Gi
  518. nvidia.com/gpu: "1"
  519. requests:
  520. cpu: 10m
  521. memory: 50Mi
  522. - it: should assign GPU on the selected pods/containers
  523. set:
  524. image: *image
  525. global:
  526. ixChartContext:
  527. addNvidiaRuntimeClass: true
  528. nvidiaRuntimeClassName: nvidia
  529. scaleGPU:
  530. - gpu:
  531. nvidia.com/gpu: 1
  532. targetSelector:
  533. workload-name1:
  534. - container-name1
  535. - container-name2
  536. workload:
  537. workload-name1:
  538. enabled: true
  539. primary: true
  540. type: Deployment
  541. podSpec:
  542. containers:
  543. container-name1:
  544. enabled: true
  545. primary: true
  546. imageSelector: image
  547. probes: *probes
  548. container-name2:
  549. enabled: true
  550. primary: false
  551. imageSelector: image
  552. probes: *probes
  553. workload-name2:
  554. enabled: true
  555. primary: false
  556. type: Deployment
  557. podSpec:
  558. containers:
  559. container-name1:
  560. enabled: true
  561. primary: true
  562. imageSelector: image
  563. probes: *probes
  564. asserts:
  565. - documentIndex: &deploymentDoc 0
  566. isKind:
  567. of: Deployment
  568. - documentIndex: *deploymentDoc
  569. isAPIVersion:
  570. of: apps/v1
  571. - documentIndex: *deploymentDoc
  572. equal:
  573. path: spec.template.spec.runtimeClassName
  574. value: nvidia
  575. - documentIndex: *deploymentDoc
  576. isSubset:
  577. path: spec.template.spec.containers[0]
  578. content:
  579. resources:
  580. limits:
  581. cpu: 4000m
  582. memory: 8Gi
  583. nvidia.com/gpu: "1"
  584. requests:
  585. cpu: 10m
  586. memory: 50Mi
  587. - documentIndex: *deploymentDoc
  588. isSubset:
  589. path: spec.template.spec.containers[1]
  590. content:
  591. resources:
  592. limits:
  593. cpu: 4000m
  594. memory: 8Gi
  595. nvidia.com/gpu: "1"
  596. requests:
  597. cpu: 10m
  598. memory: 50Mi
  599. - documentIndex: &otherDeploymentDoc 1
  600. isKind:
  601. of: Deployment
  602. - documentIndex: *otherDeploymentDoc
  603. isAPIVersion:
  604. of: apps/v1
  605. - documentIndex: *otherDeploymentDoc
  606. isNull:
  607. path: spec.template.spec.runtimeClassName
  608. - documentIndex: *otherDeploymentDoc
  609. isSubset:
  610. path: spec.template.spec.containers[0]
  611. content:
  612. resources:
  613. limits:
  614. cpu: 4000m
  615. memory: 8Gi
  616. requests:
  617. cpu: 10m
  618. memory: 50Mi
  619. # Failures
  620. - it: should fail with empty requests
  621. set:
  622. image: *image
  623. resources:
  624. requests:
  625. workload:
  626. workload-name1:
  627. enabled: true
  628. primary: true
  629. type: Deployment
  630. podSpec:
  631. containers:
  632. container-name1:
  633. enabled: true
  634. primary: true
  635. imageSelector: image
  636. probes: *probes
  637. asserts:
  638. - failedTemplate:
  639. errorMessage: Container - Expected non-empty <resources.requests>
  640. - it: should fail with empty requests.cpu
  641. set:
  642. image: *image
  643. resources:
  644. requests:
  645. cpu: ""
  646. workload:
  647. workload-name1:
  648. enabled: true
  649. primary: true
  650. type: Deployment
  651. podSpec:
  652. containers:
  653. container-name1:
  654. enabled: true
  655. primary: true
  656. imageSelector: image
  657. probes: *probes
  658. asserts:
  659. - failedTemplate:
  660. errorMessage: Container - Expected non-empty <resources.requests.cpu>
  661. - it: should fail with empty requests.memory
  662. set:
  663. image: *image
  664. resources:
  665. requests:
  666. cpu: 10m
  667. memory: ""
  668. workload:
  669. workload-name1:
  670. enabled: true
  671. primary: true
  672. type: Deployment
  673. podSpec:
  674. containers:
  675. container-name1:
  676. enabled: true
  677. primary: true
  678. imageSelector: image
  679. probes: *probes
  680. asserts:
  681. - failedTemplate:
  682. errorMessage: Container - Expected non-empty <resources.requests.memory>
  683. - it: should fail with invalid format in requests.cpu
  684. set:
  685. image: *image
  686. resources:
  687. requests:
  688. cpu: 10MB
  689. memory: 50Mi
  690. workload:
  691. workload-name1:
  692. enabled: true
  693. primary: true
  694. type: Deployment
  695. podSpec:
  696. containers:
  697. container-name1:
  698. enabled: true
  699. primary: true
  700. imageSelector: image
  701. probes: *probes
  702. asserts:
  703. - failedTemplate:
  704. errorMessage: Container - Expected <resources.requests.cpu> to have one of the following formats [(Plain Integer - eg. 1), (Float - eg. 0.5), (Milicpu - eg. 500m)], but got [10MB]
  705. - it: should fail with invalid format in limits.cpu
  706. set:
  707. image: *image
  708. resources:
  709. requests:
  710. cpu: 10m
  711. memory: 50Mi
  712. limits:
  713. cpu: 10MB
  714. memory: 8Gi
  715. workload:
  716. workload-name1:
  717. enabled: true
  718. primary: true
  719. type: Deployment
  720. podSpec:
  721. containers:
  722. container-name1:
  723. enabled: true
  724. primary: true
  725. imageSelector: image
  726. probes: *probes
  727. asserts:
  728. - failedTemplate:
  729. errorMessage: Container - Expected <resources.limits.cpu> to have one of the following formats [(Plain Integer - eg. 1), (Float - eg. 0.5), (Milicpu - eg. 500m)], but got [10MB]
  730. - it: should fail with invalid format in requests.memory
  731. set:
  732. image: *image
  733. resources:
  734. requests:
  735. cpu: 10m
  736. memory: 50MB
  737. limits:
  738. cpu: 4000m
  739. memory: 8Gi
  740. workload:
  741. workload-name1:
  742. enabled: true
  743. primary: true
  744. type: Deployment
  745. podSpec:
  746. containers:
  747. container-name1:
  748. enabled: true
  749. primary: true
  750. imageSelector: image
  751. probes: *probes
  752. asserts:
  753. - failedTemplate:
  754. errorMessage: Container - Expected <resources.requests.memory> to have one of the following formats [(Suffixed with E/P/T/G/M/K - eg. 1G), (Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi), (Plain Integer in bytes - eg. 1024), (Exponent - eg. 134e6)], but got [50MB]
  755. - it: should fail with invalid format in limits.memory
  756. set:
  757. image: *image
  758. resources:
  759. requests:
  760. cpu: 10m
  761. memory: 50Mi
  762. limits:
  763. cpu: 4000m
  764. memory: 8GB
  765. workload:
  766. workload-name1:
  767. enabled: true
  768. primary: true
  769. type: Deployment
  770. podSpec:
  771. containers:
  772. container-name1:
  773. enabled: true
  774. primary: true
  775. imageSelector: image
  776. probes: *probes
  777. asserts:
  778. - failedTemplate:
  779. errorMessage: Container - Expected <resources.limits.memory> to have one of the following formats [(Suffixed with E/P/T/G/M/K - eg. 1G), (Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi), (Plain Integer in bytes - eg. 1024), (Exponent - eg. 134e6)], but got [8GB]
  780. - it: should fail with empty gpu in defined entry
  781. set:
  782. image: *image
  783. scaleGPU:
  784. - gpu:
  785. targetSelector:
  786. workload-name1:
  787. - container-name1
  788. workload:
  789. workload-name1:
  790. enabled: true
  791. primary: true
  792. type: Deployment
  793. podSpec:
  794. containers:
  795. container-name1:
  796. enabled: true
  797. primary: true
  798. imageSelector: image
  799. probes: *probes
  800. asserts:
  801. - failedTemplate:
  802. errorMessage: Container - Expected non-empty <scaleGPU.gpu>
  803. - it: should fail with empty list under workload in targetSelector
  804. set:
  805. image: *image
  806. scaleGPU:
  807. - gpu:
  808. key: value
  809. targetSelector:
  810. workload-name1: []
  811. workload:
  812. workload-name1:
  813. enabled: true
  814. primary: true
  815. type: Deployment
  816. podSpec:
  817. containers:
  818. container-name1:
  819. enabled: true
  820. primary: true
  821. imageSelector: image
  822. probes: *probes
  823. asserts:
  824. - failedTemplate:
  825. errorMessage: Container - Expected non-empty list under pod in <scaleGPU.targetSelector>
  826. - it: should fail with empty value in gpu
  827. set:
  828. image: *image
  829. scaleGPU:
  830. - gpu:
  831. key: ""
  832. targetSelector:
  833. workload-name1:
  834. - container-name1
  835. workload:
  836. workload-name1:
  837. enabled: true
  838. primary: true
  839. type: Deployment
  840. podSpec:
  841. containers:
  842. container-name1:
  843. enabled: true
  844. primary: true
  845. imageSelector: image
  846. probes: *probes
  847. asserts:
  848. - failedTemplate:
  849. errorMessage: Container - Expected non-empty <scaleGPU> <value>