package ds_sdk import ( "git.sxidc.com/service-supports/ds-sdk/client" "strings" ) var sdkInstance *SDK func GetInstance() *SDK { return sdkInstance } func InitInstance(token string, baseUrl string, namespace string, dataSource *DataSourceOption, opts ...Option) error { if sdkInstance != nil { return nil } options := &Options{ token: token, baseUrl: baseUrl, namespace: namespace, dataSource: dataSource, } for _, opt := range opts { opt(options) } c := client.New(options.timeout) err := initNamespace(c, options) if err != nil { return err } err = initDataSource(c, options) if err != nil { return err } sdkInstance = &SDK{ options: options, client: c, } return nil } func initNamespace(c *client.Client, options *Options) error { namespaceInfos, err := c.GetNamespaces(options.token, options.baseUrl, options.namespace, 1, 1) if err != nil { return err } if namespaceInfos != nil && len(namespaceInfos) != 0 { return nil } err = c.CreateNamespace(options.token, options.baseUrl, options.namespace) if err != nil && !strings.Contains(err.Error(), "已存在") { return err } return nil } func initDataSource(c *client.Client, options *Options) error { dataSourceInfos, err := c.GetDataSources(options.token, options.baseUrl, options.namespace, options.dataSource.Name, options.dataSource.Type, 1, 1) if err != nil { return err } if dataSourceInfos != nil && len(dataSourceInfos) != 0 { return nil } err = c.CreateDataSource(options.token, options.baseUrl, options.namespace, options.dataSource.Name, options.dataSource.Type, options.dataSource.Spec) if err != nil && !strings.Contains(err.Error(), "已存在") { return err } return nil }