Skip to content

Commit

Permalink
remove unnecessary saved info
Browse files Browse the repository at this point in the history
  • Loading branch information
Eslam-Nawara committed Feb 5, 2024
1 parent 5fbd048 commit d3b117f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 38 deletions.
53 changes: 22 additions & 31 deletions mass-deployer/pkg/mass-deployer/deployer.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"sync"
"time"

"github.com/hashicorp/go-multierror"
"github.com/sethvargo/go-retry"
"gopkg.in/yaml.v3"

Expand Down Expand Up @@ -96,7 +97,6 @@ func RunDeployer(ctx context.Context, cfg Config, output string, debug bool) err
}

func deployNodeGroup(ctx context.Context, tfPluginClient deployer.TFPluginClient, trial int, groupInfo *groupDeploymentsInfo, nodeGroup NodesGroup, vms []Vms, sshKeys map[string]string) ([]vmOutput, error) {
fmt.Println(*groupInfo)
log.Info().Str("Node group", nodeGroup.Name).Msg("Filter nodes")
nodesIDs, err := filterNodes(ctx, tfPluginClient, nodeGroup)
if err != nil {
Expand All @@ -113,12 +113,15 @@ func deployNodeGroup(ctx context.Context, tfPluginClient deployer.TFPluginClient
}

log.Info().Str("Node group", nodeGroup.Name).Msg("Starting mass deployment")
info, err := massDeploy(ctx, tfPluginClient, groupInfo)
err = massDeploy(ctx, tfPluginClient, groupInfo)
if err != nil {
return nil, err
}

return info, nil
log.Debug().Msg("Load deployments")
vmsInfo, err := loadGroupInfo(tfPluginClient, groupInfo.vmDeployments)

return vmsInfo, err
}

func parseVMsGroup(vms []Vms, nodeGroup string, nodesIDs []int, sshKeys map[string]string) groupDeploymentsInfo {
Expand All @@ -133,30 +136,26 @@ func parseVMsGroup(vms []Vms, nodeGroup string, nodesIDs []int, sshKeys map[stri
return buildDeployments(vmsOfNodeGroup, nodeGroup, nodesIDs, sshKeys)
}

func massDeploy(ctx context.Context, tfPluginClient deployer.TFPluginClient, deployments *groupDeploymentsInfo) ([]vmOutput, error) {
func massDeploy(ctx context.Context, tfPluginClient deployer.TFPluginClient, deployments *groupDeploymentsInfo) error {
// deploy only contracts that need to be deployed
networks, vms := getNotDeployedDeployments(tfPluginClient, deployments)

log.Debug().Msg("Deploy networks")
if err := tfPluginClient.NetworkDeployer.BatchDeploy(ctx, networks); err != nil {
return nil, err
return err
}

log.Debug().Msg("Deploy virtual machines")
if err := tfPluginClient.DeploymentDeployer.BatchDeploy(ctx, vms); err != nil {
return nil, err
return err
}

log.Debug().Msg("Load deployments")
vmsInfo := loadDeploymentsInfo(tfPluginClient, deployments.deploymentsInfo)

return vmsInfo, nil
return nil
}

func buildDeployments(vms []Vms, nodeGroup string, nodesIDs []int, sshKeys map[string]string) groupDeploymentsInfo {
var vmDeployments []*workloads.Deployment
var networkDeployments []*workloads.ZNet
var deploymentsInfo []vmDeploymentInfo
var nodesIDsIdx int

// here we loop over all groups of vms within the same node group, and for every group
Expand Down Expand Up @@ -211,10 +210,9 @@ func buildDeployments(vms []Vms, nodeGroup string, nodesIDs []int, sshKeys map[s

vmDeployments = append(vmDeployments, &deployment)
networkDeployments = append(networkDeployments, &network)
deploymentsInfo = append(deploymentsInfo, vmDeploymentInfo{nodeID: nodeID, deploymentName: deployment.Name, vmName: vm.Name})
}
}
return groupDeploymentsInfo{vmDeployments: vmDeployments, networkDeployments: networkDeployments, deploymentsInfo: deploymentsInfo}
return groupDeploymentsInfo{vmDeployments: vmDeployments, networkDeployments: networkDeployments}
}

func getNotDeployedDeployments(tfPluginClient deployer.TFPluginClient, groupInfo *groupDeploymentsInfo) ([]*workloads.ZNet, []*workloads.Deployment) {
Expand All @@ -235,24 +233,23 @@ func getNotDeployedDeployments(tfPluginClient deployer.TFPluginClient, groupInfo
return failedNetworkDeployments, failedVmDeployments
}

func loadDeploymentsInfo(tfPluginClient deployer.TFPluginClient, deployments []vmDeploymentInfo) []vmOutput {
func loadGroupInfo(tfPluginClient deployer.TFPluginClient, vmDeployments []*workloads.Deployment) ([]vmOutput, error) {
vmsInfo := []vmOutput{}
var multiErr error
var lock sync.Mutex
var wg sync.WaitGroup

for _, info := range deployments {
for _, deployment := range vmDeployments {
wg.Add(1)

go func(depInfo vmDeploymentInfo) {
go func(deployment workloads.Deployment) {
defer wg.Done()

vmDeployment, err := tfPluginClient.State.LoadDeploymentFromGrid(depInfo.nodeID, depInfo.deploymentName)
vmDeployment, err := tfPluginClient.State.LoadDeploymentFromGrid(deployment.NodeID, deployment.Name)
if err != nil {
log.Debug().Err(err).
Str("vm", depInfo.vmName).
Str("deployment", depInfo.deploymentName).
Uint32("node ID", depInfo.nodeID).
Msg("couldn't load from state")
lock.Lock()
defer lock.Unlock()
multiErr = multierror.Append(multiErr, err)
return
}

Expand All @@ -272,11 +269,11 @@ func loadDeploymentsInfo(tfPluginClient deployer.TFPluginClient, deployments []v
lock.Lock()
defer lock.Unlock()
vmsInfo = append(vmsInfo, vmInfo)
}(info)
}(*deployment)
}

wg.Wait()
return vmsInfo

return vmsInfo, nil
}

func parseDisks(name string, disks []Disk) (disksWorkloads []workloads.Disk, mountsWorkloads []workloads.Mount) {
Expand All @@ -302,7 +299,6 @@ func updateFailedDeployments(tfPluginClient deployer.TFPluginClient, nodesIDs []
if isFailedNetwork(*deployment) {
updated = true
groupInfo.vmDeployments[idx].NodeID = nodeID
groupInfo.deploymentsInfo[idx].nodeID = nodeID
groupInfo.networkDeployments[idx].Nodes = []uint32{nodeID}
}
}
Expand Down Expand Up @@ -332,16 +328,11 @@ func updateFailedDeployments(tfPluginClient deployer.TFPluginClient, nodesIDs []

for idx, deployment := range groupInfo.vmDeployments {
if deployment.ContractID == 0 {

nodeID := uint32(nodesIDs[idx%len(nodesIDs)])

groupInfo.vmDeployments[idx].NodeID = nodeID
groupInfo.deploymentsInfo[idx].nodeID = nodeID
groupInfo.networkDeployments[idx].Nodes = []uint32{nodeID}

}
}
return
}

func isFailedNetwork(network workloads.ZNet) bool {
Expand Down
7 changes: 0 additions & 7 deletions mass-deployer/pkg/mass-deployer/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,6 @@ type Disk struct {
type groupDeploymentsInfo struct {
vmDeployments []*workloads.Deployment
networkDeployments []*workloads.ZNet
deploymentsInfo []vmDeploymentInfo
}

type vmDeploymentInfo struct {
nodeID uint32
vmName string
deploymentName string
}

type vmOutput struct {
Expand Down

0 comments on commit d3b117f

Please sign in to comment.