本文整理汇总了Golang中github.com/ARGOeu/argo-web-api/app/reports.MongoInterface类的典型用法代码示例。如果您正苦于以下问题:Golang MongoInterface类的具体用法?Golang MongoInterface怎么用?Golang MongoInterface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MongoInterface类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: routeGroup
func routeGroup(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Handle response format based on Accept Header
contentType := r.Header.Get("Accept")
vars := mux.Vars(r)
// Grab Tenant DB configuration from context
tenantcfg := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantcfg)
defer mongo.CloseSession(session)
if err != nil {
return code, h, output, err
}
requestedReport := reports.MongoInterface{}
err = mongo.FindOne(session, tenantcfg.Db, "reports", bson.M{"info.name": vars["report_name"]}, &requestedReport)
if err != nil {
code = http.StatusNotFound
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createErrorMessage(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
selectedGroupType := requestedReport.DetermineGroupType(vars["group_type"])
if selectedGroupType == "endpoint" {
if vars["lgroup_type"] == "" {
vars["lgroup_type"] = vars["group_type"]
vars["lgroup_name"] = vars["group_name"]
vars["group_type"] = ""
vars["group_name"] = ""
}
return ListEndpointGroupResults(r, cfg)
} else if selectedGroupType == "group" {
return ListSuperGroupResults(r, cfg)
}
code = http.StatusNotFound
message := "The report " + vars["report_name"] + " does not define any group type: " + vars["group_type"]
output, err = createErrorMessage(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
开发者ID:kaggis,项目名称:argo-web-api,代码行数:56,代码来源:routing.go
示例2: createEndpointGroupResultView
func createEndpointGroupResultView(results []EndpointGroupInterface, report reports.MongoInterface, format string) ([]byte, error) {
docRoot := &root{}
prevSuperGroup := ""
prevEndpointGroup := ""
endpointGroup := &Group{}
superGroup := &SuperGroup{}
// we iterate through the results struct array
// keeping only the value of each row
for _, row := range results {
timestamp, _ := time.Parse(customForm[0], fmt.Sprint(row.Date))
//if new superGroup value does not match the previous superGroup value
//we create a new superGroup in the xml
if prevSuperGroup != row.SuperGroup {
prevSuperGroup = row.SuperGroup
superGroup = &SuperGroup{
Name: row.SuperGroup,
Type: report.GetGroupType(),
}
docRoot.Result = append(docRoot.Result, superGroup)
prevEndpointGroup = ""
}
//if new endpointGroup does not match the previous service value
//we create a new endpointGroup entry in the xml
if prevEndpointGroup != row.Name {
prevEndpointGroup = row.Name
endpointGroup = &Group{
Name: row.Name,
Type: report.GetEndpointGroupType(),
}
superGroup.Endpoints = append(superGroup.Endpoints, endpointGroup)
}
//we append the new availability values
endpointGroup.Availability = append(endpointGroup.Availability,
&Availability{
Timestamp: timestamp.Format(customForm[1]),
Availability: fmt.Sprintf("%g", row.Availability),
Reliability: fmt.Sprintf("%g", row.Reliability),
Unknown: fmt.Sprintf("%g", row.Unknown),
Uptime: fmt.Sprintf("%g", row.Up),
Downtime: fmt.Sprintf("%g", row.Down),
})
}
if strings.ToLower(format) == "application/json" {
return json.MarshalIndent(docRoot, " ", " ")
} else {
return xml.MarshalIndent(docRoot, " ", " ")
}
}
开发者ID:skanct,项目名称:argo-web-api,代码行数:53,代码来源:View.go
示例3: routeCheckGroup
func routeCheckGroup(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("group check")
err := error(nil)
contentType := "application/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
// Handle response format based on Accept Header
// Default is application/xml
format := r.Header.Get("Accept")
if strings.EqualFold(format, "application/json") {
contentType = "application/json"
}
vars := mux.Vars(r)
tenantcfg, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
return code, h, output, err
}
session, err := mongo.OpenSession(tenantcfg)
defer mongo.CloseSession(session)
if err != nil {
return code, h, output, err
}
result := reports.MongoInterface{}
err = mongo.FindOne(session, tenantcfg.Db, "reports", bson.M{"info.name": vars["report_name"]}, &result)
if err != nil {
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createMessageOUT(message, format) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
if vars["group_type"] != result.GetEndpointGroupType() {
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["group_type"]
output, err := createMessageOUT(message, format) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
return ListEndpointTimelines(r, cfg)
}
开发者ID:skanct,项目名称:argo-web-api,代码行数:49,代码来源:routing.go
示例4: routeCheckGroup
func routeCheckGroup(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("group check")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Handle response format based on Accept Header
contentType := r.Header.Get("Accept")
vars := mux.Vars(r)
// Grab Tenant DB configuration from context
tenantcfg := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantcfg)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
output, _ = respond.MarshalContent(respond.InternalServerErrorMessage, contentType, "", " ")
return code, h, output, err
}
result := reports.MongoInterface{}
err = mongo.FindOne(session, tenantcfg.Db, "reports", bson.M{"info.name": vars["report_name"]}, &result)
if err != nil {
code = http.StatusNotFound
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createMessageOUT(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
if vars["group_type"] != result.GetEndpointGroupType() {
code = http.StatusNotFound
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["group_type"]
output, err := createMessageOUT(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
return ListMetricTimelines(r, cfg)
}
开发者ID:kaggis,项目名称:argo-web-api,代码行数:47,代码来源:routing.go
示例5: ListServiceFlavorResults
// ListServiceFlavorResults is responsible for handling request to list service flavor results
func ListServiceFlavorResults(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "application/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
// Parse the request into the input
urlValues := r.URL.Query()
vars := mux.Vars(r)
tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
if err.Error() == "Unauthorized" {
code = http.StatusUnauthorized
out := respond.UnauthorizedMessage
output = out.MarshalTo(contentType)
return code, h, output, err
}
code = http.StatusInternalServerError
return code, h, output, err
}
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
report := reports.MongoInterface{}
err = mongo.FindOne(session, tenantDbConfig.Db, "reports", bson.M{"info.name": vars["report_name"]}, &report)
if err != nil {
code = http.StatusBadRequest
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createErrorMessage(message, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
input := serviceFlavorResultQuery{
basicQuery: basicQuery{
Name: vars["service_type"],
Granularity: urlValues.Get("granularity"),
Format: contentType,
StartTime: urlValues.Get("start_time"),
EndTime: urlValues.Get("end_time"),
Report: report,
Vars: vars,
},
EndpointGroup: vars["lgroup_name"],
}
tenantDB := session.DB(tenantDbConfig.Db)
errs := input.Validate(tenantDB)
if len(errs) > 0 {
out := respond.BadRequestSimple
out.Errors = errs
output = out.MarshalTo(contentType)
code = 400
return code, h, output, err
}
if vars["lgroup_type"] != report.GetEndpointGroupType() {
code = http.StatusBadRequest
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["lgroup_type"] + ". Try using " + report.GetEndpointGroupType() + " instead."
output, err := createErrorMessage(message, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
results := []ServiceFlavorInterface{}
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Construct the query to mongodb based on the input
filter := bson.M{
"date": bson.M{"$gte": input.StartTimeInt, "$lte": input.EndTimeInt},
"report": report.ID,
}
if input.Name != "" {
//.........这里部分代码省略.........
开发者ID:skanct,项目名称:argo-web-api,代码行数:101,代码来源:Controller.go
示例6: ListEndpointGroupResults
// ListEndpointGroupResults endpoint group availabilities according to the http request
func ListEndpointGroupResults(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Set Content-Type response Header value
contentType := r.Header.Get("Accept")
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
// Parse the request into the input
urlValues := r.URL.Query()
vars := mux.Vars(r)
// Grab Tenant DB configuration from context
tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
report := reports.MongoInterface{}
err = mongo.FindOne(session, tenantDbConfig.Db, "reports", bson.M{"info.name": vars["report_name"]}, &report)
if err != nil {
code = http.StatusNotFound
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createErrorMessage(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
input := endpointGroupResultQuery{
basicQuery{
Name: vars["lgroup_name"],
Granularity: urlValues.Get("granularity"),
Format: contentType,
StartTime: urlValues.Get("start_time"),
EndTime: urlValues.Get("end_time"),
Report: report,
Vars: vars,
}, "",
}
tenantDB := session.DB(tenantDbConfig.Db)
errs := input.Validate(tenantDB)
if len(errs) > 0 {
out := respond.BadRequestSimple
out.Errors = errs
output = out.MarshalTo(contentType)
code = 400
return code, h, output, err
}
if vars["lgroup_type"] != report.GetEndpointGroupType() {
code = http.StatusNotFound
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["lgroup_type"] + ". Try using " + report.GetEndpointGroupType() + " instead."
output, err := createErrorMessage(message, code, contentType) //Render the response into XML or JSON
return code, h, output, err
}
results := []EndpointGroupInterface{}
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Construct the query to mongodb based on the input
filter := bson.M{
"date": bson.M{"$gte": input.StartTimeInt, "$lte": input.EndTimeInt},
"report": report.ID,
}
if input.Name != "" {
filter["name"] = input.Name
}
// Select the granularity of the search daily/monthly
if input.Granularity == "daily" {
customForm[0] = "20060102"
customForm[1] = "2006-01-02"
query := DailyEndpointGroup(filter)
err = mongo.Pipe(session, tenantDbConfig.Db, "endpoint_group_ar", query, &results)
} else if input.Granularity == "monthly" {
customForm[0] = "200601"
customForm[1] = "2006-01"
query := MonthlyEndpointGroup(filter)
err = mongo.Pipe(session, tenantDbConfig.Db, "endpoint_group_ar", query, &results)
}
//.........这里部分代码省略.........
开发者ID:kaggis,项目名称:argo-web-api,代码行数:101,代码来源:Controller.go
示例7: routeGroup
func routeGroup(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "application/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
// Handle response format based on Accept Header
// Default is application/xml
format := r.Header.Get("Accept")
if strings.EqualFold(format, "application/json") {
contentType = "application/json"
}
vars := mux.Vars(r)
tenantcfg, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
if err.Error() == "Unauthorized" {
code = http.StatusUnauthorized
message := err.Error()
output, err = createErrorMessage(message, contentType)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
code = http.StatusInternalServerError
return code, h, output, err
}
session, err := mongo.OpenSession(tenantcfg)
defer mongo.CloseSession(session)
if err != nil {
return code, h, output, err
}
requestedReport := reports.MongoInterface{}
err = mongo.FindOne(session, tenantcfg.Db, "reports", bson.M{"info.name": vars["report_name"]}, &requestedReport)
if err != nil {
code = http.StatusBadRequest
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createErrorMessage(message, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
selectedGroupType := requestedReport.DetermineGroupType(vars["group_type"])
if selectedGroupType == "endpoint" {
if vars["lgroup_type"] == "" {
vars["lgroup_type"] = vars["group_type"]
vars["lgroup_name"] = vars["group_name"]
vars["group_type"] = ""
vars["group_name"] = ""
}
return ListEndpointGroupResults(r, cfg)
} else if selectedGroupType == "group" {
return ListSuperGroupResults(r, cfg)
}
code = http.StatusBadRequest
message := "The report " + vars["report_name"] + " does not define any group type: " + vars["group_type"]
output, err = createErrorMessage(message, format) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", format, charset))
return code, h, output, err
}
开发者ID:skanct,项目名称:argo-web-api,代码行数:71,代码来源:routing.go
注:本文中的github.com/ARGOeu/argo-web-api/app/reports.MongoInterface类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论