// RAINBOND, Application Management Platform // Copyright (C) 2014-2017 Goodrain Co., Ltd. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. For any non-GPL usage of Rainbond, // one or multiple Commercial Licenses authorized by Goodrain Co., Ltd. // must be obtained first. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . package watch import ( "fmt" "github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/mvcc/mvccpb" ) type event struct { key string value []byte prevValue []byte rev int64 isDeleted bool isCreated bool } // parseKV converts a KeyValue retrieved from an initial sync() listing to a synthetic isCreated event. func parseKV(kv *mvccpb.KeyValue) *event { return &event{ key: string(kv.Key), value: kv.Value, prevValue: nil, rev: kv.ModRevision, isDeleted: false, isCreated: true, } } func parseEvent(e *clientv3.Event) *event { ret := &event{ key: string(e.Kv.Key), value: e.Kv.Value, rev: e.Kv.ModRevision, isDeleted: e.Type == clientv3.EventTypeDelete, isCreated: e.IsCreate(), } if e.PrevKv != nil { ret.prevValue = e.PrevKv.Value } return ret } // Status is a return value for calls that don't return other objects. type Status struct { // Status of the operation. // One of: "Success" or "Failure". // +optional Status string `json:"status,omitempty"` // A human-readable description of the status of this operation. // +optional Message string `json:"message,omitempty"` // A machine-readable description of why this operation is in the // "Failure" status. If this value is empty there // is no information available. A Reason clarifies an HTTP status // code but does not override it. // +optional Reason string `json:"reason,omitempty"` // Extended data associated with the reason. Each reason may define its // own extended details. This field is optional and the data returned // is not guaranteed to conform to any schema except that defined by // the reason type. // +optional Details *string `json:"details,omitempty" ` // Suggested HTTP return code for this status, 0 if not set. // +optional Code int32 `json:"code,omitempty"` } func (s Status) Error() string { return fmt.Sprintf("(%d)Status:%s Message:%s Reason:%s", s.Code, s.Status, s.Message, s.Reason) }