github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/api/types/swarm/node.go (about)

     1  package swarm
     2  
     3  // Node represents a node.
     4  type Node struct {
     5  	ID string
     6  	Meta
     7  	// Spec defines the desired state of the node as specified by the user.
     8  	// The system will honor this and will *never* modify it.
     9  	Spec NodeSpec `json:",omitempty"`
    10  	// Description encapsulates the properties of the Node as reported by the
    11  	// agent.
    12  	Description NodeDescription `json:",omitempty"`
    13  	// Status provides the current status of the node, as seen by the manager.
    14  	Status NodeStatus `json:",omitempty"`
    15  	// ManagerStatus provides the current status of the node's manager
    16  	// component, if the node is a manager.
    17  	ManagerStatus *ManagerStatus `json:",omitempty"`
    18  }
    19  
    20  // NodeSpec represents the spec of a node.
    21  type NodeSpec struct {
    22  	Annotations
    23  	Role         NodeRole         `json:",omitempty"`
    24  	Availability NodeAvailability `json:",omitempty"`
    25  }
    26  
    27  // NodeRole represents the role of a node.
    28  type NodeRole string
    29  
    30  const (
    31  	// NodeRoleWorker WORKER
    32  	NodeRoleWorker NodeRole = "worker"
    33  	// NodeRoleManager MANAGER
    34  	NodeRoleManager NodeRole = "manager"
    35  )
    36  
    37  // NodeAvailability represents the availability of a node.
    38  type NodeAvailability string
    39  
    40  const (
    41  	// NodeAvailabilityActive ACTIVE
    42  	NodeAvailabilityActive NodeAvailability = "active"
    43  	// NodeAvailabilityPause PAUSE
    44  	NodeAvailabilityPause NodeAvailability = "pause"
    45  	// NodeAvailabilityDrain DRAIN
    46  	NodeAvailabilityDrain NodeAvailability = "drain"
    47  )
    48  
    49  // NodeDescription represents the description of a node.
    50  type NodeDescription struct {
    51  	Hostname  string            `json:",omitempty"`
    52  	Platform  Platform          `json:",omitempty"`
    53  	Resources Resources         `json:",omitempty"`
    54  	Engine    EngineDescription `json:",omitempty"`
    55  }
    56  
    57  // Platform represents the platform (Arch/OS).
    58  type Platform struct {
    59  	Architecture string `json:",omitempty"`
    60  	OS           string `json:",omitempty"`
    61  }
    62  
    63  // EngineDescription represents the description of an engine.
    64  type EngineDescription struct {
    65  	EngineVersion string              `json:",omitempty"`
    66  	Labels        map[string]string   `json:",omitempty"`
    67  	Plugins       []PluginDescription `json:",omitempty"`
    68  }
    69  
    70  // PluginDescription represents the description of an engine plugin.
    71  type PluginDescription struct {
    72  	Type string `json:",omitempty"`
    73  	Name string `json:",omitempty"`
    74  }
    75  
    76  // NodeStatus represents the status of a node.
    77  type NodeStatus struct {
    78  	State   NodeState `json:",omitempty"`
    79  	Message string    `json:",omitempty"`
    80  	Addr    string    `json:",omitempty"`
    81  }
    82  
    83  // Reachability represents the reachability of a node.
    84  type Reachability string
    85  
    86  const (
    87  	// ReachabilityUnknown UNKNOWN
    88  	ReachabilityUnknown Reachability = "unknown"
    89  	// ReachabilityUnreachable UNREACHABLE
    90  	ReachabilityUnreachable Reachability = "unreachable"
    91  	// ReachabilityReachable REACHABLE
    92  	ReachabilityReachable Reachability = "reachable"
    93  )
    94  
    95  // ManagerStatus represents the status of a manager.
    96  type ManagerStatus struct {
    97  	Leader       bool         `json:",omitempty"`
    98  	Reachability Reachability `json:",omitempty"`
    99  	Addr         string       `json:",omitempty"`
   100  }
   101  
   102  // NodeState represents the state of a node.
   103  type NodeState string
   104  
   105  const (
   106  	// NodeStateUnknown UNKNOWN
   107  	NodeStateUnknown NodeState = "unknown"
   108  	// NodeStateDown DOWN
   109  	NodeStateDown NodeState = "down"
   110  	// NodeStateReady READY
   111  	NodeStateReady NodeState = "ready"
   112  	// NodeStateDisconnected DISCONNECTED
   113  	NodeStateDisconnected NodeState = "disconnected"
   114  )