@@ -143,6 +143,26 @@ Default: 180 minutes`,
143143 Optional : true ,
144144 Description : `Install Nvidia Driver automatically.` ,
145145 },
146+ "kernels" : {
147+ Type : schema .TypeList ,
148+ Optional : true ,
149+ Description : `Use a list of container images to use as Kernels in the notebook instance.` ,
150+ Elem : & schema.Resource {
151+ Schema : map [string ]* schema.Schema {
152+ "repository" : {
153+ Type : schema .TypeString ,
154+ Required : true ,
155+ Description : `The path to the container image repository.
156+ For example: gcr.io/{project_id}/{imageName}` ,
157+ },
158+ "tag" : {
159+ Type : schema .TypeString ,
160+ Optional : true ,
161+ Description : `The tag of the container image. If not specified, this defaults to the latest tag.` ,
162+ },
163+ },
164+ },
165+ },
146166 "notebook_upgrade_schedule" : {
147167 Type : schema .TypeString ,
148168 Optional : true ,
@@ -156,6 +176,17 @@ Please follow the [cron format](https://en.wikipedia.org/wiki/Cron).`,
156176fully boots up. The path must be a URL or
157177Cloud Storage path (gs://path-to-file/file-name).` ,
158178 },
179+ "post_startup_script_behavior" : {
180+ Type : schema .TypeString ,
181+ Optional : true ,
182+ ValidateFunc : validateEnum ([]string {"POST_STARTUP_SCRIPT_BEHAVIOR_UNSPECIFIED" , "RUN_EVERY_START" , "DOWNLOAD_AND_RUN_EVERY_START" , "" }),
183+ Description : `Behavior for the post startup script. Possible values: ["POST_STARTUP_SCRIPT_BEHAVIOR_UNSPECIFIED", "RUN_EVERY_START", "DOWNLOAD_AND_RUN_EVERY_START"]` ,
184+ },
185+ "upgradeable" : {
186+ Type : schema .TypeBool ,
187+ Computed : true ,
188+ Description : `Bool indicating whether an newer image is available in an image family.` ,
189+ },
159190 },
160191 },
161192 },
@@ -1305,10 +1336,16 @@ func flattenNotebooksRuntimeSoftwareConfig(v interface{}, d *schema.ResourceData
13051336 flattenNotebooksRuntimeSoftwareConfigIdleShutdownTimeout (original ["idleShutdownTimeout" ], d , config )
13061337 transformed ["install_gpu_driver" ] =
13071338 flattenNotebooksRuntimeSoftwareConfigInstallGpuDriver (original ["installGpuDriver" ], d , config )
1339+ transformed ["upgradeable" ] =
1340+ flattenNotebooksRuntimeSoftwareConfigUpgradeable (original ["upgradeable" ], d , config )
13081341 transformed ["custom_gpu_driver_path" ] =
13091342 flattenNotebooksRuntimeSoftwareConfigCustomGpuDriverPath (original ["customGpuDriverPath" ], d , config )
13101343 transformed ["post_startup_script" ] =
13111344 flattenNotebooksRuntimeSoftwareConfigPostStartupScript (original ["postStartupScript" ], d , config )
1345+ transformed ["post_startup_script_behavior" ] =
1346+ flattenNotebooksRuntimeSoftwareConfigPostStartupScriptBehavior (original ["postStartupScriptBehavior" ], d , config )
1347+ transformed ["kernels" ] =
1348+ flattenNotebooksRuntimeSoftwareConfigKernels (original ["kernels" ], d , config )
13121349 return []interface {}{transformed }
13131350}
13141351func flattenNotebooksRuntimeSoftwareConfigNotebookUpgradeSchedule (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
@@ -1344,6 +1381,10 @@ func flattenNotebooksRuntimeSoftwareConfigInstallGpuDriver(v interface{}, d *sch
13441381 return v
13451382}
13461383
1384+ func flattenNotebooksRuntimeSoftwareConfigUpgradeable (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1385+ return v
1386+ }
1387+
13471388func flattenNotebooksRuntimeSoftwareConfigCustomGpuDriverPath (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
13481389 return v
13491390}
@@ -1352,6 +1393,37 @@ func flattenNotebooksRuntimeSoftwareConfigPostStartupScript(v interface{}, d *sc
13521393 return v
13531394}
13541395
1396+ func flattenNotebooksRuntimeSoftwareConfigPostStartupScriptBehavior (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1397+ return v
1398+ }
1399+
1400+ func flattenNotebooksRuntimeSoftwareConfigKernels (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1401+ if v == nil {
1402+ return v
1403+ }
1404+ l := v .([]interface {})
1405+ transformed := make ([]interface {}, 0 , len (l ))
1406+ for _ , raw := range l {
1407+ original := raw .(map [string ]interface {})
1408+ if len (original ) < 1 {
1409+ // Do not include empty json objects coming back from the api
1410+ continue
1411+ }
1412+ transformed = append (transformed , map [string ]interface {}{
1413+ "repository" : flattenNotebooksRuntimeSoftwareConfigKernelsRepository (original ["repository" ], d , config ),
1414+ "tag" : flattenNotebooksRuntimeSoftwareConfigKernelsTag (original ["tag" ], d , config ),
1415+ })
1416+ }
1417+ return transformed
1418+ }
1419+ func flattenNotebooksRuntimeSoftwareConfigKernelsRepository (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1420+ return v
1421+ }
1422+
1423+ func flattenNotebooksRuntimeSoftwareConfigKernelsTag (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1424+ return v
1425+ }
1426+
13551427func flattenNotebooksRuntimeMetrics (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
13561428 if v == nil {
13571429 return nil
@@ -2041,6 +2113,13 @@ func expandNotebooksRuntimeSoftwareConfig(v interface{}, d TerraformResourceData
20412113 transformed ["installGpuDriver" ] = transformedInstallGpuDriver
20422114 }
20432115
2116+ transformedUpgradeable , err := expandNotebooksRuntimeSoftwareConfigUpgradeable (original ["upgradeable" ], d , config )
2117+ if err != nil {
2118+ return nil , err
2119+ } else if val := reflect .ValueOf (transformedUpgradeable ); val .IsValid () && ! isEmptyValue (val ) {
2120+ transformed ["upgradeable" ] = transformedUpgradeable
2121+ }
2122+
20442123 transformedCustomGpuDriverPath , err := expandNotebooksRuntimeSoftwareConfigCustomGpuDriverPath (original ["custom_gpu_driver_path" ], d , config )
20452124 if err != nil {
20462125 return nil , err
@@ -2055,6 +2134,20 @@ func expandNotebooksRuntimeSoftwareConfig(v interface{}, d TerraformResourceData
20552134 transformed ["postStartupScript" ] = transformedPostStartupScript
20562135 }
20572136
2137+ transformedPostStartupScriptBehavior , err := expandNotebooksRuntimeSoftwareConfigPostStartupScriptBehavior (original ["post_startup_script_behavior" ], d , config )
2138+ if err != nil {
2139+ return nil , err
2140+ } else if val := reflect .ValueOf (transformedPostStartupScriptBehavior ); val .IsValid () && ! isEmptyValue (val ) {
2141+ transformed ["postStartupScriptBehavior" ] = transformedPostStartupScriptBehavior
2142+ }
2143+
2144+ transformedKernels , err := expandNotebooksRuntimeSoftwareConfigKernels (original ["kernels" ], d , config )
2145+ if err != nil {
2146+ return nil , err
2147+ } else if val := reflect .ValueOf (transformedKernels ); val .IsValid () && ! isEmptyValue (val ) {
2148+ transformed ["kernels" ] = transformedKernels
2149+ }
2150+
20582151 return transformed , nil
20592152}
20602153
@@ -2078,10 +2171,55 @@ func expandNotebooksRuntimeSoftwareConfigInstallGpuDriver(v interface{}, d Terra
20782171 return v , nil
20792172}
20802173
2174+ func expandNotebooksRuntimeSoftwareConfigUpgradeable (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
2175+ return v , nil
2176+ }
2177+
20812178func expandNotebooksRuntimeSoftwareConfigCustomGpuDriverPath (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
20822179 return v , nil
20832180}
20842181
20852182func expandNotebooksRuntimeSoftwareConfigPostStartupScript (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
20862183 return v , nil
20872184}
2185+
2186+ func expandNotebooksRuntimeSoftwareConfigPostStartupScriptBehavior (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
2187+ return v , nil
2188+ }
2189+
2190+ func expandNotebooksRuntimeSoftwareConfigKernels (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
2191+ l := v .([]interface {})
2192+ req := make ([]interface {}, 0 , len (l ))
2193+ for _ , raw := range l {
2194+ if raw == nil {
2195+ continue
2196+ }
2197+ original := raw .(map [string ]interface {})
2198+ transformed := make (map [string ]interface {})
2199+
2200+ transformedRepository , err := expandNotebooksRuntimeSoftwareConfigKernelsRepository (original ["repository" ], d , config )
2201+ if err != nil {
2202+ return nil , err
2203+ } else if val := reflect .ValueOf (transformedRepository ); val .IsValid () && ! isEmptyValue (val ) {
2204+ transformed ["repository" ] = transformedRepository
2205+ }
2206+
2207+ transformedTag , err := expandNotebooksRuntimeSoftwareConfigKernelsTag (original ["tag" ], d , config )
2208+ if err != nil {
2209+ return nil , err
2210+ } else if val := reflect .ValueOf (transformedTag ); val .IsValid () && ! isEmptyValue (val ) {
2211+ transformed ["tag" ] = transformedTag
2212+ }
2213+
2214+ req = append (req , transformed )
2215+ }
2216+ return req , nil
2217+ }
2218+
2219+ func expandNotebooksRuntimeSoftwareConfigKernelsRepository (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
2220+ return v , nil
2221+ }
2222+
2223+ func expandNotebooksRuntimeSoftwareConfigKernelsTag (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
2224+ return v , nil
2225+ }
0 commit comments