climc: helm release app

This commit is contained in:
Zexi Li
2018-11-01 16:31:29 +08:00
parent 4bae3769ca
commit c2e628d6ef
5 changed files with 92 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
})
}
+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
}
+39
View File
@@ -0,0 +1,39 @@
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:"Meter helm chart name, e.g infra/meter" default:"infra/meter"`
}
func (o AppCreateOptions) Params() (*jsonutils.JSONDict, error) {
params, err := o.AppBaseCreateOptions.Params()
if err != nil {
return nil, err
}
if o.ChartName != "" {
params.Add(jsonutils.NewString(o.ChartName), "chart_name")
}
return params, nil
}