Commit 6b0700c0 authored by Geoff Simmons's avatar Geoff Simmons

pem.GetFileInfo() returns a found boolean.

parent 465b6705
......@@ -432,7 +432,10 @@ var (
func TestGetFileInfo(t *testing.T) {
pemFiles.Base = basedir
info, err := pemFiles.GetFileInfo("ns1", "cafe", "", "")
info, found, err := pemFiles.GetFileInfo("ns1", "cafe", "", "")
if !found {
t.Fatal("GetFileInfo(ns1/cafe) found got false want true")
}
if err != nil {
t.Fatalf("GetFileInfo(ns1/cafe): %v", err)
}
......@@ -453,7 +456,10 @@ func TestGetFileInfo(t *testing.T) {
unmarshalledFileInfo, info)
}
info, err = pemFiles.GetFileInfo("ns2", "bar", "", "")
info, found, err = pemFiles.GetFileInfo("ns2", "bar", "", "")
if !found {
t.Fatal("GetFileInfo(ns2/bar) found got false want true")
}
if err != nil {
t.Fatalf("GetFileInfo(ns2/bar): %v", err)
}
......@@ -473,51 +479,87 @@ func TestGetFileInfo(t *testing.T) {
unmarshalledFileInfo, info)
}
if info, err = pemFiles.GetFileInfo("ns1", "bar", "", ""); err == nil {
if info, found, err = pemFiles.GetFileInfo("ns1", "bar", "", ""); found {
t.Error("GetFileInfo(ns1/bar) found got true want false")
}
if err == nil {
t.Error("GetFileInfo(ns1/bar) error got nil want not found")
}
if info, err = pemFiles.GetFileInfo("ns2", "cafe", "", ""); err == nil {
if info, found, err = pemFiles.GetFileInfo("ns2", "cafe", "", ""); found {
t.Error("GetFileInfo(ns2/cafe) found got true want false")
}
if err == nil {
t.Error("GetFileInfo(ns2/cafe) error got nil want not found")
}
if info, err = pemFiles.GetFileInfo("ns1", "cafe",
"975d4e4f-9ea9-49d9-a81d-1b4bca92a743", ""); err != nil {
if info, found, err = pemFiles.GetFileInfo("ns1", "cafe",
"975d4e4f-9ea9-49d9-a81d-1b4bca92a743", ""); !found {
t.Error("GetFileInfo(ns1/cafe,uid) found got false want true")
}
if err != nil {
t.Errorf("GetFileInfo(ns1/cafe,uid) error got %v want nil", err)
}
if info, err = pemFiles.GetFileInfo(
"ns1", "cafe", "", "4711"); err != nil {
if info, found, err = pemFiles.GetFileInfo(
"ns1", "cafe", "", "4711"); !found {
t.Error("GetFileInfo(ns1/cafe,version) found got false " +
"want true")
}
if err != nil {
t.Errorf("GetFileInfo(ns1/cafe,version) error got %v want nil",
err)
}
if info, err = pemFiles.GetFileInfo("ns1", "cafe",
"975d4e4f-9ea9-49d9-a81d-1b4bca92a743", "4711"); err != nil {
if info, found, err = pemFiles.GetFileInfo("ns1", "cafe",
"975d4e4f-9ea9-49d9-a81d-1b4bca92a743", "4711"); !found {
t.Error("GetFileInfo(ns1/cafe,uid,version) found got false " +
"want true")
}
if err != nil {
t.Errorf("GetFileInfo(ns1/cafe,uid,version) error got %v "+
"want nil", err)
}
if info, err = pemFiles.GetFileInfo("ns1", "cafe",
"d18974c5-94d7-4e04-b2af-6e9274ad46d8", ""); err == nil {
if info, found, err = pemFiles.GetFileInfo("ns1", "cafe",
"d18974c5-94d7-4e04-b2af-6e9274ad46d8", ""); found {
t.Error("GetFileInfo(ns1/cafe,uid) found got true want false")
}
if err == nil {
t.Error("GetFileInfo(ns1/cafe,uid) error got nil " +
"want not found")
}
if info, err = pemFiles.GetFileInfo(
"ns1", "cafe", "", "0815"); err == nil {
if info, found, err = pemFiles.GetFileInfo(
"ns1", "cafe", "", "0815"); found {
t.Error("GetFileInfo(ns1/cafe,version) found got true " +
"want false")
}
if err == nil {
t.Error("GetFileInfo(ns1/cafe,version) error got nil " +
"want nil")
"want ono-nil")
}
if info, err = pemFiles.GetFileInfo("ns1", "cafe",
"d18974c5-94d7-4e04-b2af-6e9274ad46d8", "0815"); err == nil {
if info, found, err = pemFiles.GetFileInfo("ns1", "cafe",
"d18974c5-94d7-4e04-b2af-6e9274ad46d8", "0815"); found {
t.Error("GetFileInfo(ns1/cafe,uid,version) error got true " +
"want false")
}
if err == nil {
t.Error("GetFileInfo(ns1/cafe,uid,version) error got nil " +
"want not found")
}
invalidFiles.Base = basedir
if _, err = invalidFiles.GetFileInfo(
"invalid", "enoent", "", ""); err == nil {
if _, found, err = invalidFiles.GetFileInfo(
"invalid", "enoent", "", ""); found {
t.Error("GetFileInfo(invalid/enoent) found got true " +
"want false")
}
if err == nil {
t.Errorf("GetFileInfo(invalid/enoent) error got nil " +
"want not found")
}
if _, err = invalidFiles.GetFileInfo(
"invalid", "crt", "", ""); err == nil {
t.Errorf("GetFileInfo(invalid/crt) error got nil " +
if _, found, err = invalidFiles.GetFileInfo(
"invalid", "crt", "", ""); !found {
t.Error("GetFileInfo(invalid/crt) found got false " +
"want true")
}
if err == nil {
t.Error("GetFileInfo(invalid/crt) error got nil " +
"want crt parse error")
}
}
......
......@@ -371,6 +371,9 @@ func (pemfiles *Files) Delete(namespace, name string) (bool, error) {
// if the UID and/or ResourceVersion of the corresponding Secret
// match.
//
// The found return value is true iff the corresponding PEM file is
// currently stored.
//
// If an entry is found, the PEM is read and its contents are parsed
// to populate the Cert field, to extent supported by go's crypto/x509
// facilities.
......@@ -378,8 +381,7 @@ func (pemfiles *Files) Delete(namespace, name string) (bool, error) {
// GetFileInfo is protected by a read lock.
func (pemfiles *Files) GetFileInfo(
ns, name, uid, version string,
) (FileInfo, error) {
info := FileInfo{}
) (info FileInfo, found bool, err error) {
mapKey := ns + "/" + name
pemfiles.mtx.RLock()
......@@ -387,27 +389,33 @@ func (pemfiles *Files) GetFileInfo(
pemFile, exists := pemfiles.Files[mapKey]
if !exists {
return info, fmt.Errorf("%s not found", mapKey)
err = fmt.Errorf("%s not found", mapKey)
return
}
if uid != "" && pemFile.UID != uid {
return info, fmt.Errorf("%s uid=%s not found", mapKey, uid)
err = fmt.Errorf("%s uid=%s not found", mapKey, uid)
return
}
if version != "" && pemFile.ResourceVersion != version {
return info, fmt.Errorf("%s version=%s not found", mapKey,
version)
err = fmt.Errorf("%s version=%s not found", mapKey, version)
return
}
path := pemfiles.Path(pemFile)
pemBytes, err := ioutil.ReadFile(path)
if err != nil {
return info, fmt.Errorf("%s: cannot read pem file: %v", mapKey,
err)
if !os.IsNotExist(err) {
found = true
}
err = fmt.Errorf("%s: cannot read pem file: %v", mapKey, err)
return
}
found = true
crt, err := mkCrt(pemBytes)
if err != nil {
return info, fmt.Errorf("%s: cannot read certificate: %v",
mapKey, err)
err = fmt.Errorf("%s: cannot read certificate: %v", mapKey, err)
return
}
info.K8sSecret = Secret{
Namespace: pemFile.Namespace,
......@@ -420,7 +428,7 @@ func (pemfiles *Files) GetFileInfo(
Size: pemFile.Size,
}
info.Cert = crt
return info, nil
return
}
// GetAllFileInfo returns information about all of the PEM files
......@@ -433,7 +441,7 @@ func (pemfiles *Files) GetAllFileInfo() ([]FileInfo, error) {
defer pemfiles.mtx.RUnlock()
for _, pemFile := range pemfiles.Files {
info, err := pemfiles.GetFileInfo(
info, _, err := pemfiles.GetFileInfo(
pemFile.Namespace, pemFile.Name, "", "")
if err != nil {
return allInfo, err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment