in internal/vulnerability/replicator.go [43:73]
func (f VulnerabilityReplicator) SnapshotInstance(ctx context.Context, insCh chan *ec2.Ec2Instance) {
f.log.Info("Starting VulnerabilityReplicator.SnapshotInstance")
defer close(f.ch)
for {
select {
case <-ctx.Done():
f.log.Info("VulnerabilityReplicator.SnapshotInstance context canceled")
return
case data, ok := <-insCh:
if !ok {
f.log.Info("VulnerabilityReplicator.SnapshotInstance channel is closed")
return
}
sp, err := f.manager.CreateSnapshots(ctx, data)
if err != nil {
f.log.Errorf("VulnerabilityReplicator.SnapshotInstance.CreateSnapshots failed: %v", err)
continue
}
for _, s := range sp {
f.log.Infof("VulnerabilityReplicator.SnapshotInstance created snapshot: %s of size %d for instance %s", s.SnapshotId, s.VolumeSize, *data.InstanceId)
select {
case <-ctx.Done():
f.log.Info("VulnerabilityReplicator.SnapshotInstance context canceled")
return
case f.ch <- s:
}
}
}
}
}