-
Notifications
You must be signed in to change notification settings - Fork 24
/
models.go
112 lines (89 loc) · 2.54 KB
/
models.go
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
103
104
105
106
107
108
109
110
111
112
/*
Copyright 2016 Google Inc.
Licensed 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.
*/
// Package models provides models for data storage and transfer.
package models
import (
"time"
"github.com/google/splice/appengine/server"
"github.com/google/splice/cli/gce"
)
// Request Datastore Field Values
const (
RequestStatusAccepted = "Accepted"
RequestStatusProcessing = "Processing"
RequestStatusCompleted = "Completed"
RequestStatusFailed = "Failed"
RequestStatusReturned = "Returned"
)
// ClientRequest models the allowable data that a client (the CLI) can
// submit as part of a request to be joined.
type ClientRequest struct {
Hostname string
ClientID string
ClientCert []byte
// Unattended validation
GCEMetadata gce.Metadata
// Generators
GeneratorID string
GeneratorData []byte
}
// Request models a new request to join a machine to the domain. This includes all
// data the Splice App may need to track the lifecycle of a request.
type Request struct {
RequestID string
ClientID string
ClientCert []byte
Hostname string
AcceptTime time.Time
ClaimBy string
ClaimTime time.Time
Status string
CompletionTime time.Time
ResponseData []byte
// Unattended validation
GCEMetadata gce.Metadata
//
// Encryption
//
ResponseKey []byte
CipherNonce []byte
//
// Reuse
//
AttemptReuse bool
//
// Generators
//
// (Optional) GeneratorID identifies the hostname generator to be used by SpliceD.
GeneratorID string
// (Optional) GeneratorData allows for arbitrary add-on data to be encoded by the CLI
// for use by SpliceD. Its use will be generator-specific.
GeneratorData []byte
}
// StatusQuery models a request for the status of a join.
type StatusQuery struct {
RequestID string
ClientID string
GCEMetadata gce.Metadata
}
// Response models the response to a client request, returned by the App to the CLI.
type Response struct {
RequestID string
Status string
ErrorCode server.StatusCode
Hostname string
ResponseData []byte
// Encryption
ResponseKey []byte
CipherNonce []byte
}