@@ -18,6 +18,7 @@ package cluster
1818
1919import (
2020 "github.com/pkg/errors"
21+ "k8s.io/klog"
2122 "sigs.k8s.io/cluster-api-provider-azure/pkg/cloud/azure"
2223 "sigs.k8s.io/cluster-api-provider-azure/pkg/cloud/azure/actuators"
2324 "sigs.k8s.io/cluster-api-provider-azure/pkg/cloud/azure/services/certificates"
@@ -62,206 +63,211 @@ func NewReconciler(scope *actuators.Scope) *Reconciler {
6263}
6364
6465// Reconcile reconciles all the services in pre determined order
65- func (s * Reconciler ) Reconcile () error {
66- actuators .CreateOrUpdateNetworkAPIServerIP (s .scope )
66+ func (r * Reconciler ) Reconcile () error {
67+ klog .V (2 ).Infof ("reconciling cluster %s" , r .scope .Cluster .Name )
68+ actuators .CreateOrUpdateNetworkAPIServerIP (r .scope )
6769
6870 // Store cert material in spec.
69- if err := s .certificatesSvc .CreateOrUpdate ( s .scope .Context , nil ); err != nil {
70- return errors .Wrapf (err , "failed to createorupdate certificates for cluster %s" , s .scope .Cluster .Name )
71+ if err := r .certificatesSvc .Reconcile ( r .scope .Context , nil ); err != nil {
72+ return errors .Wrapf (err , "failed to reconcile certificates for cluster %s" , r .scope .Cluster .Name )
7173 }
7274
73- if err := s .groupsSvc .CreateOrUpdate ( s .scope .Context , nil ); err != nil {
74- return errors .Wrapf (err , "failed to createorupdate resource group for cluster %s" , s .scope .Cluster .Name )
75+ if err := r .groupsSvc .Reconcile ( r .scope .Context , nil ); err != nil {
76+ return errors .Wrapf (err , "failed to reconcile resource group for cluster %s" , r .scope .Cluster .Name )
7577 }
7678
7779 vnetSpec := & virtualnetworks.Spec {
78- Name : azure .GenerateVnetName (s .scope .Cluster .Name ),
80+ Name : azure .GenerateVnetName (r .scope .Cluster .Name ),
7981 CIDR : azure .DefaultVnetCIDR ,
8082 }
81- if err := s .vnetSvc .CreateOrUpdate ( s .scope .Context , vnetSpec ); err != nil {
82- return errors .Wrapf (err , "failed to createorupdate virtual network for cluster %s" , s .scope .Cluster .Name )
83+ if err := r .vnetSvc .Reconcile ( r .scope .Context , vnetSpec ); err != nil {
84+ return errors .Wrapf (err , "failed to reconcile virtual network for cluster %s" , r .scope .Cluster .Name )
8385 }
84-
8586 sgSpec := & securitygroups.Spec {
86- Name : azure .GenerateControlPlaneSecurityGroupName (s .scope .Cluster .Name ),
87+ Name : azure .GenerateControlPlaneSecurityGroupName (r .scope .Cluster .Name ),
8788 IsControlPlane : true ,
8889 }
89- if err := s .securityGroupSvc .CreateOrUpdate ( s .scope .Context , sgSpec ); err != nil {
90- return errors .Wrapf (err , "failed to createorupdate control plane network security group for cluster %s" , s .scope .Cluster .Name )
90+ if err := r .securityGroupSvc .Reconcile ( r .scope .Context , sgSpec ); err != nil {
91+ return errors .Wrapf (err , "failed to reconcile control plane network security group for cluster %s" , r .scope .Cluster .Name )
9192 }
9293
9394 sgSpec = & securitygroups.Spec {
94- Name : azure .GenerateNodeSecurityGroupName (s .scope .Cluster .Name ),
95+ Name : azure .GenerateNodeSecurityGroupName (r .scope .Cluster .Name ),
9596 IsControlPlane : false ,
9697 }
97- if err := s .securityGroupSvc .CreateOrUpdate ( s .scope .Context , sgSpec ); err != nil {
98- return errors .Wrapf (err , "failed to createorupdate node network security group for cluster %s" , s .scope .Cluster .Name )
98+ if err := r .securityGroupSvc .Reconcile ( r .scope .Context , sgSpec ); err != nil {
99+ return errors .Wrapf (err , "failed to reconcile node network security group for cluster %s" , r .scope .Cluster .Name )
99100 }
100101
101102 rtSpec := & routetables.Spec {
102- Name : azure .GenerateNodeRouteTableName (s .scope .Cluster .Name ),
103+ Name : azure .GenerateNodeRouteTableName (r .scope .Cluster .Name ),
103104 }
104- if err := s .routeTableSvc .CreateOrUpdate ( s .scope .Context , rtSpec ); err != nil {
105- return errors .Wrapf (err , "failed to createorupdate node route table for cluster %s" , s .scope .Cluster .Name )
105+ if err := r .routeTableSvc .Reconcile ( r .scope .Context , rtSpec ); err != nil {
106+ return errors .Wrapf (err , "failed to reconcile node route table for cluster %s" , r .scope .Cluster .Name )
106107 }
107108
108109 subnetSpec := & subnets.Spec {
109- Name : azure .GenerateControlPlaneSubnetName (s .scope .Cluster .Name ),
110+ Name : azure .GenerateControlPlaneSubnetName (r .scope .Cluster .Name ),
110111 CIDR : azure .DefaultControlPlaneSubnetCIDR ,
111- VnetName : azure .GenerateVnetName (s .scope .Cluster .Name ),
112- SecurityGroupName : azure .GenerateControlPlaneSecurityGroupName (s .scope .Cluster .Name ),
112+ VnetName : azure .GenerateVnetName (r .scope .Cluster .Name ),
113+ SecurityGroupName : azure .GenerateControlPlaneSecurityGroupName (r .scope .Cluster .Name ),
113114 }
114- if err := s .subnetsSvc .CreateOrUpdate ( s .scope .Context , subnetSpec ); err != nil {
115- return errors .Wrapf (err , "failed to createorupdate control plane subnet for cluster %s" , s .scope .Cluster .Name )
115+ if err := r .subnetsSvc .Reconcile ( r .scope .Context , subnetSpec ); err != nil {
116+ return errors .Wrapf (err , "failed to reconcile control plane subnet for cluster %s" , r .scope .Cluster .Name )
116117 }
117118
118119 subnetSpec = & subnets.Spec {
119- Name : azure .GenerateNodeSubnetName (s .scope .Cluster .Name ),
120+ Name : azure .GenerateNodeSubnetName (r .scope .Cluster .Name ),
120121 CIDR : azure .DefaultNodeSubnetCIDR ,
121- VnetName : azure .GenerateVnetName (s .scope .Cluster .Name ),
122- SecurityGroupName : azure .GenerateNodeSecurityGroupName (s .scope .Cluster .Name ),
123- RouteTableName : azure .GenerateNodeRouteTableName (s .scope .Cluster .Name ),
122+ VnetName : azure .GenerateVnetName (r .scope .Cluster .Name ),
123+ SecurityGroupName : azure .GenerateNodeSecurityGroupName (r .scope .Cluster .Name ),
124+ RouteTableName : azure .GenerateNodeRouteTableName (r .scope .Cluster .Name ),
124125 }
125- if err := s .subnetsSvc .CreateOrUpdate ( s .scope .Context , subnetSpec ); err != nil {
126- return errors .Wrapf (err , "failed to createorupdate node subnet for cluster %s" , s .scope .Cluster .Name )
126+ if err := r .subnetsSvc .Reconcile ( r .scope .Context , subnetSpec ); err != nil {
127+ return errors .Wrapf (err , "failed to reconcile node subnet for cluster %s" , r .scope .Cluster .Name )
127128 }
128129
129130 internalLBSpec := & internalloadbalancers.Spec {
130- Name : azure .GenerateInternalLBName (s .scope .Cluster .Name ),
131- SubnetName : azure .GenerateControlPlaneSubnetName (s .scope .Cluster .Name ),
132- VnetName : azure .GenerateVnetName (s .scope .Cluster .Name ),
131+ Name : azure .GenerateInternalLBName (r .scope .Cluster .Name ),
132+ SubnetName : azure .GenerateControlPlaneSubnetName (r .scope .Cluster .Name ),
133+ VnetName : azure .GenerateVnetName (r .scope .Cluster .Name ),
133134 IPAddress : azure .DefaultInternalLBIPAddress ,
134135 }
135- if err := s .internalLBSvc .CreateOrUpdate ( s .scope .Context , internalLBSpec ); err != nil {
136- return errors .Wrapf (err , "failed to createorupdate control plane internal load balancer for cluster %s" , s .scope .Cluster .Name )
136+ if err := r .internalLBSvc .Reconcile ( r .scope .Context , internalLBSpec ); err != nil {
137+ return errors .Wrapf (err , "failed to reconcile control plane internal load balancer for cluster %s" , r .scope .Cluster .Name )
137138 }
138139
139140 publicIPSpec := & publicips.Spec {
140- Name : s .scope .Network ().APIServerIP .Name ,
141+ Name : r .scope .Network ().APIServerIP .Name ,
141142 }
142- if err := s .publicIPSvc .CreateOrUpdate ( s .scope .Context , publicIPSpec ); err != nil {
143- return errors .Wrapf (err , "failed to createorupdate control plane public ip for cluster %s" , s .scope .Cluster .Name )
143+ if err := r .publicIPSvc .Reconcile ( r .scope .Context , publicIPSpec ); err != nil {
144+ return errors .Wrapf (err , "failed to reconcile control plane public ip for cluster %s" , r .scope .Cluster .Name )
144145 }
145146
146147 publicLBSpec := & publicloadbalancers.Spec {
147- Name : azure .GeneratePublicLBName (s .scope .Cluster .Name ),
148- PublicIPName : s .scope .Network ().APIServerIP .Name ,
148+ Name : azure .GeneratePublicLBName (r .scope .Cluster .Name ),
149+ PublicIPName : r .scope .Network ().APIServerIP .Name ,
149150 }
150- if err := s .publicLBSvc .CreateOrUpdate ( s .scope .Context , publicLBSpec ); err != nil {
151- return errors .Wrapf (err , "failed to createorupdate control plane public load balancer for cluster %s" , s .scope .Cluster .Name )
151+ if err := r .publicLBSvc .Reconcile ( r .scope .Context , publicLBSpec ); err != nil {
152+ return errors .Wrapf (err , "failed to reconcile control plane public load balancer for cluster %s" , r .scope .Cluster .Name )
152153 }
153154
155+ klog .V (2 ).Infof ("successfully reconciled cluster %s" , r .scope .Cluster .Name )
154156 return nil
155157}
156158
157159// Delete reconciles all the services in pre determined order
158- func (s * Reconciler ) Delete () error {
159- if err := s .deleteLB (); err != nil {
160+ func (r * Reconciler ) Delete () error {
161+ if err := r .deleteLB (); err != nil {
160162 return errors .Wrap (err , "failed to delete load balancer" )
161163 }
162164
163- if err := s .deleteSubnets (); err != nil {
165+ if err := r .deleteSubnets (); err != nil {
164166 return errors .Wrap (err , "failed to delete subnets" )
165167 }
166168
167169 rtSpec := & routetables.Spec {
168- Name : azure .GenerateNodeRouteTableName (s .scope .Cluster .Name ),
170+ Name : azure .GenerateNodeRouteTableName (r .scope .Cluster .Name ),
169171 }
170- if err := s .routeTableSvc .Delete (s .scope .Context , rtSpec ); err != nil {
172+ if err := r .routeTableSvc .Delete (r .scope .Context , rtSpec ); err != nil {
171173 if ! azure .ResourceNotFound (err ) {
172- return errors .Wrapf (err , "failed to delete route table %s for cluster %s" , azure .GenerateNodeRouteTableName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
174+ return errors .Wrapf (err , "failed to delete route table %s for cluster %s" , azure .GenerateNodeRouteTableName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
173175 }
174176 }
175177
176- if err := s .deleteNSG (); err != nil {
178+ if err := r .deleteNSG (); err != nil {
177179 return errors .Wrap (err , "failed to delete network security group" )
178180 }
179181
180182 vnetSpec := & virtualnetworks.Spec {
181- Name : azure .GenerateVnetName (s .scope .Cluster .Name ),
183+ Name : azure .GenerateVnetName (r .scope .Cluster .Name ),
182184 }
183- if err := s .vnetSvc .Delete (s .scope .Context , vnetSpec ); err != nil {
185+ if err := r .vnetSvc .Delete (r .scope .Context , vnetSpec ); err != nil {
184186 if ! azure .ResourceNotFound (err ) {
185- return errors .Wrapf (err , "failed to delete virtual network %s for cluster %s" , azure .GenerateVnetName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
187+ return errors .Wrapf (err , "failed to delete virtual network %s for cluster %s" , azure .GenerateVnetName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
186188 }
187189 }
188190
189- if err := s .groupsSvc .Delete (s .scope .Context , nil ); err != nil {
191+ if err := r .groupsSvc .Delete (r .scope .Context , nil ); err != nil {
190192 if ! azure .ResourceNotFound (err ) {
191- return errors .Wrapf (err , "failed to delete resource group for cluster %s" , s .scope .Cluster .Name )
193+ return errors .Wrapf (err , "failed to delete resource group for cluster %s" , r .scope .Cluster .Name )
192194 }
193195 }
196+
194197 return nil
195198}
196199
197- func (s * Reconciler ) deleteLB () error {
200+ func (r * Reconciler ) deleteLB () error {
198201 publicLBSpec := & publicloadbalancers.Spec {
199- Name : azure .GeneratePublicLBName (s .scope .Cluster .Name ),
202+ Name : azure .GeneratePublicLBName (r .scope .Cluster .Name ),
200203 }
201- if err := s .publicLBSvc .Delete (s .scope .Context , publicLBSpec ); err != nil {
204+ if err := r .publicLBSvc .Delete (r .scope .Context , publicLBSpec ); err != nil {
202205 if ! azure .ResourceNotFound (err ) {
203- return errors .Wrapf (err , "failed to delete lb %s for cluster %s" , azure .GeneratePublicLBName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
206+ return errors .Wrapf (err , "failed to delete lb %s for cluster %s" , azure .GeneratePublicLBName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
204207 }
205208 }
206209 publicIPSpec := & publicips.Spec {
207- Name : s .scope .Network ().APIServerIP .Name ,
210+ Name : r .scope .Network ().APIServerIP .Name ,
208211 }
209- if err := s .publicIPSvc .Delete (s .scope .Context , publicIPSpec ); err != nil {
212+ if err := r .publicIPSvc .Delete (r .scope .Context , publicIPSpec ); err != nil {
210213 if ! azure .ResourceNotFound (err ) {
211- return errors .Wrapf (err , "failed to delete public ip %s for cluster %s" , s .scope .Network ().APIServerIP .Name , s .scope .Cluster .Name )
214+ return errors .Wrapf (err , "failed to delete public ip %s for cluster %s" , r .scope .Network ().APIServerIP .Name , r .scope .Cluster .Name )
212215 }
213216 }
214217
215218 internalLBSpec := & internalloadbalancers.Spec {
216- Name : azure .GenerateInternalLBName (s .scope .Cluster .Name ),
219+ Name : azure .GenerateInternalLBName (r .scope .Cluster .Name ),
217220 }
218- if err := s .internalLBSvc .Delete (s .scope .Context , internalLBSpec ); err != nil {
221+ if err := r .internalLBSvc .Delete (r .scope .Context , internalLBSpec ); err != nil {
219222 if ! azure .ResourceNotFound (err ) {
220- return errors .Wrapf (err , "failed to internal load balancer %s for cluster %s" , azure .GenerateInternalLBName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
223+ return errors .Wrapf (err , "failed to internal load balancer %s for cluster %s" , azure .GenerateInternalLBName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
221224 }
222225 }
226+
223227 return nil
224228}
225229
226- func (s * Reconciler ) deleteSubnets () error {
230+ func (r * Reconciler ) deleteSubnets () error {
227231 subnetSpec := & subnets.Spec {
228- Name : azure .GenerateNodeSubnetName (s .scope .Cluster .Name ),
229- VnetName : azure .GenerateVnetName (s .scope .Cluster .Name ),
232+ Name : azure .GenerateNodeSubnetName (r .scope .Cluster .Name ),
233+ VnetName : azure .GenerateVnetName (r .scope .Cluster .Name ),
230234 }
231- if err := s .subnetsSvc .Delete (s .scope .Context , subnetSpec ); err != nil {
235+ if err := r .subnetsSvc .Delete (r .scope .Context , subnetSpec ); err != nil {
232236 if ! azure .ResourceNotFound (err ) {
233- return errors .Wrapf (err , "failed to delete %s subnet for cluster %s" , azure .GenerateNodeSubnetName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
237+ return errors .Wrapf (err , "failed to delete %s subnet for cluster %s" , azure .GenerateNodeSubnetName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
234238 }
235239 }
236240
237241 subnetSpec = & subnets.Spec {
238- Name : azure .GenerateControlPlaneSubnetName (s .scope .Cluster .Name ),
239- VnetName : azure .GenerateVnetName (s .scope .Cluster .Name ),
242+ Name : azure .GenerateControlPlaneSubnetName (r .scope .Cluster .Name ),
243+ VnetName : azure .GenerateVnetName (r .scope .Cluster .Name ),
240244 }
241- if err := s .subnetsSvc .Delete (s .scope .Context , subnetSpec ); err != nil {
245+ if err := r .subnetsSvc .Delete (r .scope .Context , subnetSpec ); err != nil {
242246 if ! azure .ResourceNotFound (err ) {
243- return errors .Wrapf (err , "failed to delete %s subnet for cluster %s" , azure .GenerateControlPlaneSubnetName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
247+ return errors .Wrapf (err , "failed to delete %s subnet for cluster %s" , azure .GenerateControlPlaneSubnetName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
244248 }
245249 }
250+
246251 return nil
247252}
248253
249- func (s * Reconciler ) deleteNSG () error {
254+ func (r * Reconciler ) deleteNSG () error {
250255 sgSpec := & securitygroups.Spec {
251- Name : azure .GenerateNodeSecurityGroupName (s .scope .Cluster .Name ),
256+ Name : azure .GenerateNodeSecurityGroupName (r .scope .Cluster .Name ),
252257 }
253- if err := s .securityGroupSvc .Delete (s .scope .Context , sgSpec ); err != nil {
258+ if err := r .securityGroupSvc .Delete (r .scope .Context , sgSpec ); err != nil {
254259 if ! azure .ResourceNotFound (err ) {
255- return errors .Wrapf (err , "failed to delete security group %s for cluster %s" , azure .GenerateNodeSecurityGroupName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
260+ return errors .Wrapf (err , "failed to delete security group %s for cluster %s" , azure .GenerateNodeSecurityGroupName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
256261 }
257262 }
258263 sgSpec = & securitygroups.Spec {
259- Name : azure .GenerateControlPlaneSecurityGroupName (s .scope .Cluster .Name ),
264+ Name : azure .GenerateControlPlaneSecurityGroupName (r .scope .Cluster .Name ),
260265 }
261- if err := s .securityGroupSvc .Delete (s .scope .Context , sgSpec ); err != nil {
266+ if err := r .securityGroupSvc .Delete (r .scope .Context , sgSpec ); err != nil {
262267 if ! azure .ResourceNotFound (err ) {
263- return errors .Wrapf (err , "failed to delete security group %s for cluster %s" , azure .GenerateControlPlaneSecurityGroupName (s .scope .Cluster .Name ), s .scope .Cluster .Name )
268+ return errors .Wrapf (err , "failed to delete security group %s for cluster %s" , azure .GenerateControlPlaneSecurityGroupName (r .scope .Cluster .Name ), r .scope .Cluster .Name )
264269 }
265270 }
271+
266272 return nil
267273}
0 commit comments