forked from gardener-attic/gardener-extensions
/
types_infrastructure.go
133 lines (114 loc) · 4.37 KB
/
types_infrastructure.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
//
// 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 (
gardencorev1alpha1 "github.com/gardener/gardener/pkg/apis/core/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InfrastructureConfig infrastructure configuration resource
type InfrastructureConfig struct {
metav1.TypeMeta `json:",inline"`
// ResourceGroup is azure resource group
// +optional
ResourceGroup *ResourceGroup `json:"resourceGroup,omitempty"`
// Networks is the network configuration (VNet, subnets, etc.)
Networks NetworkConfig `json:"networks"`
}
// ResourceGroup is azure resource group
type ResourceGroup struct {
// Name is the name of the resource group
Name string `json:"name"`
}
// NetworkConfig holds information about the Kubernetes and infrastructure networks.
type NetworkConfig struct {
// VNet indicates whether to use an existing VNet or create a new one.
VNet VNet `json:"vnet"`
// Workers is the worker subnet range to create (used for the VMs).
Workers gardencorev1alpha1.CIDR `json:"workers"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// InfrastructureStatus contains information about created infrastructure resources.
type InfrastructureStatus struct {
metav1.TypeMeta `json:",inline"`
// Networks is the status of the networks of the infrastructure.
Networks NetworkStatus `json:"networks"`
// ResourceGroup is azure resource group
ResourceGroup ResourceGroup `json:"resourceGroup"`
// AvailabilitySets is a list of created availability sets
AvailabilitySets []AvailabilitySet `json:"availabilitySets"`
// AvailabilitySets is a list of created route tables
RouteTables []RouteTable `json:"routeTables"`
// SecurityGroups is a list of created security groups
SecurityGroups []SecurityGroup `json:"securityGroups"`
}
// NetworkStatus is the current status of the infrastructure networks.
type NetworkStatus struct {
// VNetStatus states the name of the infrastructure VNet.
VNet VNetStatus `json:"vnet"`
// Subnets are the subnets that have been created.
Subnets []Subnet `json:"subnets"`
}
// Purpose is a purpose of a subnet.
type Purpose string
const (
// PurposeNodes is a Purpose for nodes.
PurposeNodes Purpose = "nodes"
// PurposeInternal is a Purpose for internal use.
PurposeInternal Purpose = "internal"
)
// Subnet is a subnet that was created.
type Subnet struct {
// Name is the name of the subnet.
Name string `json:"name"`
// Purpose is the purpose for which the subnet was created.
Purpose Purpose `json:"purpose"`
}
// AvailabilitySet contains information about the azure availability set
type AvailabilitySet struct {
// Purpose is the purpose of the availability set
Purpose Purpose `json:"purpose"`
// ID is the id of the availability set
ID string `json:"id"`
// Name is the name of the availability set
Name string `json:"name"`
}
// RouteTable is the azure route table
type RouteTable struct {
// Purpose is the purpose of the route table
Purpose Purpose `json:"purpose"`
// Name is the name of the route table
Name string `json:"name"`
}
// SecurityGroup contains information about the security group
type SecurityGroup struct {
// Purpose is the purpose of the security group
Purpose Purpose `json:"purpose"`
// Name is the name of the security group
Name string `json:"name"`
}
// VNet contains information about the VNet and some related resources.
type VNet struct {
// Name is the VNet name.
// +optional
Name *string `json:"name,omitempty"`
// CIDR is the VNet CIDR
// +optional
CIDR *gardencorev1alpha1.CIDR `json:"cidr,omitempty"`
}
// VNetStatus contains the VNet name.
type VNetStatus struct {
// Name is the VNet name.
Name string `json:"name"`
}