Skip to content

Commit

Permalink
remove gateway restart during rp predeploy (#3071)
Browse files Browse the repository at this point in the history
  • Loading branch information
rajdeepc2792 authored Jul 31, 2023
1 parent aa61608 commit 058a214
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 76 deletions.
43 changes: 16 additions & 27 deletions pkg/deploy/predeploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,8 @@ import (
const (
// Rotate the secret on every deploy of the RP if the most recent
// secret is greater than 7 days old
rotateSecretAfter = time.Hour * 24 * 7
rpRestartScript = "systemctl restart aro-rp"
gatewayRestartScript = "systemctl restart aro-gateway"
rotateSecretAfter = time.Hour * 24 * 7
rpRestartScript = "systemctl restart aro-rp"
)

// PreDeploy deploys managed identity, NSGs and keyvaults, needed for main
Expand Down Expand Up @@ -401,11 +400,7 @@ func (d *deployer) configureServiceSecrets(ctx context.Context) error {
}

if isRotated {
err = d.restartOldScalesets(ctx, d.config.GatewayResourceGroupName)
if err != nil {
return err
}
err = d.restartOldScalesets(ctx, d.config.RPResourceGroupName)
err = d.restartOldScalesets(ctx)
if err != nil {
return err
}
Expand Down Expand Up @@ -490,14 +485,14 @@ func (d *deployer) ensureSecretKey(ctx context.Context, kv keyvault.Manager, sec
})
}

func (d *deployer) restartOldScalesets(ctx context.Context, resourceGroupName string) error {
scalesets, err := d.vmss.List(ctx, resourceGroupName)
func (d *deployer) restartOldScalesets(ctx context.Context) error {
scalesets, err := d.vmss.List(ctx, d.config.RPResourceGroupName)
if err != nil {
return err
}

for _, vmss := range scalesets {
err = d.restartOldScaleset(ctx, *vmss.Name, resourceGroupName)
err = d.restartOldScaleset(ctx, *vmss.Name)
if err != nil {
return err
}
Expand All @@ -506,35 +501,29 @@ func (d *deployer) restartOldScalesets(ctx context.Context, resourceGroupName st
return nil
}

func (d *deployer) restartOldScaleset(ctx context.Context, vmssName string, resourceGroupName string) error {
var restartScript string
switch {
case strings.HasPrefix(vmssName, gatewayVMSSPrefix):
restartScript = gatewayRestartScript
case strings.HasPrefix(vmssName, rpVMSSPrefix):
restartScript = rpRestartScript
default:
func (d *deployer) restartOldScaleset(ctx context.Context, vmssName string) error {
if !strings.HasPrefix(vmssName, rpVMSSPrefix) {
return &api.CloudError{
StatusCode: http.StatusBadRequest,
CloudErrorBody: &api.CloudErrorBody{
Code: api.CloudErrorCodeInvalidResource,
Message: fmt.Sprintf("provided vmss %s does not match RP or gateway prefix",
Message: fmt.Sprintf("provided vmss %s does not match RP prefix",
vmssName,
),
},
}
}

scalesetVMs, err := d.vmssvms.List(ctx, resourceGroupName, vmssName, "", "", "")
scalesetVMs, err := d.vmssvms.List(ctx, d.config.RPResourceGroupName, vmssName, "", "", "")
if err != nil {
return err
}

for _, vm := range scalesetVMs {
d.log.Printf("waiting for restart script to complete on older vmss %s, instance %s", vmssName, *vm.InstanceID)
err = d.vmssvms.RunCommandAndWait(ctx, resourceGroupName, vmssName, *vm.InstanceID, mgmtcompute.RunCommandInput{
d.log.Printf("waiting for restart script to complete on older rp vmss %s, instance %s", vmssName, *vm.InstanceID)
err = d.vmssvms.RunCommandAndWait(ctx, d.config.RPResourceGroupName, vmssName, *vm.InstanceID, mgmtcompute.RunCommandInput{
CommandID: to.StringPtr("RunShellScript"),
Script: &[]string{restartScript},
Script: &[]string{rpRestartScript},
})

if err != nil {
Expand All @@ -545,7 +534,7 @@ func (d *deployer) restartOldScaleset(ctx context.Context, vmssName string, reso
time.Sleep(30 * time.Second)
timeoutCtx, cancel := context.WithTimeout(ctx, time.Hour)
defer cancel()
err = d.waitForReadiness(timeoutCtx, resourceGroupName, vmssName, *vm.InstanceID)
err = d.waitForReadiness(timeoutCtx, vmssName, *vm.InstanceID)
if err != nil {
return err
}
Expand All @@ -554,9 +543,9 @@ func (d *deployer) restartOldScaleset(ctx context.Context, vmssName string, reso
return nil
}

func (d *deployer) waitForReadiness(ctx context.Context, resourceGroupName string, vmssName string, vmInstanceID string) error {
func (d *deployer) waitForReadiness(ctx context.Context, vmssName string, vmInstanceID string) error {
return wait.PollImmediateUntil(10*time.Second, func() (bool, error) {
return d.isVMInstanceHealthy(ctx, resourceGroupName, vmssName, vmInstanceID), nil
return d.isVMInstanceHealthy(ctx, d.config.RPResourceGroupName, vmssName, vmInstanceID), nil
}, ctx.Done())
}

Expand Down
Loading

0 comments on commit 058a214

Please sign in to comment.