mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-11-30 02:38:17 +08:00
[REV]define plugin big class name ruls
[ADD]Add cloud auth
This commit is contained in:
parent
3239d0c85f
commit
bf978cbd55
@ -46,6 +46,7 @@ type ServiceInterface interface {
|
||||
Dependency(w http.ResponseWriter, r *http.Request)
|
||||
Env(w http.ResponseWriter, r *http.Request)
|
||||
Ports(w http.ResponseWriter, r *http.Request)
|
||||
PutPorts(w http.ResponseWriter, r *http.Request)
|
||||
PortOuterController(w http.ResponseWriter, r *http.Request)
|
||||
PortInnerController(w http.ResponseWriter, r *http.Request)
|
||||
RollBack(w http.ResponseWriter, r *http.Request)
|
||||
|
30
pkg/api/apiRouters/cloud/cloudRouter.go
Normal file
30
pkg/api/apiRouters/cloud/cloudRouter.go
Normal file
@ -0,0 +1,30 @@
|
||||
// RAINBOND, Application Management Platform
|
||||
// Copyright (C) 2014-2017 Goodrain Co., Ltd.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version. For any non-GPL usage of Rainbond,
|
||||
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
|
||||
// must be obtained first.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package cloud
|
||||
|
||||
import (
|
||||
"chi"
|
||||
)
|
||||
|
||||
//Routes routes
|
||||
func Routes() chi.Router {
|
||||
r := chi.NewRouter()
|
||||
//r.Get("/show", controller.GetManager().Show)
|
||||
return r
|
||||
}
|
@ -20,8 +20,8 @@ package version2
|
||||
|
||||
import (
|
||||
"github.com/goodrain/rainbond/pkg/api/controller"
|
||||
builder_controller "github.com/goodrain/rainbond/pkg/builder/api"
|
||||
"github.com/goodrain/rainbond/pkg/api/middleware"
|
||||
builder_controller "github.com/goodrain/rainbond/pkg/builder/api"
|
||||
|
||||
"github.com/go-chi/chi"
|
||||
)
|
||||
@ -41,7 +41,7 @@ func (v2 *V2) Routes() chi.Router {
|
||||
r.Mount("/cluster", v2.clusterRouter())
|
||||
r.Mount("/resources", v2.resourcesRouter())
|
||||
r.Mount("/prometheus", v2.prometheusRouter())
|
||||
r.Mount("/builder",builder_controller.APIServer())
|
||||
r.Mount("/builder", builder_controller.APIServer())
|
||||
return r
|
||||
}
|
||||
|
||||
@ -124,7 +124,8 @@ func (v2 *V2) serviceRouter() chi.Router {
|
||||
r.Delete("/env", controller.GetManager().Env)
|
||||
//端口变量增删改(source)
|
||||
r.Post("/ports", controller.GetManager().Ports)
|
||||
r.Put("/ports", controller.GetManager().Ports)
|
||||
r.Put("/ports", controller.GetManager().PutPorts)
|
||||
r.Put("/ports/{port}", controller.GetManager().Ports)
|
||||
r.Delete("/ports/{port}", controller.GetManager().Ports)
|
||||
r.Put("/ports/{port}/outer", controller.GetManager().PortOuterController)
|
||||
r.Put("/ports/{port}/inner", controller.GetManager().PortInnerController)
|
||||
|
@ -978,6 +978,42 @@ func (t *TenantStruct) Ports(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
//PutPorts PortVar
|
||||
// swagger:operation PUT /v2/tenants/{tenant_name}/services/{service_alias}/ports v2 updatePort
|
||||
//
|
||||
// 更新应用端口信息(旧)
|
||||
//
|
||||
// update port
|
||||
//
|
||||
// ---
|
||||
// consumes:
|
||||
// - application/json
|
||||
// - application/x-protobuf
|
||||
//
|
||||
// produces:
|
||||
// - application/json
|
||||
// - application/xml
|
||||
//
|
||||
// responses:
|
||||
// default:
|
||||
// schema:
|
||||
// "$ref": "#/responses/commandResponse"
|
||||
// description: 统一返回格式
|
||||
func (t *TenantStruct) PutPorts(w http.ResponseWriter, r *http.Request) {
|
||||
tenantID := r.Context().Value(middleware.ContextKey("tenant_id")).(string)
|
||||
serviceID := r.Context().Value(middleware.ContextKey("service_id")).(string)
|
||||
var ports api_model.ServicePorts
|
||||
if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &ports, nil); !ok {
|
||||
return
|
||||
}
|
||||
if err := handler.GetServiceManager().PortVar("update", tenantID, serviceID, &ports, 0); err != nil {
|
||||
logrus.Errorf("update port error. %v", err)
|
||||
httputil.ReturnError(r, w, 500, err.Error())
|
||||
return
|
||||
}
|
||||
httputil.ReturnSuccess(r, w, nil)
|
||||
}
|
||||
|
||||
//AddPortVar PortVar
|
||||
// swagger:operation POST /v2/tenants/{tenant_name}/services/{service_alias}/ports v2 addPort
|
||||
//
|
||||
|
@ -798,6 +798,9 @@ func (s *ServiceAction) PortVar(action, tenantID, serviceID string, vps *api_mod
|
||||
vpD.MappingPort = vp.MappingPort
|
||||
vpD.Protocol = vp.Protocol
|
||||
vpD.PortAlias = vp.PortAlias
|
||||
if oldPort == 0 {
|
||||
oldPort = vp.ContainerPort
|
||||
}
|
||||
if err := db.GetManager().TenantServicesPortDaoTransactions(tx).UpdateModel(vpD); err != nil {
|
||||
logrus.Errorf("update port var error, %v", err)
|
||||
tx.Rollback()
|
||||
@ -1642,6 +1645,21 @@ func (s *ServiceAction) SetTenantServicePluginRelation(tenantID, serviceID strin
|
||||
tx.Rollback()
|
||||
return util.CreateAPIHandleErrorFromDBError("get plugin by plugin id", err)
|
||||
}
|
||||
|
||||
catePlugin := strings.Split(plugin.PluginModel, ":")[0]
|
||||
//TODO:检查是否存在该大类插件
|
||||
crt, err := db.GetManager().TenantServicePluginRelationDao().CheckSomeModelLikePluginByServiceID(
|
||||
serviceID,
|
||||
catePlugin,
|
||||
)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return util.CreateAPIHandleErrorFromDBError("check plugin model", err)
|
||||
}
|
||||
if crt {
|
||||
tx.Rollback()
|
||||
return util.CreateAPIHandleError(400, fmt.Errorf("can not add this kind plugin, a same kind plugin has been linked"))
|
||||
}
|
||||
if plugin.PluginModel == dbmodel.UpNetPlugin {
|
||||
ports, err := db.GetManager().TenantServicesPortDao().GetPortsByServiceID(serviceID)
|
||||
if err != nil {
|
||||
|
@ -30,8 +30,8 @@ import (
|
||||
"github.com/goodrain/rainbond/pkg/api/apiRouters/doc"
|
||||
"github.com/goodrain/rainbond/pkg/api/apiRouters/license"
|
||||
|
||||
//"github.com/goodrain/rainbond/pkg/api/apiRouters/cloud"
|
||||
"github.com/goodrain/rainbond/pkg/api/apiRouters/version2"
|
||||
|
||||
"github.com/goodrain/rainbond/pkg/api/apiRouters/websocket"
|
||||
|
||||
apimiddleware "github.com/goodrain/rainbond/pkg/api/middleware"
|
||||
@ -113,6 +113,7 @@ func (m *Manager) Run() {
|
||||
|
||||
v2R := &version2.V2{}
|
||||
m.r.Mount("/v2", v2R.Routes())
|
||||
//m.r.Mount("/cloud", cloud.Routes())
|
||||
m.r.Mount("/", doc.Routes())
|
||||
m.r.Mount("/license", license.Routes())
|
||||
//兼容老版docker
|
||||
|
@ -129,6 +129,7 @@ type TenantServicePluginRelationDao interface {
|
||||
GetALLRelationByServiceID(serviceID string) ([]*model.TenantServicePluginRelation, error)
|
||||
GetRelateionByServiceIDAndPluginID(serviceID, pluginID string) (*model.TenantServicePluginRelation, error)
|
||||
CheckSomeModelPluginByServiceID(serviceID, pluginModel string) (bool, error)
|
||||
CheckSomeModelLikePluginByServiceID(serviceID, pluginModel string) (bool, error)
|
||||
}
|
||||
|
||||
//TenantServiceRelationDao TenantServiceRelationDao
|
||||
|
@ -166,14 +166,18 @@ func (t *TenantServicesStreamPluginPort) TableName() string {
|
||||
|
||||
//Plugin model 插件标签
|
||||
|
||||
//TODO: 插件类型名规定
|
||||
//@ 1. 插件大类 xxx-plugin
|
||||
//@ 2. 大类细分 冒号+细分 xxx-plugin:up or xxx-plugin:down
|
||||
|
||||
//InitPlugin 初始化插件
|
||||
var InitPlugin = "init-plugin"
|
||||
|
||||
//UpNetPlugin 上游网络插件
|
||||
var UpNetPlugin = "upnet-plugin"
|
||||
var UpNetPlugin = "net-plugin:up"
|
||||
|
||||
//DownNetPlugin 下游网络插件
|
||||
var DownNetPlugin = "downnet-plugin"
|
||||
var DownNetPlugin = "net-plugin:down"
|
||||
|
||||
//GeneralPlugin 一般插件,默认分类,优先级最低
|
||||
var GeneralPlugin = "general-plugin"
|
||||
|
@ -370,6 +370,19 @@ func (t *TenantServicePluginRelationDaoImpl) CheckSomeModelPluginByServiceID(ser
|
||||
return false, nil
|
||||
}
|
||||
|
||||
//CheckSomeModelLikePluginByServiceID 检查是否绑定了某大类插件
|
||||
func (t *TenantServicePluginRelationDaoImpl) CheckSomeModelLikePluginByServiceID(serviceID, pluginModel string) (bool, error) {
|
||||
var relations []*model.TenantServicePluginRelation
|
||||
catePlugin := "%" + pluginModel + "%"
|
||||
if err := t.DB.Where("service_id=? and plugin_model LIKE ?", serviceID, catePlugin).Find(&relations).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
if len(relations) == 1 {
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
//DeleteALLRelationByServiceID 删除serviceID所有插件依赖 一般用于删除应用时使用
|
||||
func (t *TenantServicePluginRelationDaoImpl) DeleteALLRelationByServiceID(serviceID string) error {
|
||||
relation := &model.TenantServicePluginRelation{
|
||||
|
Loading…
Reference in New Issue
Block a user