Add the CACert parameter to the ExternalCA object in order to match
swarmkit's API type.  Make sure this parameter gets propagated to
swarmkit, and also add an extra option to the CLI when providing
external CAs to parse the CA cert from a file.
@@ -2,7 +2,9 @@ package swarm
import (
"encoding/csv"
+ "encoding/pem"
"fmt"
+ "io/ioutil"
"strings"
"time"
@@ -154,6 +156,15 @@ func parseExternalCA(caSpec string) (*swarm.ExternalCA, error) {
case "url":
hasURL = true
externalCA.URL = value
+ case "cacert":
+ cacontents, err := ioutil.ReadFile(value)
+ if err != nil {
+ return nil, errors.Wrap(err, "unable to read CA cert for external CA")
+ }
+ if pemBlock, _ := pem.Decode(cacontents); pemBlock == nil {
+ return nil, errors.New("CA cert for external CA must be in PEM format")
+ }
+ externalCA.CACert = string(cacontents)
default:
externalCA.Options[key] = value
}
