-
Notifications
You must be signed in to change notification settings - Fork 66
/
interface.go
61 lines (53 loc) · 2.48 KB
/
interface.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
/*
Copyright 2022 The Kruise 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 canarystyle
import (
"github.com/openkruise/rollouts/api/v1beta1"
batchcontext "github.com/openkruise/rollouts/pkg/controller/batchrelease/context"
"github.com/openkruise/rollouts/pkg/util"
)
type Interface interface {
CanaryInterface
StableInterface
// BuildStableController will get stable workload object and parse
// stable workload info, and return a controller for stable workload.
BuildStableController() (StableInterface, error)
// BuildCanaryController will get canary workload object and parse
// canary workload info, and return a controller for canary workload.
BuildCanaryController(release *v1beta1.BatchRelease) (CanaryInterface, error)
// CalculateBatchContext calculate the current batch context according to
// our release plan and the statues of stable workload and canary workload.
CalculateBatchContext(release *v1beta1.BatchRelease) *batchcontext.BatchContext
}
// CanaryInterface contains the methods about canary workload
type CanaryInterface interface {
// GetCanaryInfo return the information about canary workload
GetCanaryInfo() *util.WorkloadInfo
// UpgradeBatch upgrade canary workload according to current batch context
UpgradeBatch(*batchcontext.BatchContext) error
// Create creates canary workload before rolling out
Create(controller *v1beta1.BatchRelease) error
// Delete deletes canary workload after rolling out
Delete(controller *v1beta1.BatchRelease) error
}
// StableInterface contains the methods about stable workload
type StableInterface interface {
// GetStableInfo return the information about stable workload
GetStableInfo() *util.WorkloadInfo
// Initialize claim the stable workload is under rollout control
Initialize(controller *v1beta1.BatchRelease) error
// Finalize do something after rolling out, for example:
// - free the stable workload from rollout control;
// - resume stable workload and wait all pods updated if we need.
Finalize(controller *v1beta1.BatchRelease) error
}