last demo import - cleaned

This commit is contained in:
ycc
2023-08-26 22:04:56 +02:00
parent 0ab5dd5e38
commit f3c3c67e2c
884 changed files with 301494 additions and 1 deletions

21
controllers/datacenter.go Normal file
View File

@@ -0,0 +1,21 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// DatacenterController is the controller in chrage of solr
type DatacenterController struct {
beego.Controller
}
// Prepare checks for logged in Datacenter
func (c *DatacenterController) Prepare() {
}
// Get implements simple solr Datacenter
func (c *DatacenterController) Get() {
c.TplName = "datacenter.tpl"
}

31
controllers/default.go Normal file
View File

@@ -0,0 +1,31 @@
package controllers
import (
OCCatalog_cli "oc-search/api-client/oc-catalog"
beego "github.com/beego/beego/v2/server/web"
)
// MainController is in charge of the main page
type MainController struct {
beego.Controller
}
var OCCatalogAPI *OCCatalog_cli.APIClient
func init() {
// auth := context.WithValue(context.Background(), OCCatalog_cli.ContextAPIKey, OCCatalog_cli.APIKey{Key: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2MTI1OTI3MDIsInVzZXJfaWQiOiJ4ZCJ9.kTLb1FtpdnaobUpe5u9Jw8S7Cc6gf7ExmU4U3XMcC2o"})
OCCatalogAPI = OCCatalog_cli.NewAPIClient(&OCCatalog_cli.Configuration{BasePath: "http://localhost:49618/v1",
DefaultHeader: map[string]string{
"authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2MTMwMDI0NjAsInVzZXJfaWQiOiJhc2QifQ.TXT18aeulnCrtedKKFVaD0BapOTdVAFcJJdVS7zk0I8",
},
})
//TODO: Test API is reachable or throw exception
}
// Get provides the main page
func (c *MainController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "index.tpl"
}

74
controllers/details.go Normal file
View File

@@ -0,0 +1,74 @@
package controllers
import (
"context"
beego "github.com/beego/beego/v2/server/web"
)
// DetailsController is the controller in chrage of solr
type DetailsController struct {
beego.Controller
}
// @Title GetDetails
// @Description Return details of a resource
// @Success 200 {string} Cool
// @router /data/:id [post]
// @router /computing/:id [post]
// @router /storage/:id [post]
// @router /datacenter/:id [post]
func (c *DetailsController) SubmitToWorkspace(id string) {
rType := c.Ctx.Input.Params()["1"]
var err error
switch rType {
case "data":
case "computing":
case "datacenter":
case "storage":
_, err = OCCatalogAPI.WorkspaceApi.WorkspaceControllerAddModelToWorkspace(context.Background(), id, rType)
default:
return
}
if err != nil {
return
}
}
// @Title GetDetails
// @Description Return details of a resource
// @Success 200 {string} Cool
// @router /data/:id [get]
// @router /computing/:id [get]
// @router /storage/:id [get]
// @router /datacenter/:id [get]
func (c *DetailsController) GetElementInfo(id string) {
rType := c.Ctx.Input.Params()["1"]
var res interface{}
var err error
switch rType {
case "data":
res, _, err = OCCatalogAPI.DataApi.DataControllerGetDataByID(context.Background(), id)
case "computing":
res, _, err = OCCatalogAPI.ComputingApi.ComputingControllerGetComputingByID(context.Background(), id)
case "datacenter":
res, _, err = OCCatalogAPI.DatacenterApi.DatacenterControllerGetOneDatacenter(context.Background(), id)
case "storage":
res, _, err = OCCatalogAPI.StorageApi.StorageControllerGet(context.Background(), id)
default:
return
}
if err != nil {
return
}
c.Data["data"] = res
c.TplName = "details.tpl"
}

28
controllers/item.go Normal file
View File

@@ -0,0 +1,28 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// ItemController shows partners on a map
type ItemController struct {
beego.Controller
}
// Get items
func (c *ItemController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "item.tpl"
c.EnableXSRF = false
}
// Add item
func (c *ItemController) Add() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "item_add.tpl"
c.EnableXSRF = false
}

17
controllers/login.go Normal file
View File

@@ -0,0 +1,17 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// LoginController is the controller in chrage of solr
type LoginController struct {
beego.Controller
}
// Get implements simple solr Login
func (c *LoginController) Get() {
c.TplName = "login.tpl"
//c.SetSession("login", "test")
}

19
controllers/map.go Normal file
View File

@@ -0,0 +1,19 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// MapController shows partners on a map
type MapController struct {
beego.Controller
}
// Get i
func (c *MapController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "map.tpl"
c.EnableXSRF = false
}

21
controllers/networks.go Normal file
View File

@@ -0,0 +1,21 @@
package controllers
import (
"fmt"
beego "github.com/beego/beego/v2/server/web"
)
// NetworksController is the controller in chrage of solr
type NetworksController struct {
beego.Controller
}
// Get implements simple search
func (c *NetworksController) Get() {
resources := loadSingleFile("data/test.json")
fmt.Println(len(resources))
fmt.Println(resources[0].Name)
c.Data["list"] = resources
c.TplName = "networks.tpl"
}

96
controllers/oidc.go Normal file
View File

@@ -0,0 +1,96 @@
package controllers
import (
"fmt"
"net/http"
beego "github.com/beego/beego/v2/server/web"
oidc "github.com/coreos/go-oidc"
"golang.org/x/net/context"
"golang.org/x/oauth2"
)
// OidcController is the controller in oidc
type OidcController struct {
beego.Controller
}
var oauth2Config oauth2.Config
var idTokenVerifier *oidc.IDTokenVerifier
var ctx context.Context
// Connect implements open id connection to openid provider
func (c *OidcController) Connect() {
ctx = context.Background()
// Initialize a provider by specifying dex's issuer URL.
provider, err := oidc.NewProvider(ctx, "http://127.0.0.1:5556/dex")
if err != nil {
fmt.Println(err.Error())
return
}
// Configure the OAuth2 config with the client values.
oauth2Config = oauth2.Config{
// client_id and client_secret of the client.
ClientID: "opencloud-search",
ClientSecret: "ZXhhbXBsZS1hcHAtc2VjcmV0",
// The redirectURL.
RedirectURL: "http://127.0.0.1:8080/oidc-callback",
// Discovery returns the OAuth2 endpoints.
Endpoint: provider.Endpoint(),
// "openid" is a required scope for OpenID Connect flows.
//
// Other scopes, such as "groups" can be requested.
Scopes: []string{oidc.ScopeOpenID, "profile", "email", "groups"},
}
// Create an ID token parser.
idTokenVerifier = provider.Verifier(&oidc.Config{ClientID: "opencloud-search"})
//state := newState()
c.Redirect(oauth2Config.AuthCodeURL("foobar"), http.StatusFound)
}
// Callback implements open id callback from openid provider
func (c *OidcController) Callback() {
state := c.GetString("state")
code := c.GetString("code")
_ = state
// Verify state.
oauth2Token, err := oauth2Config.Exchange(ctx, code)
if err != nil {
fmt.Println(err.Error())
}
// Extract the ID Token from OAuth2 token.
rawIDToken, ok := oauth2Token.Extra("id_token").(string)
if !ok {
// handle missing token
}
fmt.Println(rawIDToken)
// Parse and verify ID Token payload.
idToken, err := idTokenVerifier.Verify(ctx, rawIDToken)
if err != nil {
// handle error
}
// Extract custom claims.
var claims struct {
Email string `json:"email"`
Verified bool `json:"email_verified"`
Groups []string `json:"groups"`
}
if err := idToken.Claims(&claims); err != nil {
// handle error
}
c.SetSession("login", claims.Email)
c.Redirect("/user", http.StatusFound)
}

28
controllers/partner.go Normal file
View File

@@ -0,0 +1,28 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// PartnerController shows partners on a map
type PartnerController struct {
beego.Controller
}
// Get i
func (c *PartnerController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "item.tpl"
c.EnableXSRF = false
}
// Add i
func (c *PartnerController) Add() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "map.tpl"
c.EnableXSRF = false
}

15
controllers/schedule.go Normal file
View File

@@ -0,0 +1,15 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// ScheduleController is the controller in chrage of solr
type ScheduleController struct {
beego.Controller
}
// Get implements simple search
func (c *ScheduleController) Get() {
c.TplName = "schedule.tpl"
}

53
controllers/search.go Normal file
View File

@@ -0,0 +1,53 @@
package controllers
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"os"
OCCatalog_cli "oc-search/api-client/oc-catalog"
"github.com/beego/beego/v2/core/logs"
beego "github.com/beego/beego/v2/server/web"
"oc-search/models"
)
// SearchController is the controller in chrage of solr
type SearchController struct {
beego.Controller
}
func loadSingleFile(filename string) []models.Resource {
var list []models.Resource
jsonFile, err := os.Open(filename)
// if we os.Open returns an error then handle it
if err != nil {
fmt.Println(err)
}
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
json.Unmarshal(byteValue, &list)
return list
}
// Get implements simple search
func (c *SearchController) Get() {
query := c.GetString("q")
var resources OCCatalog_cli.ModelsSearchResult
//FIXME: dashboard special case for x_dash.json ?????
resources, _, err := OCCatalogAPI.SearchApi.SearchControllerSearchByWord(context.Background(), query)
if err != nil {
logs.Warn(err.Error())
return
}
//TODO: Adapt the View and models to use the OCCatalog_cli models as much as possible
c.Data["list"] = resources
c.TplName = "search.tpl"
}

25
controllers/user.go Normal file
View File

@@ -0,0 +1,25 @@
package controllers
import (
beego "github.com/beego/beego/v2/server/web"
)
// UserController is the controller in chrage of solr
type UserController struct {
beego.Controller
}
// Prepare checks for logged in User
func (c *UserController) Prepare() {
login, _ := c.GetSession("login").(string)
if login == "" {
c.Ctx.Redirect(302, "/login")
}
}
// Get implements simple solr User
func (c *UserController) Get() {
c.Data["login"], _ = c.GetSession("login").(string)
c.TplName = "user.tpl"
}

81
controllers/workflow.go Normal file
View File

@@ -0,0 +1,81 @@
package controllers
import (
"fmt"
"log"
"net/url"
"os"
"strings"
beego "github.com/beego/beego/v2/server/web"
"github.com/sbabiv/xml2map"
)
// WorkflowController allows to edit a tasks workflow
type WorkflowController struct {
beego.Controller
}
// Get i
func (c *WorkflowController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}
// Open i
func (c *WorkflowController) Open() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}
// Save i
func (c *WorkflowController) Save() {
xml := c.GetString("xml")
fmt.Println(xml)
decodedValue, err := url.QueryUnescape(xml)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(decodedValue)
os.WriteFile("graph.xml", []byte(decodedValue), 0660)
decoder := xml2map.NewDecoder(strings.NewReader(decodedValue))
result, err := decoder.Decode()
if err != nil {
}
cells := result["mxGraphModel"].(map[string]interface{})["root"].(map[string]interface{})["mxCell"].([]map[string]interface{})
for _, element := range cells {
id := element["@id"].(string)
if _, ok := element["@style"]; ok {
if _, ok2 := element["@rID"]; ok2 {
fmt.Print(id + ": ")
fmt.Println(element["@rID"], element["@rType"])
}
}
if src, ok := element["@source"]; ok {
src = element["@source"].(string)
fmt.Println("Link: " + src.(string) + " " + element["@target"].(string))
}
}
if err != nil {
log.Fatal(err)
}
c.StopRun()
}
// Export i
func (c *WorkflowController) Export() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}

90
controllers/workspace.go Normal file
View File

@@ -0,0 +1,90 @@
package controllers
import (
"github.com/beego/beego/v2/core/logs"
beego "github.com/beego/beego/v2/server/web"
"golang.org/x/net/context"
)
// WorkspaceController is the controller in chrage of solr
type WorkspaceController struct {
beego.Controller
}
// @Title GetWorkspace
// @Description Return Workspace
// @router / [get]
func (c *WorkspaceController) GetWorkspace() {
//TODO: Use fullModel api call
workspaceObj, _, err := OCCatalogAPI.WorkspaceApi.WorkspaceControllerGetWorkspace(context.Background())
if err != nil {
logs.Warn(err.Error())
return
}
outputArray := []interface{}{}
if len(workspaceObj.Data) > 0 {
dataArr, _, err := OCCatalogAPI.DataApi.DataControllerGetMultipleDataByIDs(context.Background(), workspaceObj.Data)
if err != nil {
logs.Warn(err.Error())
}
//convert array of strings to interface{}
ArrInterface := make([]interface{}, len(dataArr))
for i := range dataArr {
ArrInterface[i] = dataArr[i]
}
outputArray = append(outputArray, ArrInterface...)
}
if len(workspaceObj.Computing) > 0 {
computingArr, _, err := OCCatalogAPI.ComputingApi.ComputingControllerGetMultipleComputingByIDs(context.Background(), workspaceObj.Computing)
if err != nil {
logs.Warn(err.Error())
}
//convert array of strings to interface{}
ArrInterface := make([]interface{}, len(computingArr))
for i := range computingArr {
ArrInterface[i] = computingArr[i]
}
outputArray = append(outputArray, ArrInterface...)
}
if len(workspaceObj.Datacenter) > 0 {
datacenterArr, _, err := OCCatalogAPI.DatacenterApi.DatacenterControllerGetMultipleDatacentersByIDs(context.Background(), workspaceObj.Datacenter)
if err != nil {
logs.Warn(err.Error())
}
//convert array of strings to interface{}
ArrInterface := make([]interface{}, len(datacenterArr))
for i := range datacenterArr {
ArrInterface[i] = datacenterArr[i]
}
outputArray = append(outputArray, ArrInterface...)
}
if len(workspaceObj.Storage) > 0 {
storageArr, _, err := OCCatalogAPI.StorageApi.StorageControllerGetMultipleStoragesByIDs(context.Background(), workspaceObj.Storage)
if err != nil {
logs.Warn(err.Error())
}
//convert array of strings to interface{}
ArrInterface := make([]interface{}, len(storageArr))
for i := range storageArr {
ArrInterface[i] = storageArr[i]
}
outputArray = append(outputArray, ArrInterface...)
}
c.Data["list"] = outputArray
c.TplName = "workspace.tpl"
}