diff options
author | Jaime Martinez <jmartinez@gitlab.com> | 2020-07-27 04:43:02 +0300 |
---|---|---|
committer | Vladimir Shushlin <v.shushlin@gmail.com> | 2020-08-04 11:23:51 +0300 |
commit | e5106118f14674565bedf7c3dc3733ce2739acc3 (patch) | |
tree | e21ac26d41ab1e004cf49412919679c8e7a9be8e | |
parent | 46160c0fd08b1628055de9fb94c009a924235d6f (diff) |
Set disk source
-rw-r--r-- | internal/source/domains.go | 33 | ||||
-rw-r--r-- | internal/source/domains_test.go | 10 |
2 files changed, 29 insertions, 14 deletions
diff --git a/internal/source/domains.go b/internal/source/domains.go index b35774be..81c53bd6 100644 --- a/internal/source/domains.go +++ b/internal/source/domains.go @@ -41,29 +41,34 @@ type Domains struct { // not initialize `dm` as we later check the readiness by comparing it with a // nil value. func NewDomains(config Config) (*Domains, error) { - // TODO: choose domain source config via config.DomainConfigSource() - // https://gitlab.com/gitlab-org/gitlab/-/issues/217912 + domains := &Domains{ + disk: disk.New(), + } - domains := &Domains{} + // Creating a glClient will start polling connectivity in the background + glClient, glErr := newGitlabClient(config) - if config.DomainConfigSource() == "disk" { - domains.disk = disk.New() - // TODO: start polling + switch config.DomainConfigSource() { + // TODO: handle DomainConfigSource == "gitlab" || "auto" https://gitlab.com/gitlab-org/gitlab/-/issues/218358 + case "disk": return domains, nil } - if len(config.InternalGitLabServerURL()) == 0 || len(config.GitlabAPISecret()) == 0 { - return domains, nil + if glErr == nil { + domains.gitlab = glClient + } else { + log.WithError(glErr).Warn("failed to create GitLab domains source") } - glClient, err := gitlab.New(config) - if err != nil { - return nil, err - } + return domains, nil +} - domains.gitlab = glClient +func newGitlabClient(config Config) (*gitlab.Gitlab, error) { + if len(config.InternalGitLabServerURL()) == 0 || len(config.GitlabAPISecret()) == 0 { + return nil, nil + } - return domains, nil + return gitlab.New(config) } // GetDomain retrieves a domain information from a source. We are using two diff --git a/internal/source/domains_test.go b/internal/source/domains_test.go index 2382e756..df41caa2 100644 --- a/internal/source/domains_test.go +++ b/internal/source/domains_test.go @@ -52,6 +52,16 @@ func TestDomainSources(t *testing.T) { require.Nil(t, domains.gitlab) require.NotNil(t, domains.disk) }) + + t.Run("when source is set to disk", func(t *testing.T) { + domains, err := NewDomains(sourceConfig{ + domainSource: "disk", + }) + require.NoError(t, err) + + require.Nil(t, domains.gitlab) + require.NotNil(t, domains.disk) + }) } func TestGetDomain(t *testing.T) { |