scaling_group.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. "yunion.io/x/jsonutils"
  17. "yunion.io/x/onecloud/pkg/mcclient"
  18. modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
  19. "yunion.io/x/onecloud/pkg/mcclient/options"
  20. )
  21. func init() {
  22. type ScalingGroupListOptions struct {
  23. options.BaseListOptions
  24. Hypervisor string `help:"Hypervisor"`
  25. Cloudregion string `help:"Cloudregion"`
  26. Network string `help:"network"`
  27. }
  28. R(&ScalingGroupListOptions{}, "scaling-group-list", "List scaling group", func(s *mcclient.ClientSession, args *ScalingGroupListOptions) error {
  29. params, err := options.ListStructToParams(args)
  30. if err != nil {
  31. return err
  32. }
  33. result, err := modules.ScalingGroup.List(s, params)
  34. if err != nil {
  35. return err
  36. }
  37. printList(result, modules.ScalingGroup.GetColumns(s))
  38. return nil
  39. })
  40. type ScalingGroupShowOptions struct {
  41. ID string
  42. }
  43. R(&ScalingGroupShowOptions{}, "scaling-group-show", "Show scaling group", func(s *mcclient.ClientSession,
  44. args *ScalingGroupShowOptions) error {
  45. result, err := modules.ScalingGroup.Get(s, args.ID, nil)
  46. if err != nil {
  47. return err
  48. }
  49. printObject(result)
  50. return nil
  51. })
  52. type ScalingGroupCreateOptions struct {
  53. NAME string
  54. Hypervisor string
  55. Cloudregion string
  56. Network string
  57. GuestTemplate string
  58. MinInstanceNumber string
  59. MaxInstanceNumber string
  60. DesireInstanceNumber string
  61. Loadbalance string
  62. }
  63. R(&ScalingGroupCreateOptions{}, "scaling-group-create", "Create scaling group", func(s *mcclient.ClientSession, args *ScalingGroupCreateOptions) error {
  64. params := jsonutils.Marshal(args).(*jsonutils.JSONDict)
  65. scalingGroup, err := modules.ScalingGroup.Create(s, params)
  66. if err != nil {
  67. return err
  68. }
  69. printObject(scalingGroup)
  70. return nil
  71. })
  72. type ScalingGroupDeleteOptions struct {
  73. ID string `help:"ScalingGroup ID or Name"`
  74. }
  75. R(&ScalingGroupDeleteOptions{}, "scaling-group-delete", "Delete Scaling Group", func(s *mcclient.ClientSession,
  76. args *ScalingGroupDeleteOptions) error {
  77. scalingGroup, err := modules.ScalingGroup.Delete(s, args.ID, jsonutils.NewDict())
  78. if err != nil {
  79. return err
  80. }
  81. printObject(scalingGroup)
  82. return nil
  83. })
  84. type ScalingGroupListInstanceOptions struct {
  85. ID string `help:"ScalingGroup ID or Name"`
  86. }
  87. R(&ScalingGroupListInstanceOptions{}, "scaling-group-list-instance", "List all instance of Scaling Group",
  88. func(s *mcclient.ClientSession, args *ScalingGroupListInstanceOptions) error {
  89. params := jsonutils.NewDict()
  90. params.Set("scaling_group", jsonutils.NewString(args.ID))
  91. servers, err := modules.Servers.List(s, params)
  92. if err != nil {
  93. return err
  94. }
  95. printList(servers, modules.Servers.GetColumns(s))
  96. return nil
  97. },
  98. )
  99. type ScalingGroupRemoveInstanceOptions struct {
  100. ID string `help:"ScalingGroup ID or Name"`
  101. SERVER string `help:"Server ID or Name"`
  102. Delete bool `help:"If delete the server"`
  103. }
  104. R(&ScalingGroupRemoveInstanceOptions{}, "scaling-group-remove-instance", "Remove instance of ScalingGroup",
  105. func(s *mcclient.ClientSession, args *ScalingGroupRemoveInstanceOptions) error {
  106. params := jsonutils.NewDict()
  107. params.Set("scaling_group", jsonutils.NewString(args.ID))
  108. params.Set("delete_server", jsonutils.NewBool(args.Delete))
  109. server, err := modules.Servers.PerformAction(s, args.SERVER, "detach-scaling-group", params)
  110. if err != nil {
  111. return err
  112. }
  113. printObject(server)
  114. return nil
  115. },
  116. )
  117. type ScalingGroupEnableOptions struct {
  118. ID string `help:"ScalingGroup ID or Name"`
  119. }
  120. R(&ScalingGroupEnableOptions{}, "scaling-group-enable", "Enable ScalingGroup", func(s *mcclient.ClientSession,
  121. args *ScalingGroupEnableOptions) error {
  122. ret, err := modules.ScalingGroup.PerformAction(s, args.ID, "enable", jsonutils.NewDict())
  123. if err != nil {
  124. return err
  125. }
  126. printObject(ret)
  127. return nil
  128. })
  129. R(&ScalingGroupEnableOptions{}, "scaling-group-disable", "Disable ScalingGroup", func(s *mcclient.ClientSession,
  130. args *ScalingGroupEnableOptions) error {
  131. ret, err := modules.ScalingGroup.PerformAction(s, args.ID, "disable", jsonutils.NewDict())
  132. if err != nil {
  133. return err
  134. }
  135. printObject(ret)
  136. return nil
  137. })
  138. }