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:
李泽玺
2018-11-02 16:55:03 +08:00
6 changed files with 99 additions and 9 deletions
+1
View File
@@ -22,6 +22,7 @@ func init() {
initRepo()
initChart()
initRelease()
initReleaseApps()
// kubernetes original resources
initRaw()
+27
View File
@@ -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
})
}
+9
View File
@@ -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
})
}
+23 -1
View File
@@ -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)
}
+2 -8
View File
@@ -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
}
+37
View File
@@ -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
}