github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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 jujuos "github.com/juju/os" 11 12 "github.com/juju/juju/cloudconfig/cloudinit" 13 "github.com/juju/juju/cloudconfig/providerinit/renderers" 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 jujuos.OSType) ([]byte, error) { 21 var renderedUdata []byte 22 var err error 23 switch os { 24 case jujuos.Ubuntu, jujuos.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 }