/
githubissue_types.go
79 lines (63 loc) · 3 KB
/
githubissue_types.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
/*
Copyright 2021 Or Raz.
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 v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// GithubIssueSpec defines the desired state of GithubIssue
type GithubIssueSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
// Implementing defaulting/validating webhooks -> https://book.kubebuilder.io/cronjob-tutorial/webhook-implementation.html
// operator-sdk create webhook --group training --version v1alpha1 --kind GithubIssue --programmatic-validation
// How to add CRD validation? -> https://book.kubebuilder.io/reference/markers/crd-validation.html or https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html#validation
// +kubebuilder:validation:Pattern=`^https?:\/\/github.com+/[a-zA-Z0-9\_.-]+/[a-zA-Z0-9\_.-]`
// Represent the github repo's URL - e.g https://github.com/rgolangh/dotfiles
Repo string `json:"repo"`
// The title of the issue
Title string `json:"title"`
// The issue's description
Description string `json:"description"`
}
// GithubIssueStatus defines the observed state of GithubIssue
type GithubIssueStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
// Represents the state of the real github issue. Could be open/closed or other text taken from the github API response.
State string `json:"state"`
// timestamp of the last time the state of the github issue was updated.
LastUpdateTimestamp string `json:"lastUpdateTimestamp"`
// The issue's number - used as primary key for finding if this is a new githubIssue
Number int `json:"number,omitempty"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
// GithubIssue is the Schema for the githubissues API
type GithubIssue struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec GithubIssueSpec `json:"spec,omitempty"`
Status GithubIssueStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// GithubIssueList contains a list of GithubIssue
type GithubIssueList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []GithubIssue `json:"items"`
}
func init() {
SchemeBuilder.Register(&GithubIssue{}, &GithubIssueList{})
}