Documentation ¶
Index ¶
- Constants
- Variables
- func CopyStringMap(m map[string]string) map[string]string
- func ExtractDefaultLabels(instanceId string, details brokerapi.ProvisionDetails) map[string]string
- func GetAuthedConfig() (*jwt.Config, error)
- func GetDefaultProjectId() (string, error)
- func GetServiceAccountJson() string
- func Indent(text, by string) string
- func NewLogger(name string) lager.Logger
- func PrettyPrintOrErr(content interface{}) error
- func PrettyPrintOrExit(content interface{})
- func PropertyToEnv(propertyName string) string
- func PropertyToEnvUnprefixed(propertyName string) string
- func SetParameter(input json.RawMessage, key string, value interface{}) (json.RawMessage, error)
- func SingleLineErrorFormatter(es []error) string
- func SplitNewlineDelimitedList(paksText string) []string
- func UnmarshalObjectRemainder(data []byte, v interface{}) ([]byte, error)
- type StringSet
- func (set StringSet) Add(str ...string)
- func (set StringSet) Contains(other string) bool
- func (set StringSet) Equals(other StringSet) bool
- func (set StringSet) IsEmpty() bool
- func (set StringSet) Minus(other StringSet) StringSet
- func (set StringSet) String() string
- func (set StringSet) ToSlice() []string
Examples ¶
Constants ¶
const CustomUserAgent = "cf-gcp-service-broker " + Version
This custom user agent string is added to provision calls so that Google can track the aggregated use of this tool We can better advocate for devoting resources to supporting cloud foundry and this service broker if we can show good usage statistics for it, so if you feel the need to fork this repo, please leave this string in place!
const (
EnvironmentVarPrefix = "gsb"
)
const Version = "5.0.1"
Version sets the version for the whole GCP service broker software.
Variables ¶
var (
PropertyToEnvReplacer = strings.NewReplacer(".", "_", "-", "_")
)
Functions ¶
func CopyStringMap ¶
CopyStringMap makes a copy of the given map.
Example ¶
m := map[string]string{"a": "one"} copy := CopyStringMap(m) m["a"] = "two" fmt.Println(m["a"]) fmt.Println(copy["a"])
Output: two one
func ExtractDefaultLabels ¶
func ExtractDefaultLabels(instanceId string, details brokerapi.ProvisionDetails) map[string]string
ExtractDefaultLabels creates a map[string]string of labels that should be applied to a resource on creation if the resource supports labels. These include the organization, space, and instance id.
func GetAuthedConfig ¶
func GetDefaultProjectId ¶
GetDefaultProject gets the default project id for the service broker based on the JSON Service Account key.
Example ¶
serviceAccountJson := `{ "//": "Dummy account from https://github.com/GoogleCloudPlatform/google-cloud-java/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/ServiceOptionsTest.java", "private_key_id": "somekeyid", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+K2hSuFpAdrJI\nnCgcDz2M7t7bjdlsadsasad+fvRSW6TjNQZ3p5LLQY1kSZRqBqylRkzteMOyHgaR\n0Pmxh3ILCND5men43j3h4eDbrhQBuxfEMalkG92sL+PNQSETY2tnvXryOvmBRwa/\nQP/9dJfIkIDJ9Fw9N4Bhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\nknddadwkwewcVxHFhcZJO+XWf6ofLUXpRwiTZakGMn8EE1uVa2LgczOjwWHGi99MFjxSer5m9\n1tCa3/KEGKiS/YL71JvjwX3mb+cewlkcmweBKZHM2JPTk0ZednFSpVZMtycjkbLa\ndYOS8V85AgMBewECggEBAKksaldajfDZDV6nGqbFjMiizAKJolr/M3OQw16K6o3/\n0S31xIe3sSlgW0+UbYlF4U8KifhManD1apVSC3csafaspP4RZUHFhtBywLO9pR5c\nr6S5aLp+gPWFyIp1pfXbWGvc5VY/v9x7ya1VEa6rXvLsKupSeWAW4tMj3eo/64ge\nsdaceaLYw52KeBYiT6+vpsnYrEkAHO1fF/LavbLLOFJmFTMxmsNaG0tuiJHgjshB\n82DpMCbXG9YcCgI/DbzuIjsdj2JC1cascSP//3PmefWysucBQe7Jryb6NQtASmnv\nCdDw/0jmZTEjpe4S1lxfHplAhHFtdgYTvyYtaLZiVVkCgYEA8eVpof2rceecw/I6\n5ng1q3Hl2usdWV/4mZMvR0fOemacLLfocX6IYxT1zA1FFJlbXSRsJMf/Qq39mOR2\nSpW+hr4jCoHeRVYLgsbggtrevGmILAlNoqCMpGZ6vDmJpq6ECV9olliDvpPgWOP+\nmYPDreFBGxWvQrADNbRt2dmGsrsCgYEAyUHqB2wvJHFqdmeBsaacewzV8x9WgmeX\ngUIi9REwXlGDW0Mz50dxpxcKCAYn65+7TCnY5O/jmL0VRxU1J2mSWyWTo1C+17L0\n3fUqjxL1pkefwecxwecvC+gFFYdJ4CQ/MHHXU81Lwl1iWdFCd2UoGddYaOF+KNeM\nHC7cmqra+JsCgYEAlUNywzq8nUg7282E+uICfCB0LfwejuymR93CtsFgb7cRd6ak\nECR8FGfCpH8ruWJINllbQfcHVCX47ndLZwqv3oVFKh6pAS/vVI4dpOepP8++7y1u\ncoOvtreXCX6XqfrWDtKIvv0vjlHBhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\nkndj5uNl5SiuVxHFhcZJO+XWf6ofLUregtevZakGMn8EE1uVa2AY7eafmoU/nZPT\n00YB0TBATdCbn/nBSuKDESkhSg9s2GEKQZG5hBmL5uCMfo09z3SfxZIhJdlerreP\nJ7gSidI12N+EZxYd4xIJh/HFDgp7RRO87f+WJkofMQKBgGTnClK1VMaCRbJZPriw\nEfeFCoOX75MxKwXs6xgrw4W//AYGGUjDt83lD6AZP6tws7gJ2IwY/qP7+lyhjEqN\nHtfPZRGFkGZsdaksdlaksd323423d+15/UvrlRSFPNj1tWQmNKkXyRDW4IG1Oa2p\nrALStNBx5Y9t0/LQnFI4w3aG\n-----END PRIVATE KEY-----\n", "client_email": "someclientid@developer.gserviceaccount.com", "client_id": "someclientid.apps.googleusercontent.com", "type": "service_account", "project_id": "my-project-123" }` os.Setenv("ROOT_SERVICE_ACCOUNT_JSON", serviceAccountJson) defer os.Unsetenv("ROOT_SERVICE_ACCOUNT_JSON") projectId, err := GetDefaultProjectId() fmt.Printf("%s, %v\n", projectId, err)
Output: my-project-123, <nil>
func GetServiceAccountJson ¶
func GetServiceAccountJson() string
GetServiceAccountJson gets the raw JSON credentials of the Service Account the service broker acts as.
func Indent ¶
Indent indents every line of the given text with the given string.
Example ¶
weirdText := "First\n\tSecond" out := Indent(weirdText, " ") fmt.Println(out == " First\n \tSecond")
Output: true
func NewLogger ¶
NewLogger creates a new lager.Logger with the given name that has correct writing settings.
func PrettyPrintOrErr ¶
func PrettyPrintOrErr(content interface{}) error
PrettyPrintOrErr writes a JSON serialized version of the content to stdout. If a failure occurs during marshaling, the error is logged along with a formatted version of the object and the function will return the error.
func PrettyPrintOrExit ¶
func PrettyPrintOrExit(content interface{})
PrettyPrintOrExit writes a JSON serialized version of the content to stdout. If a failure occurs during marshaling, the error is logged along with a formatted version of the object and the program exits with a failure status.
func PropertyToEnv ¶
PropertyToEnv converts a Viper configuration property name into an environment variable prefixed with EnvironmentVarPrefix
Example ¶
env := PropertyToEnv("my.property.key-value") fmt.Println(env)
Output: GSB_MY_PROPERTY_KEY_VALUE
func PropertyToEnvUnprefixed ¶
PropertyToEnvUnprefixed converts a Viper configuration property name into an environment variable using PropertyToEnvReplacer
Example ¶
env := PropertyToEnvUnprefixed("my.property.key-value") fmt.Println(env)
Output: MY_PROPERTY_KEY_VALUE
func SetParameter ¶
func SetParameter(input json.RawMessage, key string, value interface{}) (json.RawMessage, error)
SetParameter sets a value on a JSON raw message and returns a modified version with the value set
Example ¶
// Creates an object if none is input out, err := SetParameter(nil, "foo", 42) fmt.Printf("%s, %v\n", string(out), err) // Replaces existing values out, err = SetParameter([]byte(`{"replace": "old"}`), "replace", "new") fmt.Printf("%s, %v\n", string(out), err)
Output: {"foo":42}, <nil> {"replace":"new"}, <nil>
func SingleLineErrorFormatter ¶
SingleLineErrorFormatter creates a single line error string from an array of errors.
func SplitNewlineDelimitedList ¶
SplitNewlineDelimitedList splits a list of newline delimited items and trims any leading or trailing whitespace from them.
func UnmarshalObjectRemainder ¶
UnmarshalObjectRemaidner unmarshals an object into v and returns the remaining key/value pairs as a JSON string by doing a set difference.
Example ¶
var obj struct { A string `json:"a_str"` B int } remainder, err := UnmarshalObjectRemainder([]byte(`{"a_str":"hello", "B": 33, "C": 123}`), &obj) fmt.Printf("%s, %v\n", string(remainder), err) remainder, err = UnmarshalObjectRemainder([]byte(`{"a_str":"hello", "B": 33}`), &obj) fmt.Printf("%s, %v\n", string(remainder), err)
Output: {"C":123}, <nil> {}, <nil>
Types ¶
type StringSet ¶
StringSet is a set data structure for strings
func NewStringSet ¶
NewStringSet creates a new string set with the given contents.
Example ¶
a := NewStringSet() a.Add("a") a.Add("b") b := NewStringSet("b", "a") fmt.Println(a.Equals(b))
Output: true
func NewStringSetFromStringMapKeys ¶
NewStringSet creates a new string set with the given contents.
Example ¶
m := map[string]string{ "a": "some a value", "b": "some b value", } set := NewStringSetFromStringMapKeys(m) fmt.Println(set)
Output: [a b]
func (StringSet) Add ¶
Add puts one or more elements into the set.
Example ¶
set := NewStringSet() set.Add("a") set.Add("b") fmt.Println(set) set.Add("a") fmt.Println(set)
Output: [a b] [a b]
func (StringSet) Contains ¶
Contains performs a set membership check.
Example ¶
a := NewStringSet("a", "b") fmt.Println(a.Contains("z")) fmt.Println(a.Contains("a"))
Output: false true
func (StringSet) Equals ¶
Equals compares the contents of the two sets and returns true if they are the same.
Example ¶
a := NewStringSet("a", "b") b := NewStringSet("a", "b", "c") fmt.Println(a.Equals(b)) a.Add("c") fmt.Println(a.Equals(b))
Output: false true
func (StringSet) IsEmpty ¶
IsEmpty determines if the set has zero elements.
Example ¶
a := NewStringSet() fmt.Println(a.IsEmpty()) a.Add("a") fmt.Println(a.IsEmpty())
Output: true false
func (StringSet) Minus ¶
Returns a copy of this set with every string in the other removed.
Example ¶
a := NewStringSet("a", "b") b := NewStringSet("b", "c") delta := a.Minus(b) fmt.Println(delta)
Output: [a]