Commit 47d1a8a5 authored by Geoff Simmons's avatar Geoff Simmons

Define the self-sharding template in a variable, not an external file.

This will be done incrementally for all templates, making the
controller executable wholly self-contained.
parent f3070c5e
/*
* Copyright (c) 2020 UPLEX Nils Goroll Systemoptimierung
* All rights reserved
*
* Author: Geoffrey Simmons <geoffrey.simmons@uplex.de>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
package vcl
import "text/template"
const selfShardTmplSrc = `
import std; import std;
import directors; import directors;
...@@ -139,3 +171,9 @@ sub vcl_deliver { ...@@ -139,3 +171,9 @@ sub vcl_deliver {
return (deliver); return (deliver);
} }
} }
`
const selfShardName = "self-sharding"
var shardTmpl = template.Must(template.New(selfShardName).
Parse(selfShardTmplSrc))
...@@ -146,7 +146,6 @@ var fMap = template.FuncMap{ ...@@ -146,7 +146,6 @@ var fMap = template.FuncMap{
const ( const (
ingTmplSrc = "vcl.tmpl" ingTmplSrc = "vcl.tmpl"
shardTmplSrc = "self-shard.tmpl"
authTmplSrc = "auth.tmpl" authTmplSrc = "auth.tmpl"
aclTmplSrc = "acl.tmpl" aclTmplSrc = "acl.tmpl"
rewriteTmplSrc = "rewrite.tmpl" rewriteTmplSrc = "rewrite.tmpl"
...@@ -160,7 +159,6 @@ const ( ...@@ -160,7 +159,6 @@ const (
var ( var (
ingressTmpl *template.Template ingressTmpl *template.Template
shardTmpl *template.Template
authTmpl *template.Template authTmpl *template.Template
aclTmpl *template.Template aclTmpl *template.Template
rewriteTmpl *template.Template rewriteTmpl *template.Template
...@@ -172,7 +170,6 @@ var ( ...@@ -172,7 +170,6 @@ var (
func InitTemplates(tmplDir string) error { func InitTemplates(tmplDir string) error {
var err error var err error
ingTmplPath := path.Join(tmplDir, ingTmplSrc) ingTmplPath := path.Join(tmplDir, ingTmplSrc)
shardTmplPath := path.Join(tmplDir, shardTmplSrc)
authTmplPath := path.Join(tmplDir, authTmplSrc) authTmplPath := path.Join(tmplDir, authTmplSrc)
aclTmplPath := path.Join(tmplDir, aclTmplSrc) aclTmplPath := path.Join(tmplDir, aclTmplSrc)
rewriteTmplPath := path.Join(tmplDir, rewriteTmplSrc) rewriteTmplPath := path.Join(tmplDir, rewriteTmplSrc)
...@@ -183,11 +180,6 @@ func InitTemplates(tmplDir string) error { ...@@ -183,11 +180,6 @@ func InitTemplates(tmplDir string) error {
if err != nil { if err != nil {
return err return err
} }
shardTmpl, err = template.New(shardTmplSrc).
Funcs(fMap).ParseFiles(shardTmplPath)
if err != nil {
return err
}
authTmpl, err = template.New(authTmplSrc). authTmpl, err = template.New(authTmplSrc).
Funcs(fMap).ParseFiles(authTmplPath) Funcs(fMap).ParseFiles(authTmplPath)
if err != nil { if err != nil {
......
...@@ -155,14 +155,8 @@ var varnishCluster = ShardCluster{ ...@@ -155,14 +155,8 @@ var varnishCluster = ShardCluster{
func TestShardTemplate(t *testing.T) { func TestShardTemplate(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
gold := "shard.golden" gold := "shard.golden"
tmplName := "self-shard.tmpl"
tmpl, err := template.New(tmplName).Funcs(fMap).ParseFiles(tmplName) if err := shardTmpl.Execute(&buf, varnishCluster); err != nil {
if err != nil {
t.Error("Cannot parse shard template:", err)
return
}
if err := tmpl.Execute(&buf, varnishCluster); err != nil {
t.Error("cluster template Execute():", err) t.Error("cluster template Execute():", err)
return return
} }
...@@ -182,15 +176,9 @@ func TestShardTemplate(t *testing.T) { ...@@ -182,15 +176,9 @@ func TestShardTemplate(t *testing.T) {
func TestPrimaryOnlyShardTemplate(t *testing.T) { func TestPrimaryOnlyShardTemplate(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
gold := "primaryonly_shard.golden" gold := "primaryonly_shard.golden"
tmplName := "self-shard.tmpl"
tmpl, err := template.New(tmplName).Funcs(fMap).ParseFiles(tmplName)
if err != nil {
t.Error("Cannot parse shard template:", err)
return
}
varnishCluster.PrimaryOnly = true varnishCluster.PrimaryOnly = true
if err := tmpl.Execute(&buf, varnishCluster); err != nil { if err := shardTmpl.Execute(&buf, varnishCluster); err != nil {
t.Error("cluster template Execute():", err) t.Error("cluster template Execute():", err)
return return
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment