1.开发文档

https://beego.me/docs/intro/

2.bee run projectname

demo controller

package autoscaler

import (
"api-server/controllers" "github.com/golang/glog"
"api-server/modules/helper"
"encoding/json"
"api-server/models/cluster"
"github.com/astaxie/beego/validation"
clusterautoscaler "api-server/modules/clusterautoscaler"
) // Autoscaler Controller
type AutoscalerController struct {
controllers.BaseController
}
const (
CLOUD_PROVIDER_NAME = "cloud-provider"
CLOUD_PROVIDER_VSPHERE_NAME = CLOUD_PROVIDER_NAME + ".properties"
CLOUD_PROVIDER_ALI_NAME = CLOUD_PROVIDER_NAME + ".ali"
CLOUD_PROVIDER_AWS_NAME = CLOUD_PROVIDER_NAME + ".aws"
CLOUD_PROVIDER_AZURE_NAME = CLOUD_PROVIDER_NAME + ".azure"
AUTOSCALER_CONFIG_NAME = "autoscaler-config"
AUTOSCALER_CONFIG_FILE_NAME = AUTOSCALER_CONFIG_NAME + ".properties" ) type Deplotment struct {
Name string `json:"name" valid:"Required"`
ClusterId string `json:"cluster" valid:"Required"`
Issa string `json:"issa" valid:"Required"`
TemplatePath string `json:"templatePath" valid:"Required"`
DatastorePath string `json:"datastorePath" valid:"Required"`
ResourcePoolPath string `json:"resourcePoolPath" valid:"Required"`
TargetPath string `json:"targetPath" valid:"Required"`
RemoveAndDelete string `json:"removeAndDelete" valid:"Required"`
Max string `json:"max" valid:"Required"`
Min string `json:"min" valid:"Required"`
Email string `json:"email" valid:"Required"`
Duration string `json:"duration" valid:"Required"`
} // Create server ConfigMap
// @Title CreateServerConfigMap
// @Description Create server ConfigMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /server [post]
func (c *AutoscalerController) CreateServerConfigMap() { method := "controller/autoscaler CreateServerConfigMap"
// parse params
param := &struct {
ClusterId string `json:"cluster" valid:"Required"`
Issa string `json:"issa" valid:"Required"`
Name string `json:"name" valid:"Required"`
Password string `json:"password" valid:"Required"`
Server string `json:"server" valid:"Required"`
Date string `json:"date" valid:"Required"`
}{}
josnErro := json.Unmarshal(c.Ctx.Input.RequestBody, param)
if josnErro != nil {
glog.Errorf("%s json unmarshal failed, err: %v", method, josnErro)
c.ErrorInternalServerError(josnErro)
return
}
var valid validation.Validation
pass, err := valid.Valid(param)
if err != nil {
glog.Errorln(method, "error occured when validating parameters", err)
c.ErrorInternalServerError(err)
return
}
if !pass {
for _, detail := range valid.Errors {
glog.Errorln(method, "parameter", detail.Key, detail)
}
c.ErrorBadRequest("Invalid Parameter", nil)
return
} clientset, err := helper.GetKubernetesClientset(param.ClusterId)
if err != nil {
glog.Errorf("%s Create clientset failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
} dataMap := make(map[string]string)
dataMap[CLOUD_PROVIDER_VSPHERE_NAME] = (string)(c.Ctx.Input.RequestBody)
err = clusterautoscaler.CreateConfigMap(dataMap, clientset, CLOUD_PROVIDER_NAME)
if err != nil {
glog.Errorf("%s createConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
} c.ResponseSuccess("")
} // Update server ConfigMap
// @Title UpdateServerConfigMap
// @Description Update server ConfigMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /server [put]
func (c *AutoscalerController) UpdateServerConfigMap() { method := "controller/autoscaler UpdateServerConfigMap"
// parse params
param := &struct {
ClusterId string `json:"cluster" valid:"Required"`
Issa string `json:"issa" valid:"Required"`
Name string `json:"name" valid:"Required"`
Password string `json:"password" valid:"Required"`
Server string `json:"server" valid:"Required"`
Date string `json:"date" valid:"Required"`
}{}
josnErro := json.Unmarshal(c.Ctx.Input.RequestBody, param)
if josnErro != nil {
glog.Errorf("%s json unmarshal failed, err: %v", method, josnErro)
c.ErrorInternalServerError(josnErro)
return
}
var valid validation.Validation
pass, err := valid.Valid(param)
if err != nil {
glog.Errorln(method, "error occured when validating parameters", err)
c.ErrorInternalServerError(err)
return
}
if !pass {
for _, detail := range valid.Errors {
glog.Errorln(method, "parameter", detail.Key, detail)
}
c.ErrorBadRequest("Invalid Parameter", nil)
return
} clientset, err := helper.GetKubernetesClientset(param.ClusterId)
if err != nil {
glog.Errorf("%s Create clientset failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
dataMap := make(map[string]string)
dataMap[CLOUD_PROVIDER_VSPHERE_NAME] = (string)(c.Ctx.Input.RequestBody)
err = clusterautoscaler.UpdateConfigMap(dataMap, clientset, CLOUD_PROVIDER_NAME)
if err != nil {
glog.Errorf("%s updateConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess("")
} // Delete server ConfigMap
// @Title DeleteServerConfigMap
// @Description delete server configMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /server [delete]
func (c *AutoscalerController) DeleteServerConfigMap() { method := "controller/autoscaler DeleteServerConfigMap"
// parse params
clusterId := c.GetString("cluster")
configmapName := c.GetString("configname")
clientset, err := helper.GetKubernetesClientset(clusterId)
if err != nil {
glog.Errorf("%s Create clientset failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
return
}
err = clusterautoscaler.DeleteConfigMap(clientset, configmapName)
if err != nil {
glog.Errorf("%s deleteConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess("")
} // get all server configmap in all cluster
// @Title ListAllConfigMap
// @Description get all server configmap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /server [get]
func (c *AutoscalerController) ListAllConfigMap() { method := "controller/autoscaler ListAllConfigMap"
dataselect := helper.DataSelectFromContext(c.Ctx)
_, clusterModels, _, _ := cluster.GetClusterModelList(dataselect)
relsult, err := clusterautoscaler.ListAllConfigMap(clusterModels,CLOUD_PROVIDER_NAME)
if err != nil {
glog.Errorf("%s listAllConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess(relsult)
} // filter cluster issa
// @Title FilterCluster
// @Description get cluster issa status
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /cluster [get]
func (c *AutoscalerController) FilterCluster() { method := "controller/autoscaler FilterCluster"
dataselect := helper.DataSelectFromContext(c.Ctx)
_, clusterModels, _, _ := cluster.GetClusterModelList(dataselect)
relsult, err := clusterautoscaler.FilterCLuster(clusterModels)
if err != nil {
glog.Errorf("%s get cluster issa status failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess(relsult)
} // Create app ConfigMap
// @Title CreateAppConfig
// @Description Create app ConfigMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /app [post]
func (c *AutoscalerController) CreateAppConfig() { method := "controller/autoscaler CreateAppConfig"
// parse params
/*param := &struct {
Name string `json:"name" valid:"Required"`
ClusterId string `json:"cluster" valid:"Required"`
Issa string `json:"issa" valid:"Required"`
TemplatePath string `json:"templatePath" valid:"Required"`
DatastorePath string `json:"datastorePath" valid:"Required"`
RecourcePoolPath string `json:"recourcePoolPath" valid:"Required"`
TargetPath string `json:"targetPath" valid:"Required"`
RemoveAndDelete string `json:"removeAndDelete" valid:"Required"`
Max string `json:"max" valid:"Required"`
Min string `json:"min" valid:"Required"`
Email string `json:"email" valid:"Required"`
Duration string `json:"duration" valid:"Required"`
}{}*/
param := Deplotment{}
err := json.Unmarshal(c.Ctx.Input.RequestBody, &param)
if err != nil {
glog.Errorf("%s json unmarshal failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
var valid validation.Validation
pass, err := valid.Valid(param)
if err != nil {
glog.Errorln(method, "error occured when validating parameters", err)
c.ErrorInternalServerError(err)
return
}
if !pass {
for _, detail := range valid.Errors {
glog.Errorln(method, "parameter", detail.Key, detail)
}
c.ErrorBadRequest("Invalid Parameter", nil)
return
}
clientset, err := helper.GetKubernetesClientset(param.ClusterId)
if err != nil {
glog.Error("create clientset erro")
c.ErrorInternalServerError(err)
return
}
dataMap := make(map[string]string)
dataMap[AUTOSCALER_CONFIG_FILE_NAME] = (string)(c.Ctx.Input.RequestBody)
err = clusterautoscaler.CreateConfigMap(dataMap,clientset,AUTOSCALER_CONFIG_NAME)
if err != nil {
glog.Errorf("%s createConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
clusterautoscaler.CreateApp(clientset,param.Duration)
c.ResponseSuccess("")
} // get autoscaler configmap in all cluster
// @Title ListAppConfigMap
// @Description get all autoscaler configmap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /app [get]
func (c *AutoscalerController) ListAppConfigMap() { method := "controller/autoscaler ListAppConfigMap"
dataselect := helper.DataSelectFromContext(c.Ctx)
_, clusterModels, _, _ := cluster.GetClusterModelList(dataselect)
relsult, err := clusterautoscaler.ListAllConfigMap(clusterModels,AUTOSCALER_CONFIG_NAME)
if err != nil {
glog.Errorf("%s listAllConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess(relsult)
} // Delete app ConfigMap
// @Title DeleteAppConfigMap
// @Description delete server configMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /app [delete]
func (c *AutoscalerController) DeleteAppConfigMap() { method := "controller/autoscaler DeleteAppConfigMap"
// parse params
clusterId := c.GetString("cluster")
clientset, err := helper.GetKubernetesClientset(clusterId)
if err != nil {
glog.Errorf("%s Create clientset failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
err = clusterautoscaler.DeleteConfigMap(clientset, AUTOSCALER_CONFIG_NAME)
if err != nil {
glog.Errorf("%s deleteConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
err = clusterautoscaler.DeleteApp(clientset)
if err != nil {
glog.Errorf("%s deleteApp failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess("")
} // Update app ConfigMap
// @Title UpdataAppConfig
// @Description Update app ConfigMap
// @Success 200 {string} success
// @Failure 500 internal server error
// @Failure 400 bad request
// @Failure 401 authorization failure
// @router /app [put]
func (c *AutoscalerController) UpdateAppConfig() { method := "controller/autoscaler UpdateAppConfig"
// parse params
param := Deplotment{}
err := json.Unmarshal(c.Ctx.Input.RequestBody, &param)
if err != nil {
glog.Errorf("%s json unmarshal failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
var valid validation.Validation
pass, err := valid.Valid(param)
if err != nil {
glog.Errorln(method, "error occured when validating parameters", err)
c.ErrorInternalServerError(err)
return
}
if !pass {
for _, detail := range valid.Errors {
glog.Errorln(method, "parameter", detail.Key, detail)
}
c.ErrorBadRequest("Invalid Parameter", nil)
return
}
clientset, err := helper.GetKubernetesClientset(param.ClusterId)
if err != nil {
glog.Error("create clientset erro")
c.ErrorInternalServerError(err)
return
}
dataMap := make(map[string]string)
dataMap[AUTOSCALER_CONFIG_FILE_NAME] = (string)(c.Ctx.Input.RequestBody)
err = clusterautoscaler.UpdateConfigMap(dataMap,clientset,AUTOSCALER_CONFIG_NAME)
if err != nil {
glog.Errorf("%s updateConfigMap failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
err = clusterautoscaler.RestartApp(clientset,param.Duration)
if err != nil {
glog.Errorf("%s restartApp failed, err: %v", method, err)
c.ErrorInternalServerError(err)
return
}
c.ResponseSuccess("")
}

beego 笔记的更多相关文章

  1. beego笔记

    beego学习笔记一:创建第一个beego Web项目 Go语言beego框架快速搭建体验五分钟讲解01 beego框架图文简介五分钟讲解02 beego框架图文简介五分钟讲解03-go语言简单方式操 ...

  2. Beego学习笔记——Logs

    日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...

  3. Beego学习笔记——Config

    配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...

  4. Beego学习笔记——开始

    beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...

  5. Beego学习笔记

    Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...

  6. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  7. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  8. golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息

    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...

  9. golang学习笔记9 beego nginx 部署 nginx 反向代理 golang web

    golang学习笔记9 beego nginx 部署 nginx 反向代理 golang web Nginx 部署 - beego: 简约 & 强大并存的 Go 应用框架https://bee ...

随机推荐

  1. ie浏览器下载文件时文件名乱码

    做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...

  2. c#(IronPython)调用Python方法

    直接一段代码演示 public void StartTCP() { ScriptEngine engine = Python.CreateEngine(); var paths = engine.Ge ...

  3. 搭建Extjs框架(二)

    搭建Extjs 框架 二.编写入口文件 app.js,配置extjs 组件\视图文件路径 并将app.js引入index.html       在app.js中指定一些文件的路径,Extjs页面的起始 ...

  4. UCanCode发布升级E-Form++可视化源码组件库2018全新版 !

    2018年. 成都 UCanCode发布升级E-Form++可视化源码组件库2018全新版 ! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版 ...

  5. SQL:登录、连接数据库基本操作

    使用MySQL 登录.连接数据库 win+R打开控制台,cmd进入控制台,输入mysql -u root -p,后输入密码,进入数据库: 首先可以查看原有的数据库,输入 show databases; ...

  6. 附件上传——mysql blob类型的数据(springboot)1

    作为一个初出茅庐的菜鸟,这几天做了一下附件的上传与下载,附件文件存储在mysql中,数据类型为blob.在此做一下总结.望指正. 一.先总结附件的上传.(实质是将文件传到controller,后处理成 ...

  7. 「PHP」观察者模式模式

    引言   所属:行为型模式,常用设计模式之一       学习资料: <大话设计模式>程杰 模式概述   观察者模式定义了一种一对多的依赖关系,让多个观察者对象监听某一个主题对象.这个主题 ...

  8. PHP封装CURL

    CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...

  9. php ecshop 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆或者无法退出的问题

    echshop基础上做了单点登录的 一级域名与二级域名 退出时 清空session 都是一级域名的session 因为二级域名的session是设置在二级域名上的 echshop基础上没有做单点登录的 ...

  10. kubernetes理论基础#开始入坑啊!

    什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上, ...