rpc_service.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. // Copyright 2022 EMQ Technologies Co., Ltd.
  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. //go:build !core || (rpc && service)
  15. // +build !core rpc,service
  16. package server
  17. import (
  18. "encoding/json"
  19. "fmt"
  20. "github.com/lf-edge/ekuiper/internal/pkg/model"
  21. "github.com/lf-edge/ekuiper/internal/service"
  22. )
  23. func (t *Server) CreateService(arg *model.RPCArgDesc, reply *string) error {
  24. sd := &service.ServiceCreationRequest{}
  25. if arg.Json != "" {
  26. if err := json.Unmarshal([]byte(arg.Json), sd); err != nil {
  27. return fmt.Errorf("Parse service %s error : %s.", arg.Json, err)
  28. }
  29. }
  30. if sd.Name != arg.Name {
  31. return fmt.Errorf("Create service error: name mismatch.")
  32. }
  33. if sd.File == "" {
  34. return fmt.Errorf("Create service error: Missing service file url.")
  35. }
  36. err := serviceManager.Create(sd)
  37. if err != nil {
  38. return fmt.Errorf("Create service error: %s", err)
  39. } else {
  40. *reply = fmt.Sprintf("Service %s is created.", arg.Name)
  41. }
  42. return nil
  43. }
  44. func (t *Server) DescService(name string, reply *string) error {
  45. s, err := serviceManager.Get(name)
  46. if err != nil {
  47. return fmt.Errorf("Desc service error : %s.", err)
  48. } else {
  49. r, err := marshalDesc(s)
  50. if err != nil {
  51. return fmt.Errorf("Describe service error: %v", err)
  52. }
  53. *reply = r
  54. }
  55. return nil
  56. }
  57. func (t *Server) DescServiceFunc(name string, reply *string) error {
  58. s, err := serviceManager.GetFunction(name)
  59. if err != nil {
  60. return fmt.Errorf("Desc service func error : %s.", err)
  61. } else {
  62. r, err := marshalDesc(s)
  63. if err != nil {
  64. return fmt.Errorf("Describe service func error: %v", err)
  65. }
  66. *reply = r
  67. }
  68. return nil
  69. }
  70. func (t *Server) DropService(name string, reply *string) error {
  71. err := serviceManager.Delete(name)
  72. if err != nil {
  73. return fmt.Errorf("Drop service error : %s.", err)
  74. }
  75. *reply = fmt.Sprintf("Service %s is dropped", name)
  76. return nil
  77. }
  78. func (t *Server) ShowServices(_ int, reply *string) error {
  79. s, err := serviceManager.List()
  80. if err != nil {
  81. return fmt.Errorf("Show service error: %s.", err)
  82. }
  83. if len(s) == 0 {
  84. *reply = "No service definitions are found."
  85. } else {
  86. r, err := marshalDesc(s)
  87. if err != nil {
  88. return fmt.Errorf("Show service error: %v", err)
  89. }
  90. *reply = r
  91. }
  92. return nil
  93. }
  94. func (t *Server) ShowServiceFuncs(_ int, reply *string) error {
  95. s, err := serviceManager.ListFunctions()
  96. if err != nil {
  97. return fmt.Errorf("Show service funcs error: %s.", err)
  98. }
  99. if len(s) == 0 {
  100. *reply = "No service definitions are found."
  101. } else {
  102. r, err := marshalDesc(s)
  103. if err != nil {
  104. return fmt.Errorf("Show service funcs error: %v", err)
  105. }
  106. *reply = r
  107. }
  108. return nil
  109. }