-
Notifications
You must be signed in to change notification settings - Fork 229
/
schema.go
133 lines (98 loc) · 4.21 KB
/
schema.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// Copyright (c) Alex Ellis 2017. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
package stack
// Provider for the FaaS set of functions.
type Provider struct {
Name string `yaml:"name"`
GatewayURL string `yaml:"gateway"`
}
// Function as deployed or built on FaaS
type Function struct {
// Name of deployed function
Name string `yaml:"-"`
Language string `yaml:"lang"`
// Handler Local folder to use for function
Handler string `yaml:"handler"`
// Image Docker image name
Image string `yaml:"image"`
FProcess string `yaml:"fprocess"`
Environment map[string]string `yaml:"environment"`
// Secrets list of secrets to be made available to function
Secrets []string `yaml:"secrets,omitempty"`
SkipBuild bool `yaml:"skip_build,omitempty"`
Constraints *[]string `yaml:"constraints,omitempty"`
// EnvironmentFile is a list of files to import and override environmental variables.
// These are overriden in order.
EnvironmentFile []string `yaml:"environment_file,omitempty"`
Labels *map[string]string `yaml:"labels,omitempty"`
// Limits for function
Limits *FunctionResources `yaml:"limits,omitempty"`
// Requests of resources requested by function
Requests *FunctionResources `yaml:"requests,omitempty"`
// ReadOnlyRootFilesystem is used to set the container filesystem to read-only
ReadOnlyRootFilesystem bool `yaml:"readonly_root_filesystem,omitempty"`
// BuildOptions to determine native packages
BuildOptions []string `yaml:"build_options,omitempty"`
// Annotations
Annotations *map[string]string `yaml:"annotations,omitempty"`
// Namespace of the function
Namespace string `yaml:"namespace,omitempty"`
// BuildArgs for providing build-args
BuildArgs map[string]string `yaml:"build_args,omitempty"`
// Platforms for use with buildx and faas-cli publish
Platforms string `yaml:"platforms,omitempty"`
// BuildSecrets is a set of secrets to mount with buildkit
BuildSecrets map[string]string `yaml:"build_secrets,omitempty"`
}
// Configuration for the stack.yml file
type Configuration struct {
StackConfig StackConfiguration `yaml:"configuration"`
}
// StackConfiguration for the overall stack.yml
type StackConfiguration struct {
TemplateConfigs []TemplateSource `yaml:"templates"`
// CopyExtraPaths specifies additional paths (relative to the stack file) that will be copied
// into the functions build context, e.g. specifying `"common"` will look for and copy the
// "common/" folder of file in the same root as the stack file. All paths must be contained
// within the project root defined by the location of the stack file.
//
// The yaml uses the shorter name `copy` to make it easier for developers to read and use
CopyExtraPaths []string `yaml:"copy"`
}
// TemplateSource for build templates
type TemplateSource struct {
Name string `yaml:"name"`
Source string `yaml:"source,omitempty"`
}
// FunctionResources Memory and CPU
type FunctionResources struct {
Memory string `yaml:"memory"`
CPU string `yaml:"cpu"`
}
// EnvironmentFile represents external file for environment data
type EnvironmentFile struct {
Environment map[string]string `yaml:"environment"`
}
// Services root level YAML file to define FaaS function-set
type Services struct {
Version string `yaml:"version,omitempty"`
Functions map[string]Function `yaml:"functions,omitempty"`
Provider Provider `yaml:"provider,omitempty"`
StackConfiguration StackConfiguration `yaml:"configuration,omitempty"`
}
// LanguageTemplate read from template.yml within root of a language template folder
type LanguageTemplate struct {
Language string `yaml:"language,omitempty"`
FProcess string `yaml:"fprocess,omitempty"`
BuildOptions []BuildOption `yaml:"build_options,omitempty"`
// WelcomeMessage is printed to the user after generating a function
WelcomeMessage string `yaml:"welcome_message,omitempty"`
// HandlerFolder to copy the function code into
HandlerFolder string `yaml:"handler_folder,omitempty"`
MountSSH bool `yaml:"mount_ssh,omitempty"`
}
// BuildOption a named build option for one or more packages
type BuildOption struct {
Name string `yaml:"name"`
Packages []string `yaml:"packages"`
}