mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-06 03:57:52 +09:00
## What this PR does This patch creates a new backups.cozystack.io API group which includes backup-related resources owned exclusively by Cozystack core. A cronjob-like controller is implemented to create backup jobs that will be handled by appropriate third-party or external controllers. ### Release note ```release-note [backups] Implement the core backup API and an accompanying controller. ``` Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
29 lines
736 B
Go
29 lines
736 B
Go
package factory
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
backupsv1alpha1 "github.com/cozystack/cozystack/api/backups/v1alpha1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func BackupJob(p *backupsv1alpha1.Plan, scheduledFor time.Time) *backupsv1alpha1.BackupJob {
|
|
job := &backupsv1alpha1.BackupJob{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: fmt.Sprintf("%s-%d", p.Name, scheduledFor.Unix()/60),
|
|
Namespace: p.Namespace,
|
|
},
|
|
Spec: backupsv1alpha1.BackupJobSpec{
|
|
PlanRef: &corev1.LocalObjectReference{
|
|
Name: p.Name,
|
|
},
|
|
ApplicationRef: *p.Spec.ApplicationRef.DeepCopy(),
|
|
StorageRef: *p.Spec.StorageRef.DeepCopy(),
|
|
StrategyRef: *p.Spec.StrategyRef.DeepCopy(),
|
|
},
|
|
}
|
|
return job
|
|
}
|