github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/provider/oci/userdata.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package oci 5 6 import ( 7 b64 "encoding/base64" 8 9 "github.com/juju/errors" 10 11 "github.com/juju/juju/cloudconfig/cloudinit" 12 "github.com/juju/juju/cloudconfig/providerinit/renderers" 13 "github.com/juju/juju/core/os/ostype" 14 ) 15 16 // OCIRenderer implements the renderers.ProviderRenderer interface 17 type OCIRenderer struct{} 18 19 // Renderer is defined in the renderers.ProviderRenderer interface 20 func (OCIRenderer) Render(cfg cloudinit.CloudConfig, os ostype.OSType) ([]byte, error) { 21 var renderedUdata []byte 22 var err error 23 switch os { 24 case ostype.Ubuntu, ostype.CentOS: 25 renderedUdata, err = renderers.RenderYAML(cfg) 26 default: 27 return nil, errors.Errorf("Cannot encode userdata for OS: %s", os.String()) 28 } 29 30 if err != nil { 31 return nil, err 32 } 33 ret := b64.StdEncoding.EncodeToString(renderedUdata) 34 return []byte(ret), nil 35 }