123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package builders
- import (
- "time"
- "github.com/docker/docker/api/types/swarm"
- )
- // Node creates a node with default values.
- // Any number of node function builder can be pass to augment it.
- func Node(builders ...func(*swarm.Node)) *swarm.Node {
- t1 := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
- node := &swarm.Node{
- ID: "nodeID",
- Meta: swarm.Meta{
- CreatedAt: t1,
- },
- Description: swarm.NodeDescription{
- Hostname: "defaultNodeHostname",
- Platform: swarm.Platform{
- Architecture: "x86_64",
- OS: "linux",
- },
- Resources: swarm.Resources{
- NanoCPUs: 4,
- MemoryBytes: 20 * 1024 * 1024,
- },
- Engine: swarm.EngineDescription{
- EngineVersion: "1.13.0",
- Labels: map[string]string{
- "engine": "label",
- },
- Plugins: []swarm.PluginDescription{
- {
- Type: "Volume",
- Name: "local",
- },
- {
- Type: "Network",
- Name: "bridge",
- },
- {
- Type: "Network",
- Name: "overlay",
- },
- },
- },
- },
- Status: swarm.NodeStatus{
- State: swarm.NodeStateReady,
- Addr: "127.0.0.1",
- },
- Spec: swarm.NodeSpec{
- Annotations: swarm.Annotations{
- Name: "defaultNodeName",
- },
- Role: swarm.NodeRoleWorker,
- Availability: swarm.NodeAvailabilityActive,
- },
- }
- for _, builder := range builders {
- builder(node)
- }
- return node
- }
- // NodeID sets the node id
- func NodeID(id string) func(*swarm.Node) {
- return func(node *swarm.Node) {
- node.ID = id
- }
- }
- // NodeLabels sets the node labels
- func NodeLabels(labels map[string]string) func(*swarm.Node) {
- return func(node *swarm.Node) {
- node.Spec.Labels = labels
- }
- }
- // Hostname sets the node hostname
- func Hostname(hostname string) func(*swarm.Node) {
- return func(node *swarm.Node) {
- node.Description.Hostname = hostname
- }
- }
- // Leader sets the current node as a leader
- func Leader() func(*swarm.ManagerStatus) {
- return func(managerStatus *swarm.ManagerStatus) {
- managerStatus.Leader = true
- }
- }
- // Manager set the current node as a manager
- func Manager(managerStatusBuilders ...func(*swarm.ManagerStatus)) func(*swarm.Node) {
- return func(node *swarm.Node) {
- node.Spec.Role = swarm.NodeRoleManager
- node.ManagerStatus = ManagerStatus(managerStatusBuilders...)
- }
- }
- // ManagerStatus create a ManageStatus with default values.
- func ManagerStatus(managerStatusBuilders ...func(*swarm.ManagerStatus)) *swarm.ManagerStatus {
- managerStatus := &swarm.ManagerStatus{
- Reachability: swarm.ReachabilityReachable,
- Addr: "127.0.0.1",
- }
- for _, builder := range managerStatusBuilders {
- builder(managerStatus)
- }
- return managerStatus
- }
|