12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package etcd
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "strings"
- )
- type Server struct {
- ID int64 `json:"id"`
- Type string `json:"type"`
- Hostname string `json:"hostname"`
- Metadata map[string]string `json:"metadata"`
- // Frontend bool `json:"frontend"`
- }
- type ServerManager interface {
- AddServer(*Server)
- DeleteServer(id string)
- GetServer() *Server
- }
- func (s *Server) getKey() string {
- return fmt.Sprintf("servers/%s/%d", s.Type, s.ID)
- }
- func (s *Server) AsJSONString() string {
- str, err := json.Marshal(s)
- if err != nil {
- //logger.Log.Errorf("error getting server as json: %s", err.Error())
- return ""
- }
- return string(str)
- }
- func ParseEtcdKey(key []byte) (string, string, error) {
- splittedServer := bytes.Split(key, []byte("/"))
- if len(splittedServer) != 3 {
- return "", "", fmt.Errorf("split etcd key error. %v", key)
- }
- svType := splittedServer[1]
- svID := splittedServer[2]
- return string(svType), string(svID), nil
- }
- func ParseEtcdServer(value []byte) (*Server, error) {
- var sv *Server
- err := json.Unmarshal(value, &sv)
- if err != nil {
- return nil, err
- }
- return sv, nil
- }
- func ParseEtcdParams(key []byte, value []byte) (map[string]string, error) {
- ik := string(key)
- v := string(value)
- nik := strings.TrimRight(ik, "/")
- n := strings.LastIndexByte(nik, '/')
- var nk string
- if n >= 0 {
- nk = nik[n+1:]
- } else {
- nk = nik
- }
- maps := make(map[string]string)
- maps[nk] = v
- return maps, nil
- // var ms map[string]string
- // err := json.Unmarshal(value, &ms)
- // if err != nil {
- // return nil, err
- // }
- // return ms, nil
- }
|