// 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 { 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) }