loadbalanceragents.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package compute
  15. import (
  16. "encoding/base64"
  17. "yunion.io/x/jsonutils"
  18. "yunion.io/x/log"
  19. "yunion.io/x/onecloud/pkg/mcclient"
  20. modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
  21. baseoptions "yunion.io/x/onecloud/pkg/mcclient/options"
  22. options "yunion.io/x/onecloud/pkg/mcclient/options/compute"
  23. )
  24. func init() {
  25. printLbagent := func(data jsonutils.JSONObject) {
  26. printObjectRecursiveEx(data, func(data jsonutils.JSONObject) {
  27. // "base64 -d" config template
  28. keys := []string{
  29. "params.keepalived_conf_tmpl",
  30. "params.haproxy_conf_tmpl",
  31. "params.telegraf_conf_tmpl",
  32. }
  33. d := data.(*jsonutils.JSONDict)
  34. for _, key := range keys {
  35. if d.Contains(key) {
  36. s0, _ := d.GetString(key)
  37. b1, err := base64.StdEncoding.DecodeString(s0)
  38. if err != nil {
  39. log.Errorf("%s: invalid base64 string: %s\n %s", key, err, s0)
  40. return
  41. }
  42. s1 := string(b1)
  43. d.Set(key, jsonutils.NewString(s1))
  44. }
  45. }
  46. printObject(d)
  47. })
  48. }
  49. R(&options.LoadbalancerAgentCreateOptions{}, "lbagent-create", "Create lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentCreateOptions) error {
  50. params, err := opts.Params()
  51. if err != nil {
  52. return err
  53. }
  54. lbagent, err := modules.LoadbalancerAgents.Create(s, params)
  55. if err != nil {
  56. return err
  57. }
  58. printLbagent(lbagent)
  59. return nil
  60. })
  61. R(&options.LoadbalancerAgentGetOptions{}, "lbagent-show", "Show lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentGetOptions) error {
  62. lbagent, err := modules.LoadbalancerAgents.Get(s, opts.ID, nil)
  63. if err != nil {
  64. return err
  65. }
  66. printLbagent(lbagent)
  67. return nil
  68. })
  69. R(&options.LoadbalancerAgentDefaultParamsOptions{}, "lbagent-show-default-params", "Show lbagent default params", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentDefaultParamsOptions) error {
  70. params, err := baseoptions.StructToParams(opts)
  71. if err != nil {
  72. return err
  73. }
  74. lbagent, err := modules.LoadbalancerAgents.Get(s, "default-params", params)
  75. if err != nil {
  76. return err
  77. }
  78. printLbagent(lbagent)
  79. return nil
  80. })
  81. R(&options.LoadbalancerAgentListOptions{}, "lbagent-list", "List lbagents", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentListOptions) error {
  82. params, err := baseoptions.ListStructToParams(opts)
  83. if err != nil {
  84. return err
  85. }
  86. result, err := modules.LoadbalancerAgents.List(s, params)
  87. if err != nil {
  88. return err
  89. }
  90. printList(result, modules.LoadbalancerAgents.GetColumns(s))
  91. return nil
  92. })
  93. R(&options.LoadbalancerAgentUpdateOptions{}, "lbagent-update", "Update lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentUpdateOptions) error {
  94. params, err := opts.Params()
  95. lbagent, err := modules.LoadbalancerAgents.Update(s, opts.ID, params)
  96. if err != nil {
  97. return err
  98. }
  99. printLbagent(lbagent)
  100. return nil
  101. })
  102. R(&options.LoadbalancerAgentDeleteOptions{}, "lbagent-delete", "Show lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentDeleteOptions) error {
  103. lbagent, err := modules.LoadbalancerAgents.Delete(s, opts.ID, nil)
  104. if err != nil {
  105. return err
  106. }
  107. printLbagent(lbagent)
  108. return nil
  109. })
  110. R(&options.LoadbalancerAgentActionHbOptions{}, "lbagent-heartbeat", "Emulate a lbagent heartbeat", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionHbOptions) error {
  111. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "hb", nil)
  112. if err != nil {
  113. return err
  114. }
  115. printLbagent(lbagent)
  116. return nil
  117. })
  118. R(&options.LoadbalancerAgentActionPatchParamsOptions{}, "lbagent-params-patch", "Patch lbagent params", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionPatchParamsOptions) error {
  119. params, err := opts.Params()
  120. if err != nil {
  121. return err
  122. }
  123. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "params-patch", params)
  124. if err != nil {
  125. return err
  126. }
  127. printLbagent(lbagent)
  128. return nil
  129. })
  130. /*R(&options.LoadbalancerAgentActionDeployOptions{}, "lbagent-deploy", "Deploy lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionDeployOptions) error {
  131. params, err := opts.Params()
  132. if err != nil {
  133. return err
  134. }
  135. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "deploy", params)
  136. if err != nil {
  137. return err
  138. }
  139. printLbagent(lbagent)
  140. return nil
  141. })
  142. R(&options.LoadbalancerAgentActionUndeployOptions{}, "lbagent-undeploy", "Undeploy lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionUndeployOptions) error {
  143. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "undeploy", nil)
  144. if err != nil {
  145. return err
  146. }
  147. printLbagent(lbagent)
  148. return nil
  149. })*/
  150. R(&options.LoadbalancerAgentJoinClusterOptions{}, "lbagent-join-cluster", "Agent join cluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentJoinClusterOptions) error {
  151. params, _ := opts.Params()
  152. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "join-cluster", params)
  153. if err != nil {
  154. return err
  155. }
  156. printLbagent(lbagent)
  157. return nil
  158. })
  159. R(&options.LoadbalancerAgentLeaveClusterOptions{}, "lbagent-leave-cluster", "Agent leave cluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentLeaveClusterOptions) error {
  160. params, _ := opts.Params()
  161. lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "leave-cluster", params)
  162. if err != nil {
  163. return err
  164. }
  165. printLbagent(lbagent)
  166. return nil
  167. })
  168. }