mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #409 in YUNIONIO/onecloud from ~LIZEXI/onecloud:feature/lzx-helm-app to release/2.3.0
* commit 'af97ebe0bc6cb68968f6d320a9b53284be9bdab8': climc: k8s-repo-sync climc: helm release app
This commit is contained in:
@@ -22,6 +22,7 @@ func init() {
|
||||
initRepo()
|
||||
initChart()
|
||||
initRelease()
|
||||
initReleaseApps()
|
||||
|
||||
// kubernetes original resources
|
||||
initRaw()
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initReleaseApps() {
|
||||
cmdN := func(app string) string {
|
||||
return resourceCmdN(fmt.Sprintf("app-%s", app), "create")
|
||||
}
|
||||
R(&o.AppCreateOptions{}, cmdN("meter"), "Create yunion meter helm release", func(s *mcclient.ClientSession, args *o.AppCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.MeterReleaseApps.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@@ -58,4 +58,13 @@ func initRepo() {
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("sync"), "Sync a repository", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.PerformAction(s, args.NAME, "sync", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,19 +1,41 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules"
|
||||
)
|
||||
|
||||
var (
|
||||
Releases *ReleaseManager
|
||||
Releases *ReleaseManager
|
||||
MeterReleaseApps *ReleaseAppManager
|
||||
dummyReleaseApps *ReleaseAppManager
|
||||
)
|
||||
|
||||
type ReleaseManager struct {
|
||||
*NamespaceResourceManager
|
||||
}
|
||||
|
||||
type ReleaseAppManager struct {
|
||||
*NamespaceResourceManager
|
||||
}
|
||||
|
||||
func NewReleaseAppManager(keyword, keywordPlural string) *ReleaseAppManager {
|
||||
return &ReleaseAppManager{
|
||||
NamespaceResourceManager: NewNamespaceResourceManager(keyword, keywordPlural, NewColumns(), NewColumns()),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *ReleaseAppManager) Create(session *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
return m.CreateInContext(session, params, dummyReleaseApps, "")
|
||||
}
|
||||
|
||||
func init() {
|
||||
Releases = &ReleaseManager{
|
||||
NewNamespaceResourceManager("release", "releases", NewColumns(), NewColumns())}
|
||||
dummyReleaseApps = NewReleaseAppManager("releaseapp", "releaseapps")
|
||||
MeterReleaseApps = NewReleaseAppManager("app_meter", "app_meters")
|
||||
modules.Register(Releases)
|
||||
modules.Register(MeterReleaseApps)
|
||||
}
|
||||
|
||||
@@ -85,22 +85,16 @@ func (o ReleaseCreateUpdateOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
}
|
||||
|
||||
type ReleaseCreateOptions struct {
|
||||
NamespaceWithClusterOptions
|
||||
ReleaseCreateUpdateOptions
|
||||
Name string `help:"Release name, If unspecified, it will autogenerate one for you"`
|
||||
AppBaseCreateOptions
|
||||
CHARTNAME string `help:"Helm chart name, e.g stable/etcd"`
|
||||
}
|
||||
|
||||
func (o ReleaseCreateOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params, err := o.ReleaseCreateUpdateOptions.Params()
|
||||
params, err := o.AppBaseCreateOptions.Params()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params.Update(o.NamespaceWithClusterOptions.Params())
|
||||
params.Add(jsonutils.NewString(o.CHARTNAME), "chart_name")
|
||||
if o.Name != "" {
|
||||
params.Add(jsonutils.NewString(o.Name), "release_name")
|
||||
}
|
||||
return params, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/jsonutils"
|
||||
)
|
||||
|
||||
type AppBaseCreateOptions struct {
|
||||
NamespaceWithClusterOptions
|
||||
ReleaseCreateUpdateOptions
|
||||
Name string `help:"Release name, If unspecified, it will autogenerate one for you"`
|
||||
}
|
||||
|
||||
func (o AppBaseCreateOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params, err := o.ReleaseCreateUpdateOptions.Params()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params.Update(o.NamespaceWithClusterOptions.Params())
|
||||
if o.Name != "" {
|
||||
params.Add(jsonutils.NewString(o.Name), "release_name")
|
||||
}
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type AppCreateOptions struct {
|
||||
AppBaseCreateOptions
|
||||
CHARTNAME string `help:"Helm release app chart name, e.g yunion/meter"`
|
||||
}
|
||||
|
||||
func (o AppCreateOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params, err := o.AppBaseCreateOptions.Params()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params.Add(jsonutils.NewString(o.CHARTNAME), "chart_name")
|
||||
return params, nil
|
||||
}
|
||||
Reference in New Issue
Block a user