1
0
Fork 0
mirror of https://github.com/external-secrets/external-secrets.git synced 2024-12-14 11:57:59 +00:00

Added gitlab provider

This commit is contained in:
jabray5 2021-07-28 15:29:23 +01:00 committed by Lucas Severo Alves
parent ee830e47e3
commit 92f6077079
4 changed files with 119 additions and 0 deletions

View file

@ -0,0 +1,38 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
import (
esmeta "github.com/external-secrets/external-secrets/apis/meta/v1"
)
// Configures an store to sync secrets using a IBM Cloud Secrets Manager
// backend.
type GitlabProvider struct {
// Auth configures how secret-manager authenticates with the IBM secrets manager.
Auth GitlabAuth `json:"auth"`
// ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance
ProjectID *string `json:"projectID,omitempty"`
}
type GitlabAuth struct {
SecretRef GitlabSecretRef `json:"SecretRef"`
}
type GitlabSecretRef struct {
// The Access Token is used for authentication
AccessToken esmeta.SecretKeySelector `json:"token,omitempty"`
}

View file

@ -57,6 +57,9 @@ type SecretStoreProvider struct {
// YandexLockbox configures this store to sync secrets using Yandex Lockbox provider
// +optional
YandexLockbox *YandexLockboxProvider `json:"yandexlockbox,omitempty"`
// GItlab configures this store to sync secrets using Gitlab Variables provider
// +optional
Gitlab *GitlabProvider `json:"gitlab,omitempty"`
}
type SecretStoreConditionType string

View file

@ -0,0 +1,50 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package gitlab
import (
"log"
"os"
gitlab "github.com/xanzy/go-gitlab"
)
// Requires a token to be set in environment variable
var GITLABTOKEN = os.Getenv("GITLABTOKEN")
type GitlabCredentials struct {
Token string `json:"token"`
}
// Gitlab struct with values for *gitlab.Client and projectID
type Gitlab struct {
client *gitlab.Client
projectID interface{}
}
// Function newGitlabProvider returns a reference to a new Gitlab struct 'instance'
func NewGitlabProvider() *Gitlab {
return &Gitlab{}
}
// Method on Gitlab to set up client with credentials and populate projectID
func (g *Gitlab) NewGitlabClient(cred GitlabCredentials, projectID int) {
var err error
// Create a new Gitlab client with credentials
g.client, err = gitlab.NewClient(cred.Token, nil)
g.projectID = projectID
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
}

View file

@ -0,0 +1,28 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package gitlab
import (
"fmt"
"testing"
)
func TestCreateGitlabClient(t *testing.T) {
credentials := GitlabCredentials{Token: GITLABTOKEN}
gitlab := NewGitlabProvider()
gitlab.NewGitlabClient(credentials, 28414983)
user, _, _ := gitlab.client.Users.CurrentUser()
fmt.Printf("Created client for username: %v", user)
}