ClusterStatus returns status information about this Seesaw Cluster.
(ctx *ipc.Context, reply *seesaw.ClusterStatus)
| 214 | |
| 215 | // ClusterStatus returns status information about this Seesaw Cluster. |
| 216 | func (s *SeesawEngine) ClusterStatus(ctx *ipc.Context, reply *seesaw.ClusterStatus) error { |
| 217 | s.trace("ClusterStatus", ctx) |
| 218 | if ctx == nil { |
| 219 | return errContext |
| 220 | } |
| 221 | |
| 222 | if !ctx.CanRead() { |
| 223 | return errAccess |
| 224 | } |
| 225 | |
| 226 | s.engine.clusterLock.RLock() |
| 227 | cluster := s.engine.cluster |
| 228 | s.engine.clusterLock.RUnlock() |
| 229 | |
| 230 | if cluster == nil { |
| 231 | return errors.New("no cluster configuration loaded") |
| 232 | } |
| 233 | |
| 234 | reply.Version = seesaw.SeesawVersion |
| 235 | reply.Site = cluster.Site |
| 236 | reply.Nodes = make([]*seesaw.Node, 0, len(cluster.Nodes)) |
| 237 | for _, node := range cluster.Nodes { |
| 238 | reply.Nodes = append(reply.Nodes, node.Clone()) |
| 239 | } |
| 240 | return nil |
| 241 | } |
| 242 | |
| 243 | // ConfigStatus returns status information about this Seesaw's current configuration. |
| 244 | func (s *SeesawEngine) ConfigStatus(ctx *ipc.Context, reply *seesaw.ConfigStatus) error { |