@@ -1777,6 +1777,113 @@ version = 3
17771777
17781778 require .NoFileExists (t , co .DropInConfig )
17791779
1780+ return nil
1781+ },
1782+ },
1783+ {
1784+ description : "setting drop-in-config to empty modifies existing config" ,
1785+ containerOptions : container.Options {
1786+ TopLevelConfigPath : "{{ .testRoot }}/etc/containerd/config.toml" ,
1787+ DropInConfig : "" ,
1788+ RuntimeName : "nvidia" ,
1789+ RuntimeDir : "/usr/bin" ,
1790+ SetAsDefault : false ,
1791+ RestartMode : "none" ,
1792+ ExecutablePath : "not-containerd" ,
1793+ },
1794+ options : Options {
1795+ runtimeType : "io.containerd.runc.v2" ,
1796+ },
1797+ prepareEnvironment : func (t * testing.T , co * container.Options , o * Options ) error {
1798+ require .NoError (t , os .MkdirAll (filepath .Dir (co .TopLevelConfigPath ), 0755 ))
1799+
1800+ initialConfig := `version = 2
1801+
1802+ [plugins]
1803+ [plugins."io.containerd.grpc.v1.cri"]
1804+ [plugins."io.containerd.grpc.v1.cri".containerd]
1805+ default_runtime_name = "runc"
1806+
1807+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1808+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1809+ runtime_type = "io.containerd.runc.v2"
1810+
1811+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1812+ BinaryName = "/usr/bin/runc"
1813+ `
1814+ require .NoError (t , os .WriteFile (co .TopLevelConfigPath , []byte (initialConfig ), 0600 ))
1815+ return nil
1816+ },
1817+ assertSetupPostConditions : func (t * testing.T , co * container.Options , o * Options ) error {
1818+ require .FileExists (t , co .TopLevelConfigPath )
1819+
1820+ actual , err := os .ReadFile (co .TopLevelConfigPath )
1821+ require .NoError (t , err )
1822+
1823+ expected := `version = 2
1824+
1825+ [plugins]
1826+
1827+ [plugins."io.containerd.grpc.v1.cri"]
1828+
1829+ [plugins."io.containerd.grpc.v1.cri".containerd]
1830+ default_runtime_name = "runc"
1831+
1832+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1833+
1834+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
1835+ runtime_type = "io.containerd.runc.v2"
1836+
1837+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
1838+ BinaryName = "/usr/bin/nvidia-container-runtime"
1839+
1840+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi]
1841+ runtime_type = "io.containerd.runc.v2"
1842+
1843+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi.options]
1844+ BinaryName = "/usr/bin/nvidia-container-runtime.cdi"
1845+
1846+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy]
1847+ runtime_type = "io.containerd.runc.v2"
1848+
1849+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy.options]
1850+ BinaryName = "/usr/bin/nvidia-container-runtime.legacy"
1851+
1852+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1853+ runtime_type = "io.containerd.runc.v2"
1854+
1855+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1856+ BinaryName = "/usr/bin/runc"
1857+ `
1858+ require .Equal (t , expected , string (actual ))
1859+
1860+ return nil
1861+ },
1862+ assertCleanupPostConditions : func (t * testing.T , co * container.Options , o * Options ) error {
1863+ require .FileExists (t , co .TopLevelConfigPath )
1864+
1865+ actual , err := os .ReadFile (co .TopLevelConfigPath )
1866+ require .NoError (t , err )
1867+
1868+ expected := `version = 2
1869+
1870+ [plugins]
1871+
1872+ [plugins."io.containerd.grpc.v1.cri"]
1873+
1874+ [plugins."io.containerd.grpc.v1.cri".containerd]
1875+ default_runtime_name = "runc"
1876+
1877+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1878+
1879+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1880+ runtime_type = "io.containerd.runc.v2"
1881+
1882+ [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1883+ BinaryName = "/usr/bin/runc"
1884+ `
1885+ require .Equal (t , expected , string (actual ))
1886+
17801887 return nil
17811888 },
17821889 },
0 commit comments