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  }