A Golang API and examples for Delinea DevOps Secrets Vault.
The API requires a Configuration object containing a ClientID, ClientSecret
and Tenant:
type ClientCredential struct {
    ClientID, ClientSecret string
}
type Configuration struct {
    Credentials              ClientCredential
    Tenant, TLD, URLTemplate string
}The unit tests populate Configuration from test_config.json:
config := new(Configuration)
if cj, err := ioutil.ReadFile("../test_config.json"); err == nil {
    json.Unmarshal(cj, &config)
}
tss := New(*config)Create test_config.json:
{
  "credentials": {
    "clientId": "",
    "clientSecret": ""
  },
  "tenant": "mytenant"
}vault/role_test.go declares:
const roleName = "test-role"The tests assume that roleName exists and has privilege to create, read,
and delete a client, as well as create, read and delete secrets with a test: path prefix.
Define a Configuration then use it to create an instance of Vault:
dsv := vault.New(vault.Configuration{
    ClientID:     os.Getenv("DSV_CLIENT_ID"),
    ClientSecret: os.Getenv("DSV_CLIENT_SECRET"),
    Tenant:       os.Getenv("DSV_TENANT"),
})
secret, err := dsv.Secret("path:of:the:secret")
if err != nil {
    log.Fatal("failure calling vault.Secret", err)
}
fmt.Print("the SSH public key is", secret.Data["public"])| 
                
                     Sheldonhull  | 
            
                
                     Adam C. Migus  | 
            
                
                     Bill Hamilton  | 
            
                
                     Max Sokolovsky  | 
            
                
                     Tim Krehl  | 
            
                
                     Andrii Zakurenyi  | 
		
| 
                
                     Michael Sauter  | 
            
                
                     Ricky White  | 
            
                
                     Tim Field  |