File: maintenance.proto

package info (click to toggle)
golang-github-mesos-mesos-go 0.0.6%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 11,724 kB
  • sloc: makefile: 163
file content (102 lines) | stat: -rw-r--r-- 3,954 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

package mesos.maintenance;

import "github.com/mesos/mesos-go/api/v1/lib/mesos.proto";
import "github.com/mesos/mesos-go/api/v1/lib/allocator/allocator.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option go_package = "maintenance";
option (gogoproto.benchgen_all) = true;
option (gogoproto.enum_stringer_all) = true;
option (gogoproto.equal_all) = true;
option (gogoproto.goproto_enum_prefix_all) = false;
option (gogoproto.goproto_enum_stringer_all) = false;
option (gogoproto.goproto_stringer_all) = false;
option (gogoproto.goproto_unrecognized_all) = false;
option (gogoproto.gostring_all) = true;
option (gogoproto.marshaler_all) = true;
option (gogoproto.populate_all) = true;
option (gogoproto.protosizer_all) = true;
option (gogoproto.stringer_all) =  true;
option (gogoproto.testgen_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.verbose_equal_all) = true;

// This is an illustration of a maintenance `Schedule`:
//
//                                              This is a `Window`.
// Machine ^                                           |
//     ... |                                           v
//      12 |                                  +----------------+
//      11 |                                  |                |
//      10 |                                  +----------------+
//       9 |                       +----------------+
//       8 |                       |                |
//       7 |                       +----------------+
//       6 |           +----------------+
//       5 |           |                |
//       4 |           +----------------+
//       3 |   +-----------+
//       2 |   |           |
//       1 |   +-----------+
//         |
//         +-----------------------------------------------------~~~~->
//                          Downtime for maintenance


/**
 * A set of machines scheduled to go into maintenance
 * in the same `unavailability`.
 */
message Window {
  // Machines affected by this maintenance window.
  repeated MachineID machine_ids = 1 [(gogoproto.nullable) = false, (gogoproto.customname) = "MachineIDs"];

  // Interval during which this set of machines is expected to be down.
  required Unavailability unavailability = 2 [(gogoproto.nullable) = false];
}


/**
 * A list of maintenance windows.
 * For example, this may represent a rolling restart of agents.
 */
message Schedule {
  repeated Window windows = 1 [(gogoproto.nullable) = false];
}


/**
 * Represents the maintenance status of each machine in the cluster.
 * The lists correspond to the `MachineInfo.Mode` enumeration.
 */
message ClusterStatus {
  message DrainingMachine {
    required MachineID id = 1 [(gogoproto.nullable) = false, (gogoproto.customname) = "ID"];

    // A list of the most recent responses to inverse offers from frameworks
    // running on this draining machine.
    repeated allocator.InverseOfferStatus statuses = 2 [(gogoproto.nullable) = false];
  }

  repeated DrainingMachine draining_machines = 1 [(gogoproto.nullable) = false];
  repeated MachineID down_machines = 2 [(gogoproto.nullable) = false];
}