func()

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:
				}
			}
		}
	}
}