44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
// Package admin deals with the parsing and creation of admin.json files.
|
|
package admin
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"isle/garage"
|
|
"isle/nebula"
|
|
)
|
|
|
|
// CreationParams are general parameters used when creating a new network. These
|
|
// are available to all hosts within the network via their bootstrap files.
|
|
type CreationParams struct {
|
|
ID string
|
|
Name string
|
|
Domain string
|
|
}
|
|
|
|
// Admin is used for accessing all information contained within an admin.json.
|
|
type Admin struct {
|
|
CreationParams CreationParams
|
|
|
|
Nebula struct {
|
|
CACredentials nebula.CACredentials
|
|
}
|
|
|
|
Garage struct {
|
|
RPCSecret string
|
|
GlobalBucketS3APICredentials garage.S3APICredentials
|
|
}
|
|
}
|
|
|
|
// FromReader reads an admin.json from the given io.Reader.
|
|
func FromReader(r io.Reader) (Admin, error) {
|
|
var a Admin
|
|
err := json.NewDecoder(r).Decode(&a)
|
|
return a, err
|
|
}
|
|
|
|
// WriteTo writes the Admin as an admin.json to the given io.Writer.
|
|
func (a Admin) WriteTo(into io.Writer) error {
|
|
return json.NewEncoder(into).Encode(a)
|
|
}
|