CreateSecret implementaion
[aaf/sms.git] / sms-service / src / sms / backend / backend.go
1 /*
2  * Copyright 2018 Intel Corporation, Inc
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package backend
18
19 import (
20         smsconfig "sms/config"
21 )
22
23 // SecretDomain is where Secrets are stored.
24 // A single domain can have any number of secrets
25 type SecretDomain struct {
26         UUID string `json:"uuid"`
27         Name string `json:"name"`
28 }
29
30 // SecretKeyValue is building block for a Secret
31 type SecretKeyValue struct {
32         Key   string `json:"name"`
33         Value string `json:"value"`
34 }
35
36 // Secret is the struct that defines the structure of a secret
37 // A single Secret can have any number of SecretKeyValue pairs
38 type Secret struct {
39         Name   string                 `json:"name"`
40         Values map[string]interface{} `json:"values"`
41 }
42
43 // SecretBackend interface that will be implemented for various secret backends
44 type SecretBackend interface {
45         Init() error
46
47         GetStatus() (bool, error)
48         GetSecretDomain(name string) (SecretDomain, error)
49         GetSecret(dom string, sec string) (Secret, error)
50
51         CreateSecretDomain(name string) (SecretDomain, error)
52         CreateSecret(dom string, sec Secret) error
53
54         DeleteSecretDomain(name string) error
55         DeleteSecret(dom string, name string) error
56 }
57
58 // InitSecretBackend returns an interface implementation
59 func InitSecretBackend() (SecretBackend, error) {
60         backendImpl := &Vault{
61                 vaultAddress: smsconfig.SMSConfig.VaultAddress,
62                 vaultToken:   smsconfig.SMSConfig.VaultToken,
63         }
64
65         err := backendImpl.Init()
66         if err != nil {
67                 return nil, err
68         }
69
70         return backendImpl, nil
71 }
72
73 // LoginBackend Interface that will be implemented for various login backends
74 type LoginBackend interface {
75 }