-
Notifications
You must be signed in to change notification settings - Fork 0
/
model.go
131 lines (116 loc) · 5.19 KB
/
model.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
package roer
import "github.com/spinnaker/roer/spinnaker"
type PipelineTemplate struct {
Schema string `json:"schema"`
ID string `json:"id"`
Metadata PipelineTemplateMetadata `json:"metadata"`
Protect bool `json:"protect"`
Configuration PipelineTemplateConfig `json:"configuration,omitempty"`
Variables []interface{} `json:"variables,omitempty"`
Stages []PipelineTemplateStage `json:"stages"`
}
type PipelineTemplateMetadata struct {
Name string `json:"name"`
Description string `json:"description"`
Owner string `json:"owner"`
Scopes []string `json:"scopes,omitempty"`
}
type PipelineTemplateConfig struct {
ConcurrentExecutions map[string]bool `json:"concurrentExecutions,omitempty"`
Triggers []map[string]interface{} `json:"triggers,omitempty"`
Parameters []map[string]interface{} `json:"parameters,omitempty"`
Notifications []map[string]interface{} `json:"notifications,omitempty"`
}
type PipelineTemplateStage struct {
ID string `json:"id"`
Type string `json:"type"`
DependsOn []string `json:"dependsOn,omitempty"`
Inject PipelineTemplateStageInjection `json:"inject,omitempty"`
Name string `json:"name"`
Config map[string]interface{} `json:"config"`
Notifications []map[string]interface{} `json:"notifications,omitempty"`
Comments string `json:"comments,omitempty"`
When []string `json:"when,omitempty"`
InheritanceControl PipelineTemplateStageInheritanceControl `json:"inheritanceControl,omitempty"`
}
type PipelineTemplateStageInjection struct {
First bool `json:"first,omitempty"`
Last bool `json:"last,omitempty"`
Before []string `json:"before,omitempty"`
After []string `json:"after,omitempty"`
}
type PipelineTemplateStageInheritanceControl struct {
Merge []InheritanceControlRule `json:"merge,omitempty"`
Replace []InheritanceControlRule `json:"replace,omitempty"`
Remove []InheritanceControlRule `json:"remove,omitempty"`
}
type InheritanceControlRule struct {
Path string `json:"path"`
Value interface{} `json:"value"`
}
type PipelineTemplateModule struct {
ID string `json:"id"`
Usage string `json:"usage"`
Variables []map[string]interface{} `json:"variables,omitempty"`
When []string `json:"when,omitempty"`
Definition map[string]interface{} `json:"definition"`
}
type PipelineTemplatePartial struct {
ID string `json:"id"`
Usage string `json:"usage"`
Variables []map[string]interface{} `json:"variables,omitempty"`
Stages []PipelineTemplateStage `json:"stages"`
}
type PipelineConfiguration struct {
Schema string `json:"schema"`
ID string `json:"id"`
Pipeline PipelineConfigurationDefinition `json:"pipeline"`
Configuration PipelineConfig `json:"configuration"`
Stages []PipelineTemplateStage `json:"stages"`
Modules []PipelineTemplateModule `json:"modules,omitempty"`
Partials []PipelineTemplatePartial `json:"partials,omitempty"`
}
func (c PipelineConfiguration) ToClient() spinnaker.PipelineConfig {
// TODO rz - Should move this mapping around into orca itself
parallel, ok := c.Configuration.ConcurrentExecutions["parallel"]
if !ok {
parallel = true
}
limitConcurrent, ok := c.Configuration.ConcurrentExecutions["limitConcurrent"]
if !ok {
limitConcurrent = true
}
keepWaitingPipelines, ok := c.Configuration.ConcurrentExecutions["keepWaitingPipelines"]
if !ok {
keepWaitingPipelines = false
}
return spinnaker.PipelineConfig{
ID: c.Pipeline.PipelineConfigID,
Type: "templatedPipeline",
Name: c.Pipeline.Name,
Application: c.Pipeline.Application,
Description: c.Configuration.Description,
Parallel: parallel,
LimitConcurrent: limitConcurrent,
KeepWaitingPipelines: keepWaitingPipelines,
Config: c,
}
}
type PipelineConfig struct {
Inherit []string `json:"inherit"`
ConcurrentExecutions map[string]bool `json:"concurrentExecutions"`
Triggers []interface{} `json:"triggers"`
Parameters []interface{} `json:"parameters"`
Notifications []interface{} `json:"notifications"`
Description string `json:"description"`
}
type PipelineConfigurationDefinition struct {
Application string `json:"application"`
Name string `json:"name"`
Template TemplateSource `json:"template"`
PipelineConfigID string `json:"pipelineConfigId"`
Variables map[string]interface{} `json:"variables"`
}
type TemplateSource struct {
Source string `json:"source"`
}