func ReactivateAgent(a mesos.AgentID) *master.Call {
	return &master.Call{
		Type: master.Call_REACTIVATE_AGENT,
		ReactivateAgent: &master.Call_ReactivateAgent{
			AgentID: a,
		},
	}
}
ReactivateAgent turns on offers for a specific agent, which was previously drained or
deactivated.
EXPERIMENTAL.
package calls
import (
	"time"
	"github.com/mesos/mesos-go/api/v1/lib"
	"github.com/mesos/mesos-go/api/v1/lib/maintenance"
	"github.com/mesos/mesos-go/api/v1/lib/master"
	"github.com/mesos/mesos-go/api/v1/lib/quota"
)
func GetHealth() *master.Call {
	return &master.Call{
		Type: master.Call_GET_HEALTH,
	}
}
func GetFlags() *master.Call {
	return &master.Call{
		Type: master.Call_GET_FLAGS,
	}
}
func GetVersion() *master.Call {
	return &master.Call{
		Type: master.Call_GET_VERSION,
	}
}
func GetMetrics(d *time.Duration) (call *master.Call) {
	call = &master.Call{
		Type:       master.Call_GET_METRICS,
		GetMetrics: &master.Call_GetMetrics{},
	}
	if d != nil {
		call.GetMetrics.Timeout = &mesos.DurationInfo{
			Nanoseconds: d.Nanoseconds(),
		}
	}
	return
}
func GetLoggingLevel() *master.Call {
	return &master.Call{
		Type: master.Call_GET_LOGGING_LEVEL,
	}
}
func SetLoggingLevel(level uint32, d time.Duration) *master.Call {
	return &master.Call{
		Type: master.Call_SET_LOGGING_LEVEL,
		SetLoggingLevel: &master.Call_SetLoggingLevel{
			Level: level,
			Duration: mesos.DurationInfo{
				Nanoseconds: d.Nanoseconds(),
			},
		},
	}
}
func ListFiles(path string) *master.Call {
	return &master.Call{
		Type: master.Call_LIST_FILES,
		ListFiles: &master.Call_ListFiles{
			Path: path,
		},
	}
}
func ReadFile(path string, offset uint64) *master.Call {
	return &master.Call{
		Type: master.Call_READ_FILE,
		ReadFile: &master.Call_ReadFile{
			Path:   path,
			Offset: offset,
		},
	}
}
func ReadFileWithLength(path string, offset, length uint64) *master.Call {
	call := ReadFile(path, offset)
	call.ReadFile.Length = &length
	return call
}
func GetState() *master.Call {
	return &master.Call{
		Type: master.Call_GET_STATE,
	}
}
func GetAgents() *master.Call {
	return &master.Call{
		Type: master.Call_GET_AGENTS,
	}
}
func GetFrameworks() *master.Call {
	return &master.Call{
		Type: master.Call_GET_FRAMEWORKS,
	}
}
func GetExecutors() *master.Call {
	return &master.Call{
		Type: master.Call_GET_EXECUTORS,
	}
}
func GetOperations() *master.Call {
	return &master.Call{
		Type: master.Call_GET_OPERATIONS,
	}
}
func GetTasks() *master.Call {
	return &master.Call{
		Type: master.Call_GET_TASKS,
	}
}
func GetRoles() *master.Call {
	return &master.Call{
		Type: master.Call_GET_ROLES,
	}
}
func GetWeights() *master.Call {
	return &master.Call{
		Type: master.Call_GET_WEIGHTS,
	}
}
func UpdateWeights(weights ...mesos.WeightInfo) *master.Call {
	return &master.Call{
		Type: master.Call_UPDATE_WEIGHTS,
		UpdateWeights: &master.Call_UpdateWeights{
			WeightInfos: weights,
		},
	}
}
func GetMaster() *master.Call {
	return &master.Call{
		Type: master.Call_GET_MASTER,
	}
}
func Subscribe() *master.Call {
	return &master.Call{
		Type: master.Call_SUBSCRIBE,
	}
}
func ReserveResources(a mesos.AgentID, r ...mesos.Resource) *master.Call {
	return &master.Call{
		Type: master.Call_RESERVE_RESOURCES,
		ReserveResources: &master.Call_ReserveResources{
			AgentID:   a,
			Resources: r,
		},
	}
}
func UnreserveResources(a mesos.AgentID, r ...mesos.Resource) *master.Call {
	return &master.Call{
		Type: master.Call_UNRESERVE_RESOURCES,
		UnreserveResources: &master.Call_UnreserveResources{
			AgentID:   a,
			Resources: r,
		},
	}
}
func CreateVolumes(a mesos.AgentID, v ...mesos.Resource) *master.Call {
	return &master.Call{
		Type: master.Call_CREATE_VOLUMES,
		CreateVolumes: &master.Call_CreateVolumes{
			AgentID: a,
			Volumes: v,
		},
	}
}
func DestroyVolumes(a mesos.AgentID, v ...mesos.Resource) *master.Call {
	return &master.Call{
		Type: master.Call_DESTROY_VOLUMES,
		DestroyVolumes: &master.Call_DestroyVolumes{
			AgentID: a,
			Volumes: v,
		},
	}
}
func GrowVolume(a *mesos.AgentID, volume, addition mesos.Resource) *master.Call {
	return &master.Call{
		Type: master.Call_GROW_VOLUME,
		GrowVolume: &master.Call_GrowVolume{
			AgentID:  a,
			Volume:   volume,
			Addition: addition,
		},
	}
}
func ShrinkVolume(a *mesos.AgentID, volume mesos.Resource, subtract mesos.Value_Scalar) *master.Call {
	return &master.Call{
		Type: master.Call_SHRINK_VOLUME,
		ShrinkVolume: &master.Call_ShrinkVolume{
			AgentID:  a,
			Volume:   volume,
			Subtract: subtract,
		},
	}
}
func GetMaintenanceStatus() *master.Call {
	return &master.Call{
		Type: master.Call_GET_MAINTENANCE_STATUS,
	}
}
func GetMaintenanceSchedule() *master.Call {
	return &master.Call{
		Type: master.Call_GET_MAINTENANCE_SCHEDULE,
	}
}
func UpdateMaintenanceSchedule(s maintenance.Schedule) *master.Call {
	return &master.Call{
		Type: master.Call_UPDATE_MAINTENANCE_SCHEDULE,
		UpdateMaintenanceSchedule: &master.Call_UpdateMaintenanceSchedule{
			Schedule: s,
		},
	}
}
func StartMaintenance(m ...mesos.MachineID) *master.Call {
	return &master.Call{
		Type: master.Call_START_MAINTENANCE,
		StartMaintenance: &master.Call_StartMaintenance{
			Machines: m,
		},
	}
}
func StopMaintenance(m ...mesos.MachineID) *master.Call {
	return &master.Call{
		Type: master.Call_STOP_MAINTENANCE,
		StopMaintenance: &master.Call_StopMaintenance{
			Machines: m,
		},
	}
}
func GetQuota() *master.Call {
	return &master.Call{
		Type: master.Call_GET_QUOTA,
	}
}
func SetQuota(qr quota.QuotaRequest) *master.Call {
	return &master.Call{
		Type: master.Call_SET_QUOTA,
		SetQuota: &master.Call_SetQuota{
			QuotaRequest: qr,
		},
	}
}
func RemoveQuota(role string) *master.Call {
	return &master.Call{
		Type: master.Call_REMOVE_QUOTA,
		RemoveQuota: &master.Call_RemoveQuota{
			Role: role,
		},
	}
}
func MarkAgentGone(id mesos.AgentID) *master.Call {
	return &master.Call{
		Type: master.Call_MARK_AGENT_GONE,
		MarkAgentGone: &master.Call_MarkAgentGone{
			AgentID: id,
		},
	}
}
func Teardown(id mesos.FrameworkID) *master.Call {
	return &master.Call{
		Type: master.Call_TEARDOWN,
		Teardown: &master.Call_Teardown{
			FrameworkID: id,
		},
	}
}
func DrainAgent(a mesos.AgentID, options ...func(*master.Call_DrainAgent)) *master.Call {
	c := &master.Call{
		Type: master.Call_DRAIN_AGENT,
		DrainAgent: &master.Call_DrainAgent{
			AgentID: a,
		},
	}
	for _, f := range options {
		if f != nil {
			f(c.DrainAgent)
		}
	}
	return c
}
func DeactivateAgent(a mesos.AgentID) *master.Call {
	return &master.Call{
		Type: master.Call_DEACTIVATE_AGENT,
		DeactivateAgent: &master.Call_DeactivateAgent{
			AgentID: a,
		},
	}
}