2022-09-05 17:46:38 +02:00
|
|
|
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
|
|
|
|
// All rights reserved.
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package archive
|
|
|
|
|
2023-11-09 06:19:53 +01:00
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
|
|
|
|
"github.com/ClusterCockpit/cc-backend/pkg/log"
|
|
|
|
"github.com/ClusterCockpit/cc-backend/pkg/schema"
|
|
|
|
"github.com/minio/minio-go/v7"
|
|
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
|
|
)
|
|
|
|
|
2022-09-05 17:46:38 +02:00
|
|
|
type S3ArchiveConfig struct {
|
2023-11-09 06:19:53 +01:00
|
|
|
Endpoint string `json:"endpoint"`
|
|
|
|
AccessKeyID string `json:"accessKeyID"`
|
|
|
|
SecretAccessKey string `json:"secretAccessKey"`
|
|
|
|
UseSSL bool `json:"useSSL"`
|
2022-09-05 17:46:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
type S3Archive struct {
|
|
|
|
path string
|
|
|
|
}
|
2023-11-09 06:19:53 +01:00
|
|
|
|
|
|
|
func (s3a *S3Archive) Init(rawConfig json.RawMessage) (uint64, error) {
|
|
|
|
var config S3ArchiveConfig
|
|
|
|
if err := json.Unmarshal(rawConfig, &config); err != nil {
|
|
|
|
log.Warnf("Init() > Unmarshal error: %#v", err)
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
|
|
|
|
client, err := minio.New(config.Endpoint, &minio.Options{
|
|
|
|
Creds: credentials.NewStaticV4(config.AccessKeyID, config.SecretAccessKey, ""),
|
|
|
|
Secure: config.UseSSL,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalln(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Info() {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Exists(job *schema.Job) bool {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) LoadJobMeta(job *schema.Job) (*schema.JobMeta, error) {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) LoadJobData(job *schema.Job) (schema.JobData, error) {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) LoadClusterCfg(name string) (*schema.Cluster, error) {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s3a *S3Archive) StoreJobMeta(jobMeta *schema.JobMeta) error
|
|
|
|
|
|
|
|
func (s3a *S3Archive) ImportJob(jobMeta *schema.JobMeta, jobData *schema.JobData) error
|
|
|
|
|
|
|
|
func (s3a *S3Archive) GetClusters() []string
|
|
|
|
|
|
|
|
func (s3a *S3Archive) CleanUp(jobs []*schema.Job)
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Move(jobs []*schema.Job, path string)
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Clean(before int64, after int64)
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Compress(jobs []*schema.Job)
|
|
|
|
|
|
|
|
func (s3a *S3Archive) CompressLast(starttime int64) int64
|
|
|
|
|
|
|
|
func (s3a *S3Archive) Iter(loadMetricData bool) <-chan JobContainer
|