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