mirror of https://github.com/statping/statping
chaged stuff
parent
aa36f50011
commit
b4995bcdab
|
@ -22,8 +22,6 @@ type serviceOrder struct {
|
||||||
Order int `json:"order"`
|
Order int `json:"order"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
zeroTime time.Time
|
zeroTime time.Time
|
||||||
zeroBool bool
|
zeroBool bool
|
||||||
|
@ -44,32 +42,31 @@ func findService(r *http.Request) (*services.Service, error) {
|
||||||
return servicer, nil
|
return servicer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConvertToUnixTime(str string) (time.Time,error){
|
func ConvertToUnixTime(str string) (time.Time, error) {
|
||||||
i, err := strconv.ParseInt(str, 10, 64)
|
i, err := strconv.ParseInt(str, 10, 64)
|
||||||
var t time.Time
|
var t time.Time
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return t,err
|
return t, err
|
||||||
}
|
}
|
||||||
tm := time.Unix(i, 0)
|
tm := time.Unix(i, 0)
|
||||||
return tm,nil
|
return tm, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func findDowntimeByTime(t string,s services.Service) *downtimes.Downtime {
|
func findAllDowntimes(t string) []downtimes.Downtime {
|
||||||
var timeVar time.Time
|
var timeVar time.Time
|
||||||
if t == ""{
|
if t == "" {
|
||||||
timeVar = time.Now()
|
timeVar = time.Now()
|
||||||
}else{
|
} else {
|
||||||
var e error
|
var e error
|
||||||
timeVar,e = ConvertToUnixTime(t)
|
timeVar, e = ConvertToUnixTime(t)
|
||||||
if e != nil{
|
if e != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
downTime := downtimes.FindDowntime(s.Id,timeVar)
|
downTime := downtimes.FindDowntime(timeVar)
|
||||||
return downTime
|
return downTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func findPublicSubService(r *http.Request, service *services.Service) (*services.Service, error) {
|
func findPublicSubService(r *http.Request, service *services.Service) (*services.Service, error) {
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := utils.ToInt(vars["sub_id"])
|
id := utils.ToInt(vars["sub_id"])
|
||||||
|
@ -558,24 +555,27 @@ func apiAllServicesHandler(r *http.Request) interface{} {
|
||||||
func apiAllServicesStatusHandler(r *http.Request) interface{} {
|
func apiAllServicesStatusHandler(r *http.Request) interface{} {
|
||||||
query := r.URL.Query()
|
query := r.URL.Query()
|
||||||
var t string
|
var t string
|
||||||
if query.Get("time") != ""{
|
if query.Get("time") != "" {
|
||||||
t = query.Get("time")
|
t = query.Get("time")
|
||||||
}
|
}
|
||||||
var srvs []services.ServiceWithDowntime
|
var srvs []services.ServiceWithDowntime
|
||||||
|
dtime := findAllDowntimes(t)
|
||||||
|
m := make(map[int64]downtimes.Downtime)
|
||||||
|
for i := 0; i < len(dtime); i += 1 {
|
||||||
|
m[dtime[i].ServiceId] = dtime[i]
|
||||||
|
}
|
||||||
for _, v := range services.AllInOrder() {
|
for _, v := range services.AllInOrder() {
|
||||||
if !v.Public.Bool && !IsUser(r) {
|
if !v.Public.Bool && !IsUser(r) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
dtime :=findDowntimeByTime(t,v)// we get status of each service at time t
|
serviceJson, _ := json.Marshal(&v)
|
||||||
serviceJson,_ := json.Marshal(&v)
|
|
||||||
var serviceDowntimeMap map[string]interface{}
|
var serviceDowntimeMap map[string]interface{}
|
||||||
json.Unmarshal(serviceJson,&serviceDowntimeMap)
|
json.Unmarshal(serviceJson, &serviceDowntimeMap)
|
||||||
|
jsonString, _ := json.Marshal(serviceDowntimeMap)
|
||||||
jsonString,_ := json.Marshal(serviceDowntimeMap)
|
|
||||||
serviceDowntime := services.ServiceWithDowntime{}
|
serviceDowntime := services.ServiceWithDowntime{}
|
||||||
json.Unmarshal(jsonString,&serviceDowntime)
|
json.Unmarshal(jsonString, &serviceDowntime)
|
||||||
if dtime!=nil{
|
if vv, ok := m[v.Id]; ok == true {
|
||||||
serviceDowntime.Downtime = *dtime
|
serviceDowntime.Downtime = vv
|
||||||
}
|
}
|
||||||
srvs = append(srvs, serviceDowntime)
|
srvs = append(srvs, serviceDowntime)
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,17 +58,12 @@ func FindByService(service int64, start time.Time, end time.Time) (*[]Downtime,
|
||||||
return &downtime, q.Error()
|
return &downtime, q.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
func FindDowntime(service int64, timeVar time.Time) *Downtime {
|
func FindDowntime(timeVar time.Time) []Downtime {
|
||||||
var downtime []Downtime
|
var downtime []Downtime
|
||||||
q := db.Where("service = $1 and start BETWEEN $2 AND $3 ", service, time.Time{}, timeVar)
|
q := db.Where("start <= ? and \"end\" >= ?", timeVar, timeVar)
|
||||||
q = q.Order("id ASC ").Find(&downtime)
|
q = q.Order("id ASC ").Find(&downtime)
|
||||||
downtimeList := *(&downtime)
|
return downtime
|
||||||
for _,dtime := range downtimeList{
|
|
||||||
if (*(dtime.End)).Unix() > timeVar.Unix(){
|
|
||||||
return &dtime
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Downtime) Create() error {
|
func (c *Downtime) Create() error {
|
||||||
|
|
|
@ -139,12 +139,13 @@ type ServiceWithDowntime struct {
|
||||||
notifyAfterCount int64 `gorm:"column:notify_after_count" yaml:"-"`
|
notifyAfterCount int64 `gorm:"column:notify_after_count" yaml:"-"`
|
||||||
prevOnline bool `gorm:"column:prev_online" yaml:"-"`
|
prevOnline bool `gorm:"column:prev_online" yaml:"-"`
|
||||||
|
|
||||||
FailureCounter int `gorm:"column:failure_counter" json:"-" yaml:"-"`
|
FailureCounter int `gorm:"column:failure_counter" json:"-" yaml:"-"`
|
||||||
CurrentDowntime int64 `gorm:"column:current_downtime" json:"-" yaml:"-"`
|
CurrentDowntime int64 `gorm:"column:current_downtime" json:"-" yaml:"-"`
|
||||||
LastFailureType string `gorm:"-" json:"-" yaml:"-"`
|
LastFailureType string `gorm:"-" json:"-" yaml:"-"`
|
||||||
ManualDowntime bool `gorm:"default:false;column:manual_downtime" json:"manual_downtime"`
|
ManualDowntime bool `gorm:"default:false;column:manual_downtime" json:"manual_downtime"`
|
||||||
Downtime downtimes.Downtime `gorm:"-" json:"downtime" yaml:"-"`
|
Downtime downtimes.Downtime `gorm:"-" json:"downtime" yaml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceOrder will reorder the services based on 'order_id' (Order)
|
// ServiceOrder will reorder the services based on 'order_id' (Order)
|
||||||
type ServiceOrder []Service
|
type ServiceOrder []Service
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue