func (old *instanceStateV1) upgradeToV2() (*InstanceState, error) { if old == nil { return nil, nil } attributes, err := copystructure.Copy(old.Attributes) if err != nil { return nil, fmt.Errorf("Error upgrading InstanceState V1: %v", err) } ephemeral, err := old.Ephemeral.upgradeToV2() if err != nil { return nil, fmt.Errorf("Error upgrading InstanceState V1: %v", err) } meta, err := copystructure.Copy(old.Meta) if err != nil { return nil, fmt.Errorf("Error upgrading InstanceState V1: %v", err) } return &InstanceState{ ID: old.ID, Attributes: attributes.(map[string]string), Ephemeral: *ephemeral, Meta: meta.(map[string]string), }, nil }
func (b *Backend) LogRequest(auth *logical.Auth, req *logical.Request) error { if !b.logRaw { // Copy the structures cp, err := copystructure.Copy(auth) if err != nil { return err } auth = cp.(*logical.Auth) cp, err = copystructure.Copy(req) if err != nil { return err } req = cp.(*logical.Request) // Hash any sensitive information if err := audit.Hash(auth); err != nil { return err } if err := audit.Hash(req); err != nil { return err } } // Encode the entry as JSON var buf bytes.Buffer var format audit.FormatJSON if err := format.FormatRequest(&buf, auth, req); err != nil { return err } // Write out to syslog _, err := b.logger.Write(buf.Bytes()) return err }
func (b *Backend) LogRequest(auth *logical.Auth, req *logical.Request) error { if err := b.open(); err != nil { return err } if !b.LogRaw { // Copy the structures cp, err := copystructure.Copy(auth) if err != nil { return err } auth = cp.(*logical.Auth) cp, err = copystructure.Copy(req) if err != nil { return err } req = cp.(*logical.Request) // Hash any sensitive information if err := audit.Hash(auth); err != nil { return err } if err := audit.Hash(req); err != nil { return err } } var format audit.FormatJSON return format.FormatRequest(b.f, auth, req) }
func (b *Backend) LogResponse(auth *logical.Auth, req *logical.Request, resp *logical.Response, err error) error { if !b.logRaw { // Before we copy the structure we must nil out some data // otherwise we will cause reflection to panic and die if req.Connection != nil && req.Connection.ConnState != nil { origReq := req origState := req.Connection.ConnState req.Connection.ConnState = nil defer func() { origReq.Connection.ConnState = origState }() } // Copy the structure cp, err := copystructure.Copy(auth) if err != nil { return err } auth = cp.(*logical.Auth) cp, err = copystructure.Copy(req) if err != nil { return err } req = cp.(*logical.Request) cp, err = copystructure.Copy(resp) if err != nil { return err } resp = cp.(*logical.Response) // Hash any sensitive information if err := audit.Hash(auth); err != nil { return err } if err := audit.Hash(req); err != nil { return err } if err := audit.Hash(resp); err != nil { return err } } // Encode the entry as JSON var buf bytes.Buffer var format audit.FormatJSON if err := format.FormatResponse(&buf, auth, req, resp, err); err != nil { return err } // Write otu to syslog _, err = b.logger.Write(buf.Bytes()) return err }
func (b *Backend) LogResponse( auth *logical.Auth, req *logical.Request, resp *logical.Response, err error) error { if err := b.open(); err != nil { return err } if !b.logRaw { // Before we copy the structure we must nil out some data // otherwise we will cause reflection to panic and die if req.Connection != nil && req.Connection.ConnState != nil { origReq := req origState := req.Connection.ConnState req.Connection.ConnState = nil defer func() { origReq.Connection.ConnState = origState }() } // Copy the structure cp, err := copystructure.Copy(auth) if err != nil { return err } auth = cp.(*logical.Auth) cp, err = copystructure.Copy(req) if err != nil { return err } req = cp.(*logical.Request) cp, err = copystructure.Copy(resp) if err != nil { return err } resp = cp.(*logical.Response) // Hash any sensitive information if err := audit.Hash(b.salt, auth); err != nil { return err } if err := audit.Hash(b.salt, req); err != nil { return err } if err := audit.Hash(b.salt, resp); err != nil { return err } } var format audit.FormatJSON return format.FormatResponse(b.f, auth, req, resp, err) }
func (r Base) Apply(bndl goci.Bndl, spec gardener.DesiredContainerSpec) goci.Bndl { if spec.Privileged { copiedBndl, err := copystructure.Copy(r.PrivilegedBase) if err != nil { panic(err) } return copiedBndl.(goci.Bndl) } else { copiedBndl, err := copystructure.Copy(r.UnprivilegedBase) if err != nil { panic(err) } return copiedBndl.(goci.Bndl) } }
func (self Dictionary) Clone() Dictionary { newDict := Create() newDict.Init() for key, value := range self { if nil == key || nil == value { continue } newKey, _ := copystructure.Copy(key) newValue, _ := copystructure.Copy(value) newDict.SetObjectForKey(newValue, newKey) } return newDict }
func init() { copystructure.Copiers[reflect.TypeOf(Response{})] = func(v interface{}) (interface{}, error) { input := v.(Response) ret := Response{ Redirect: input.Redirect, } if input.Secret != nil { retSec, err := copystructure.Copy(input.Secret) if err != nil { return nil, fmt.Errorf("error copying Secret: %v", err) } ret.Secret = retSec.(*Secret) } if input.Auth != nil { retAuth, err := copystructure.Copy(input.Auth) if err != nil { return nil, fmt.Errorf("error copying Auth: %v", err) } ret.Auth = retAuth.(*Auth) } if input.Data != nil { retData, err := copystructure.Copy(&input.Data) if err != nil { return nil, fmt.Errorf("error copying Data: %v", err) } ret.Data = retData.(map[string]interface{}) } if input.Warnings() != nil { for _, warning := range input.Warnings() { ret.AddWarning(warning) } } if input.WrapInfo != nil { retWrapInfo, err := copystructure.Copy(input.WrapInfo) if err != nil { return nil, fmt.Errorf("error copying WrapInfo: %v", err) } ret.WrapInfo = retWrapInfo.(*WrapInfo) } return &ret, nil } }
func TestCopy_response(t *testing.T) { // Make a non-pointer one so that it can't be modified directly expected := logical.Response{ Data: map[string]interface{}{ "foo": "bar", }, WrapInfo: &logical.WrapInfo{ TTL: 60, Token: "foo", CreationTime: time.Now(), WrappedAccessor: "abcd1234", }, } arg := expected // Copy it dup, err := copystructure.Copy(&arg) if err != nil { t.Fatalf("err: %s", err) } // Check equality arg2 := dup.(*logical.Response) if !reflect.DeepEqual(*arg2, expected) { t.Fatalf("bad:\n\n%#v\n\n%#v", *arg2, expected) } }
func (old *resourceStateV1) upgradeToV2() (*ResourceState, error) { if old == nil { return nil, nil } dependencies, err := copystructure.Copy(old.Dependencies) if err != nil { return nil, fmt.Errorf("Error upgrading ResourceState V1: %v", err) } primary, err := old.Primary.upgradeToV2() if err != nil { return nil, fmt.Errorf("Error upgrading ResourceState V1: %v", err) } deposed := make([]*InstanceState, len(old.Deposed)) for i, v := range old.Deposed { upgraded, err := v.upgradeToV2() if err != nil { return nil, fmt.Errorf("Error upgrading ResourceState V1: %v", err) } deposed[i] = upgraded } if len(deposed) == 0 { deposed = nil } return &ResourceState{ Type: old.Type, Dependencies: dependencies.([]string), Primary: primary, Deposed: deposed, Provider: old.Provider, }, nil }
func (r *RawConfig) merge(r2 *RawConfig) *RawConfig { if r == nil && r2 == nil { return nil } if r == nil { r = &RawConfig{} } rawRaw, err := copystructure.Copy(r.Raw) if err != nil { panic(err) } raw := rawRaw.(map[string]interface{}) if r2 != nil { for k, v := range r2.Raw { raw[k] = v } } result, err := NewRawConfig(raw) if err != nil { panic(err) } return result }
func (c *Cluster) DeepCopy() *Cluster { nc, err := copystructure.Copy(c) if err != nil { panic(err) } return nc.(*Cluster) }
func (old *moduleStateV1) upgradeToV2() (*ModuleState, error) { if old == nil { return nil, nil } path, err := copystructure.Copy(old.Path) if err != nil { return nil, fmt.Errorf("Error upgrading ModuleState V1: %v", err) } // Outputs needs upgrading to use the new structure outputs := make(map[string]*OutputState) for key, output := range old.Outputs { outputs[key] = &OutputState{ Type: "string", Value: output, Sensitive: false, } } if len(outputs) == 0 { outputs = nil } resources := make(map[string]*ResourceState) for key, oldResource := range old.Resources { upgraded, err := oldResource.upgradeToV2() if err != nil { return nil, fmt.Errorf("Error upgrading ModuleState V1: %v", err) } resources[key] = upgraded } if len(resources) == 0 { resources = nil } dependencies, err := copystructure.Copy(old.Dependencies) if err != nil { return nil, fmt.Errorf("Error upgrading ModuleState V1: %v", err) } return &ModuleState{ Path: path.([]string), Outputs: outputs, Resources: resources, Dependencies: dependencies.([]string), }, nil }
func (r *ResourceState) deepcopy() *ResourceState { copy, err := copystructure.Copy(r) if err != nil { panic(err) } return copy.(*ResourceState) }
func (self Object) Clone() Object { newObject := Create() if nil != self.Value { newObject.Value, _ = copystructure.Copy(self.Value) } return newObject }
// DeepCopy performs a deep copy of the state structure and returns // a new structure. func (s *State) DeepCopy() *State { copy, err := copystructure.Copy(s) if err != nil { panic(err) } return copy.(*State) }
func (e *EphemeralState) DeepCopy() *EphemeralState { copy, err := copystructure.Copy(e) if err != nil { panic(err) } return copy.(*EphemeralState) }
func (i *InstanceState) DeepCopy() *InstanceState { copy, err := copystructure.Copy(i) if err != nil { panic(err) } return copy.(*InstanceState) }
// Compile validates a prepared query template and returns an opaque compiled // object that can be used later to render the template. func Compile(query *structs.PreparedQuery) (*CompiledTemplate, error) { // Make sure it's a type we understand. if query.Template.Type != structs.QueryTemplateTypeNamePrefixMatch { return nil, fmt.Errorf("Bad Template.Type '%s'", query.Template.Type) } // Start compile. ct := &CompiledTemplate{ trees: make(map[string]ast.Node), } // Make a copy of the query to use as the basis for rendering later. dup, err := copystructure.Copy(query) if err != nil { return nil, err } var ok bool ct.query, ok = dup.(*structs.PreparedQuery) if !ok { return nil, fmt.Errorf("Failed to copy query") } // Walk over all the string fields in the Service sub-structure and // parse them as HIL. parse := func(path string, v reflect.Value) error { tree, err := hil.Parse(v.String()) if err != nil { return fmt.Errorf("Bad format '%s' in Service%s: %s", v.String(), path, err) } ct.trees[path] = tree return nil } if err := walk(&ct.query.Service, parse); err != nil { return nil, err } // If they supplied a regexp then compile it. if ct.query.Template.Regexp != "" { var err error ct.re, err = regexp.Compile(ct.query.Template.Regexp) if err != nil { return nil, fmt.Errorf("Bad Regexp: %s", err) } } // Finally do a test render with the supplied name prefix. This will // help catch errors before run time, and this is the most minimal // prefix it will be expected to run with. The results might not make // sense and create a valid service to lookup, but it should render // without any errors. if _, err = ct.Render(ct.query.Name); err != nil { return nil, err } return ct, nil }
func (old *ephemeralStateV1) upgradeToV2() (*EphemeralState, error) { connInfo, err := copystructure.Copy(old.ConnInfo) if err != nil { return nil, fmt.Errorf("Error upgrading EphemeralState V1: %v", err) } return &EphemeralState{ ConnInfo: connInfo.(map[string]string), }, nil }
func (c *ClusterData) DeepCopy() *ClusterData { nc, err := copystructure.Copy(c) if err != nil { panic(err) } if !reflect.DeepEqual(c, nc) { panic("not equal") } return nc.(*ClusterData) }
func (d *Decoder) decode(ch chan<- interface{}, pairs consul.KVPairs) error { raw := make(map[string]interface{}) for _, p := range pairs { // Trim the prefix off our key first key := strings.TrimPrefix(p.Key, d.Prefix) // Determine what map we're writing the value to. We split by '/' // to determine any sub-maps that need to be created. m := raw children := strings.Split(key, "/") if len(children) > 0 { key = children[len(children)-1] children = children[:len(children)-1] for _, child := range children { if m[child] == nil { m[child] = make(map[string]interface{}) } subm, ok := m[child].(map[string]interface{}) if !ok { return fmt.Errorf("child is both a data item and dir: %s", child) } m = subm } } m[key] = string(p.Value) } // First copy our initial value target, err := copystructure.Copy(d.Target) if err != nil { return err } // Now decode into it decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ Metadata: nil, Result: target, WeaklyTypedInput: true, TagName: "consul", }) if err != nil { return err } if err := decoder.Decode(raw); err != nil { return err } // Send it ch <- target return nil }
// Clone clones the reader to enable parallel downloads of ranges func (r *HttpReadSeeker) Clone() (*HttpReadSeeker, error) { req, err := copystructure.Copy(r.req) if err != nil { return nil, err } return &HttpReadSeeker{ req: req.(*http.Request), res: r.res, r: nil, canSeek: r.canSeek, c: r.c, }, nil }
// HashStructure takes an interface and hashes all the values within // the structure. Only _values_ are hashed: keys of objects are not. // // For the HashCallback, see the built-in HashCallbacks below. func HashStructure(s interface{}, cb HashCallback) (interface{}, error) { s, err := copystructure.Copy(s) if err != nil { return nil, err } walker := &hashWalker{Callback: cb} if err := reflectwalk.Walk(s, walker); err != nil { return nil, err } return s, nil }
func (p *PostgresState) DeepCopy() *PostgresState { if p == nil { return nil } np, err := copystructure.Copy(p) if err != nil { panic(err) } if !reflect.DeepEqual(p, np) { panic("not equal") } return np.(*PostgresState) }
func (k *KeeperInfo) DeepCopy() *KeeperInfo { if k == nil { return nil } nk, err := copystructure.Copy(k) if err != nil { panic(err) } if !reflect.DeepEqual(k, nk) { panic("not equal") } return nk.(*KeeperInfo) }
func (k KeeperInfoHistories) DeepCopy() KeeperInfoHistories { if k == nil { return nil } nk, err := copystructure.Copy(k) if err != nil { panic(err) } if !reflect.DeepEqual(k, nk) { panic("not equal") } return nk.(KeeperInfoHistories) }
func (e *StatementEmitter) OnEvent(event Event) (Flow, error) { if !e.Statement.Expression.Matches(event) { return nil, nil } dup, err := copystructure.Copy(&e.Statement) if err != nil { return nil, err } return &StatementFlow{ Statement: dup.(*Statement), }, nil }
func (k KeeperInfoHistories) DeepCopy() KeeperInfoHistories { if k == nil { return nil } nk, err := copystructure.Copy(k) if err != nil { panic(err) } log.Debug("", zap.String("k", spew.Sdump(k)), zap.String("nk", spew.Sdump(nk))) if !reflect.DeepEqual(k, nk) { panic("not equal") } return nk.(KeeperInfoHistories) }
func (this *Array) Clone() Array { newArray := Create() newArray.Init() for i := 0; i < this.Len(); i++ { object := this.GetObjectAtIndex(i) if nil != object { newObject, _ := copystructure.Copy(object) newArray.AddObject(newObject) } } return newArray }