Adding support for packages
This commit is contained in:
parent
5c14017a78
commit
4ddeb76c0c
44
Database/package.go
Normal file
44
Database/package.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"gopkg.in/guregu/null.v4"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Package struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name null.String `json:"name"`
|
||||||
|
Active int `json:"active"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPackage(db *sql.DB) ([]Package, error) {
|
||||||
|
var packages []Package
|
||||||
|
rows, err := db.Query("SELECT * FROM dashboard_package")
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error querying list of OS", err)
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var pkg Package
|
||||||
|
err := rows.Scan(&pkg.ID, &pkg.Name, &pkg.Active)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error building list", err)
|
||||||
|
}
|
||||||
|
packages = append(packages, pkg)
|
||||||
|
}
|
||||||
|
return packages, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPackagebyID(db *sql.DB, id int64) (Package, error) {
|
||||||
|
var pkg Package
|
||||||
|
if err := db.QueryRow("SELECT * FROM dashboard_package where id = ?", id).Scan(&pkg.ID, &pkg.Name, &pkg.Active); err != nil {
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return pkg, nil
|
||||||
|
}
|
||||||
|
log.Println("Error getting OS by ID", err)
|
||||||
|
}
|
||||||
|
return pkg, nil
|
||||||
|
}
|
||||||
@ -37,7 +37,7 @@ func GetServersbyID(db *sql.DB, id int64) Server {
|
|||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetServersbyOS(db *sql.DB, id int) ([]Server, error) {
|
func GetServersbyOS(db *sql.DB, id int64) ([]Server, error) {
|
||||||
var servers []Server
|
var servers []Server
|
||||||
rows, err := db.Query("SELECT * FROM dashboard_server WHERE os_id = ?", id)
|
rows, err := db.Query("SELECT * FROM dashboard_server WHERE os_id = ?", id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
56
Http/package.go
Normal file
56
Http/package.go
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package http
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
db "infra-dashboard/Database"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetAllPackages(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var list []db.Package
|
||||||
|
var err error
|
||||||
|
|
||||||
|
t := time.Now()
|
||||||
|
status := 200
|
||||||
|
|
||||||
|
db_conn := db.GetDatabaseConnection()
|
||||||
|
defer db_conn.Close()
|
||||||
|
list, err = db.GetPackage(db_conn)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error getting Package list")
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
logRequest(t, r, status)
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
json.NewEncoder(w).Encode(list)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPackagebyID(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var pkg db.Package
|
||||||
|
var err error
|
||||||
|
|
||||||
|
t := time.Now()
|
||||||
|
status := 200
|
||||||
|
|
||||||
|
params := mux.Vars(r)
|
||||||
|
db_conn := db.GetDatabaseConnection()
|
||||||
|
defer db_conn.Close()
|
||||||
|
id, err := strconv.ParseInt(params["id"], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error converting ID", err)
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
pkg, err = db.GetPackagebyID(db_conn, int64(id))
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error getting Package")
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
logRequest(t, r, status)
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
json.NewEncoder(w).Encode(pkg)
|
||||||
|
}
|
||||||
@ -50,3 +50,28 @@ func GetServersbyID(w http.ResponseWriter, r *http.Request) {
|
|||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
json.NewEncoder(w).Encode(server)
|
json.NewEncoder(w).Encode(server)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var servers []db.Server
|
||||||
|
var err error
|
||||||
|
|
||||||
|
t := time.Now()
|
||||||
|
status := 200
|
||||||
|
|
||||||
|
params := mux.Vars(r)
|
||||||
|
os_id, err := strconv.ParseInt(params["os_id"], 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error converting ID", err)
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
db_conn := db.GetDatabaseConnection()
|
||||||
|
defer db_conn.Close()
|
||||||
|
servers, err = db.GetServersbyOS(db_conn, int64(os_id))
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error getting servers by OS", err)
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
logRequest(t, r, status)
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
json.NewEncoder(w).Encode(servers)
|
||||||
|
}
|
||||||
|
|||||||
@ -19,6 +19,12 @@ func HealthHandler(w http.ResponseWriter, _ *http.Request) {
|
|||||||
_, _ = io.WriteString(w, "OK")
|
_, _ = io.WriteString(w, "OK")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NotFound(w http.ResponseWriter, r *http.Request) {
|
||||||
|
t := time.Now()
|
||||||
|
logRequest(t, r, 404)
|
||||||
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
func logRequest(t time.Time, r *http.Request, s int) {
|
func logRequest(t time.Time, r *http.Request, s int) {
|
||||||
log.Printf("%s - - %s \"%s %s %s\" %d 0 \"-\" \"%s\" %d\n",
|
log.Printf("%s - - %s \"%s %s %s\" %d 0 \"-\" \"%s\" %d\n",
|
||||||
r.Host,
|
r.Host,
|
||||||
|
|||||||
7
main.go
7
main.go
@ -15,7 +15,6 @@ var (
|
|||||||
args struct {
|
args struct {
|
||||||
Log string `arg:"-l,--logfile" help:"location of output logfile." default:"infra-dashboard-access.log"`
|
Log string `arg:"-l,--logfile" help:"location of output logfile." default:"infra-dashboard-access.log"`
|
||||||
EnvFile string `arg:"-e,--envfile" help:"location of file containing environment variables." default:".env"`
|
EnvFile string `arg:"-e,--envfile" help:"location of file containing environment variables." default:".env"`
|
||||||
Metrics bool `arg:"--metrics" help:"enable prometheus exporter on /metrics." default:"false"`
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,6 +25,8 @@ func main() {
|
|||||||
|
|
||||||
router := mux.NewRouter()
|
router := mux.NewRouter()
|
||||||
|
|
||||||
|
router.NotFoundHandler = http.HandlerFunc(h.NotFound)
|
||||||
|
|
||||||
router.HandleFunc("/", h.RequestHandler).Methods("GET")
|
router.HandleFunc("/", h.RequestHandler).Methods("GET")
|
||||||
router.HandleFunc("/healthcheck", h.HealthHandler)
|
router.HandleFunc("/healthcheck", h.HealthHandler)
|
||||||
router.HandleFunc("/os", h.GetOS).Methods("GET")
|
router.HandleFunc("/os", h.GetOS).Methods("GET")
|
||||||
@ -36,6 +37,10 @@ func main() {
|
|||||||
|
|
||||||
router.HandleFunc("/servers", h.GetServersList).Methods("GET")
|
router.HandleFunc("/servers", h.GetServersList).Methods("GET")
|
||||||
router.HandleFunc("/server/{id:[0-9]+}", h.GetServersbyID).Methods("GET")
|
router.HandleFunc("/server/{id:[0-9]+}", h.GetServersbyID).Methods("GET")
|
||||||
|
router.HandleFunc("/server/os/{os_id:[0-9]+}", h.GetServersbyOS).Methods("GET")
|
||||||
|
|
||||||
|
router.HandleFunc("/packages", h.GetAllPackages).Methods("GET")
|
||||||
|
router.HandleFunc("/packages/{id:[0-9]+}", h.GetPackagebyID).Methods("GET")
|
||||||
|
|
||||||
log.Fatal(http.ListenAndServe(":8080", router))
|
log.Fatal(http.ListenAndServe(":8080", router))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user