210 lines
6.3 KiB
Go
210 lines
6.3 KiB
Go
/*
|
|
Copyright 2023 the Velero contributors.
|
|
|
|
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 builder
|
|
|
|
import (
|
|
"time"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
"github.com/vmware-tanzu/velero/pkg/itemoperation"
|
|
"github.com/vmware-tanzu/velero/pkg/plugin/velero"
|
|
)
|
|
|
|
// OperationStatusBuilder builds OperationStatus objects
|
|
type OperationStatusBuilder struct {
|
|
object *itemoperation.OperationStatus
|
|
}
|
|
|
|
// ForOperationStatus is the constructor for a OperationStatusBuilder.
|
|
func ForOperationStatus() *OperationStatusBuilder {
|
|
return &OperationStatusBuilder{
|
|
object: &itemoperation.OperationStatus{},
|
|
}
|
|
}
|
|
|
|
// Result returns the built OperationStatus.
|
|
func (osb *OperationStatusBuilder) Result() *itemoperation.OperationStatus {
|
|
return osb.object
|
|
}
|
|
|
|
// Phase sets the OperationStatus's phase.
|
|
func (osb *OperationStatusBuilder) Phase(phase itemoperation.OperationPhase) *OperationStatusBuilder {
|
|
osb.object.Phase = phase
|
|
return osb
|
|
}
|
|
|
|
// Error sets the OperationStatus's error.
|
|
func (osb *OperationStatusBuilder) Error(err string) *OperationStatusBuilder {
|
|
osb.object.Error = err
|
|
return osb
|
|
}
|
|
|
|
// Progress sets the OperationStatus's progress.
|
|
func (osb *OperationStatusBuilder) Progress(nComplete int64, nTotal int64, operationUnits string) *OperationStatusBuilder {
|
|
osb.object.NCompleted = nComplete
|
|
osb.object.NTotal = nTotal
|
|
osb.object.OperationUnits = operationUnits
|
|
return osb
|
|
}
|
|
|
|
// Description sets the OperationStatus's description.
|
|
func (osb *OperationStatusBuilder) Description(desc string) *OperationStatusBuilder {
|
|
osb.object.Description = desc
|
|
return osb
|
|
}
|
|
|
|
// Created sets the OperationStatus's creation timestamp.
|
|
func (osb *OperationStatusBuilder) Created(t time.Time) *OperationStatusBuilder {
|
|
osb.object.Created = &metav1.Time{Time: t}
|
|
return osb
|
|
}
|
|
|
|
// Updated sets the OperationStatus's last update timestamp.
|
|
func (osb *OperationStatusBuilder) Updated(t time.Time) *OperationStatusBuilder {
|
|
osb.object.Updated = &metav1.Time{Time: t}
|
|
return osb
|
|
}
|
|
|
|
// Started sets the OperationStatus's start timestamp.
|
|
func (osb *OperationStatusBuilder) Started(t time.Time) *OperationStatusBuilder {
|
|
osb.object.Started = &metav1.Time{Time: t}
|
|
return osb
|
|
}
|
|
|
|
// BackupOperationBuilder builds BackupOperation objects
|
|
type BackupOperationBuilder struct {
|
|
object *itemoperation.BackupOperation
|
|
}
|
|
|
|
// ForBackupOperation is the constructor for a BackupOperationBuilder.
|
|
func ForBackupOperation() *BackupOperationBuilder {
|
|
return &BackupOperationBuilder{
|
|
object: &itemoperation.BackupOperation{},
|
|
}
|
|
}
|
|
|
|
// Result returns the built BackupOperation.
|
|
func (bb *BackupOperationBuilder) Result() *itemoperation.BackupOperation {
|
|
return bb.object
|
|
}
|
|
|
|
// BackupName sets the BackupOperation's backup name.
|
|
func (bb *BackupOperationBuilder) BackupName(name string) *BackupOperationBuilder {
|
|
bb.object.Spec.BackupName = name
|
|
return bb
|
|
}
|
|
|
|
// OperationID sets the BackupOperation's operation ID.
|
|
func (bb *BackupOperationBuilder) OperationID(id string) *BackupOperationBuilder {
|
|
bb.object.Spec.OperationID = id
|
|
return bb
|
|
}
|
|
|
|
// Status sets the BackupOperation's status.
|
|
func (bb *BackupOperationBuilder) Status(status itemoperation.OperationStatus) *BackupOperationBuilder {
|
|
bb.object.Status = status
|
|
return bb
|
|
}
|
|
|
|
// ResourceIdentifier sets the BackupOperation's resource identifier.
|
|
func (bb *BackupOperationBuilder) ResourceIdentifier(group, resource, ns, name string) *BackupOperationBuilder {
|
|
bb.object.Spec.ResourceIdentifier = velero.ResourceIdentifier{
|
|
GroupResource: schema.GroupResource{
|
|
Group: group,
|
|
Resource: resource,
|
|
},
|
|
Namespace: ns,
|
|
Name: name,
|
|
}
|
|
return bb
|
|
}
|
|
|
|
// BackupItemAction sets the BackupOperation's backup item action.
|
|
func (bb *BackupOperationBuilder) BackupItemAction(bia string) *BackupOperationBuilder {
|
|
bb.object.Spec.BackupItemAction = bia
|
|
return bb
|
|
}
|
|
|
|
// PostOperationItem adds a post-operation item to the BackupOperation's list of post-operation items.
|
|
func (bb *BackupOperationBuilder) PostOperationItem(group, resource, ns, name string) *BackupOperationBuilder {
|
|
bb.object.Spec.PostOperationItems = append(bb.object.Spec.PostOperationItems, velero.ResourceIdentifier{
|
|
GroupResource: schema.GroupResource{
|
|
Group: group,
|
|
Resource: resource,
|
|
},
|
|
Namespace: ns,
|
|
Name: name,
|
|
})
|
|
return bb
|
|
}
|
|
|
|
// RestoreOperationBuilder builds RestoreOperation objects
|
|
type RestoreOperationBuilder struct {
|
|
object *itemoperation.RestoreOperation
|
|
}
|
|
|
|
// ForRestoreOperation is the constructor for a RestoreOperationBuilder.
|
|
func ForRestoreOperation() *RestoreOperationBuilder {
|
|
return &RestoreOperationBuilder{
|
|
object: &itemoperation.RestoreOperation{},
|
|
}
|
|
}
|
|
|
|
// Result returns the built RestoreOperation.
|
|
func (rb *RestoreOperationBuilder) Result() *itemoperation.RestoreOperation {
|
|
return rb.object
|
|
}
|
|
|
|
// RestoreName sets the RestoreOperation's restore name.
|
|
func (rb *RestoreOperationBuilder) RestoreName(name string) *RestoreOperationBuilder {
|
|
rb.object.Spec.RestoreName = name
|
|
return rb
|
|
}
|
|
|
|
// OperationID sets the RestoreOperation's operation ID.
|
|
func (rb *RestoreOperationBuilder) OperationID(id string) *RestoreOperationBuilder {
|
|
rb.object.Spec.OperationID = id
|
|
return rb
|
|
}
|
|
|
|
// RestoreItemAction sets the RestoreOperation's restore item action.
|
|
func (rb *RestoreOperationBuilder) RestoreItemAction(ria string) *RestoreOperationBuilder {
|
|
rb.object.Spec.RestoreItemAction = ria
|
|
return rb
|
|
}
|
|
|
|
// Status sets the RestoreOperation's status.
|
|
func (rb *RestoreOperationBuilder) Status(status itemoperation.OperationStatus) *RestoreOperationBuilder {
|
|
rb.object.Status = status
|
|
return rb
|
|
}
|
|
|
|
// ResourceIdentifier sets the RestoreOperation's resource identifier.
|
|
func (rb *RestoreOperationBuilder) ResourceIdentifier(group, resource, ns, name string) *RestoreOperationBuilder {
|
|
rb.object.Spec.ResourceIdentifier = velero.ResourceIdentifier{
|
|
GroupResource: schema.GroupResource{
|
|
Group: group,
|
|
Resource: resource,
|
|
},
|
|
Namespace: ns,
|
|
Name: name,
|
|
}
|
|
return rb
|
|
}
|