implemented oclib and generates argo yaml
This commit is contained in:
53
models/http.go
Normal file
53
models/http.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/cookiejar"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type HttpQuery struct {
|
||||
baseurl string
|
||||
jar http.CookieJar
|
||||
Cookies map[string]string
|
||||
}
|
||||
|
||||
func (h *HttpQuery) Init(url string) {
|
||||
h.baseurl = url
|
||||
h.jar, _ = cookiejar.New(nil)
|
||||
h.Cookies = make(map[string]string)
|
||||
}
|
||||
|
||||
func (h *HttpQuery) Get(url string) ([]byte, error) {
|
||||
client := &http.Client{Jar: h.jar}
|
||||
resp, err := client.Get(h.baseurl + url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// store received cookies
|
||||
for _, cookie := range h.jar.Cookies(resp.Request.URL) {
|
||||
h.Cookies[cookie.Name] = cookie.Value
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return body, nil
|
||||
}
|
||||
|
||||
func (h *HttpQuery) Post(url string, data url.Values) (*http.Response, error) {
|
||||
client := &http.Client{Jar: h.jar}
|
||||
resp, err := client.PostForm(h.baseurl+url, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// store received cookies
|
||||
for _, cookie := range h.jar.Cookies(resp.Request.URL) {
|
||||
h.Cookies[cookie.Name] = cookie.Value
|
||||
}
|
||||
return resp, err
|
||||
}
|
74
models/schedule.go
Normal file
74
models/schedule.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"oc-monitor/logger"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Is duration really important ?
|
||||
|
||||
type Booking struct {
|
||||
Start time.Time
|
||||
Stop time.Time
|
||||
Duration uint
|
||||
Workflow string
|
||||
}
|
||||
|
||||
type ScheduledBooking struct {
|
||||
Bookings []Booking
|
||||
Mu sync.Mutex
|
||||
}
|
||||
|
||||
func (s Booking) Equals(other Booking) bool {
|
||||
return s.Workflow == other.Workflow && s.Start == other.Start && s.Stop == other.Stop
|
||||
}
|
||||
|
||||
func (sb *ScheduledBooking) AddSchedule(new_booking Booking){
|
||||
if(!sb.scheduleAlreadyExists(new_booking)){
|
||||
sb.Bookings = append(sb.Bookings,new_booking)
|
||||
logger.Logger.Info().Msg("Updated list schedules : \n " + sb.String())
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
// Debug condition : delete once this feature is ready to be implemented
|
||||
logger.Logger.Debug().Msg("Workflow received not added")
|
||||
logger.Logger.Debug().Msg("current schedule contains")
|
||||
for _, booking := range(sb.Bookings){
|
||||
logger.Logger.Debug().Msg(booking.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (sb *ScheduledBooking) GetListNames()(list_names []string ){
|
||||
for _, schedule := range(sb.Bookings){
|
||||
list_names = append(list_names, schedule.Workflow)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (sb *ScheduledBooking) scheduleAlreadyExists(new_booking Booking) bool {
|
||||
for _, booking := range(sb.Bookings){
|
||||
if booking.Equals(new_booking){
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (b *Booking) String() string {
|
||||
return fmt.Sprintf("{workflow : %s , start_date : %s , stop_date : %s }", b.Workflow, b.Start.Format(time.RFC3339), b.Stop.Format(time.RFC3339))
|
||||
|
||||
}
|
||||
|
||||
func (sb *ScheduledBooking) String() string {
|
||||
var str string
|
||||
for _, booking := range(sb.Bookings){
|
||||
str += fmt.Sprintf("%s\n", booking.String())
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
40
models/template_models.go
Normal file
40
models/template_models.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package models
|
||||
|
||||
type Parameter struct {
|
||||
Name string `yaml:"name,omitempty"`
|
||||
Value string `yaml:"value,omitempty"`
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
Image string `yaml:"image"`
|
||||
Command []string `yaml:"command,omitempty,flow"`
|
||||
Args []string `yaml:"args,omitempty,flow"`
|
||||
VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty"`
|
||||
}
|
||||
|
||||
type VolumeMount struct {
|
||||
Name string `yaml:"name"`
|
||||
MountPath string `yaml:"mountPath"`
|
||||
}
|
||||
|
||||
type Task struct {
|
||||
Name string `yaml:"name"`
|
||||
Template string `yaml:"template"`
|
||||
Dependencies []string `yaml:"dependencies,omitempty"`
|
||||
Arguments struct {
|
||||
Parameters []Parameter `yaml:"parameters,omitempty"`
|
||||
} `yaml:"arguments,omitempty"`
|
||||
}
|
||||
|
||||
type Dag struct {
|
||||
Tasks []Task `yaml:"tasks,omitempty"`
|
||||
}
|
||||
|
||||
type Template struct {
|
||||
Name string `yaml:"name"`
|
||||
Inputs struct {
|
||||
Parameters []Parameter `yaml:"parameters"`
|
||||
} `yaml:"inputs,omitempty"`
|
||||
Container Container `yaml:"container,omitempty"`
|
||||
Dag Dag `yaml:"dag,omitempty"`
|
||||
}
|
19
models/volume_models.go
Normal file
19
models/volume_models.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package models
|
||||
|
||||
|
||||
|
||||
type VolumeClaimTemplate struct {
|
||||
Metadata struct {
|
||||
Name string `yaml:"name"`
|
||||
} `yaml:"metadata"`
|
||||
Spec VolumeSpec `yaml:"spec"`
|
||||
}
|
||||
|
||||
type VolumeSpec struct {
|
||||
AccessModes []string `yaml:"accessModes,flow"`
|
||||
Resources struct {
|
||||
Requests struct {
|
||||
Storage string `yaml:"storage"`
|
||||
} `yaml:"requests"`
|
||||
} `yaml:"resources"`
|
||||
}
|
Reference in New Issue
Block a user