instance.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package ds_sdk
  2. import (
  3. "git.sxidc.com/service-supports/ds-sdk/client"
  4. "strings"
  5. )
  6. var sdkInstance *SDK
  7. func GetInstance() *SDK {
  8. return sdkInstance
  9. }
  10. func InitInstance(token string, baseUrl string, namespace string, dataSource *DataSourceOption, opts ...Option) error {
  11. if sdkInstance != nil {
  12. return nil
  13. }
  14. options := &Options{
  15. token: token,
  16. baseUrl: baseUrl,
  17. namespace: namespace,
  18. dataSource: dataSource,
  19. }
  20. for _, opt := range opts {
  21. opt(options)
  22. }
  23. c := client.New(options.timeout)
  24. err := initNamespace(c, options)
  25. if err != nil {
  26. return err
  27. }
  28. err = initDataSource(c, options)
  29. if err != nil {
  30. return err
  31. }
  32. sdkInstance = &SDK{
  33. options: options,
  34. client: c,
  35. }
  36. return nil
  37. }
  38. func initNamespace(c *client.Client, options *Options) error {
  39. namespaceInfos, err := c.GetNamespaces(options.token, options.baseUrl, options.namespace, 1, 1)
  40. if err != nil {
  41. return err
  42. }
  43. if namespaceInfos != nil && len(namespaceInfos) != 0 {
  44. return nil
  45. }
  46. err = c.CreateNamespace(options.token, options.baseUrl, options.namespace)
  47. if err != nil && !strings.Contains(err.Error(), "已存在") {
  48. return err
  49. }
  50. return nil
  51. }
  52. func initDataSource(c *client.Client, options *Options) error {
  53. dataSourceInfos, err := c.GetDataSources(options.token, options.baseUrl, options.namespace,
  54. options.dataSource.Name, options.dataSource.Type, 1, 1)
  55. if err != nil {
  56. return err
  57. }
  58. if dataSourceInfos != nil && len(dataSourceInfos) != 0 {
  59. return nil
  60. }
  61. err = c.CreateDataSource(options.token, options.baseUrl, options.namespace,
  62. options.dataSource.Name, options.dataSource.Type, options.dataSource.Spec)
  63. if err != nil && !strings.Contains(err.Error(), "已存在") {
  64. return err
  65. }
  66. return nil
  67. }