/
resourcepatch.go
80 lines (67 loc) · 1.86 KB
/
resourcepatch.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
/*
Copyright 2020 The OpenEBS Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package upgrader
// ResourcePatch has all the patches required to upgrade a resource
type ResourcePatch struct {
Name string
OpenebsNamespace string
From, To string
ImageTag, BaseURL string
// UpgradeTask *utask.UpgradeTask
}
// ResourcePatchOptions ...
type ResourcePatchOptions func(*ResourcePatch)
// WithName ...
func WithName(name string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.Name = name
}
}
// FromVersion ...
func FromVersion(from string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.From = from
}
}
// ToVersion ...
func ToVersion(to string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.To = to
}
}
// WithOpenebsNamespace ...
func WithOpenebsNamespace(namespace string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.OpenebsNamespace = namespace
}
}
// WithImageTag ...
func WithImageTag(imagetag string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.ImageTag = imagetag
}
}
// WithBaseURL ...
func WithBaseURL(url string) ResourcePatchOptions {
return func(r *ResourcePatch) {
r.BaseURL = url
}
}
// NewResourcePatch returns a new instance of ResourcePatch
func NewResourcePatch(opts ...ResourcePatchOptions) *ResourcePatch {
r := &ResourcePatch{}
for _, o := range opts {
o(r)
}
return r
}