@@ -3,10 +3,14 @@ import java.io.EOFException
33import java .time .ZoneId
44import java .time .format .DateTimeFormatter
55
6+ import devbox .common .Util
7+ import io .sentry .event .Event .Level
8+ import io .sentry .event .EventBuilder
69import software .amazon .awssdk .services .ec2 .Ec2Client
710import software .amazon .awssdk .services .ec2 .model ._
811
912import scala .collection .JavaConverters ._
13+ import scala .collection .immutable .HashMap
1014import scala .concurrent .duration ._
1115
1216object Instance {
@@ -107,10 +111,22 @@ object Instance{
107111 case _ => ???
108112 }
109113 case multiple =>
114+ val event = new EventBuilder ()
115+ .withMessage(" Multiple devbox instances running" )
116+ .withLevel(Level .WARNING )
117+ .withTag(" whoami" , System .getProperty(" user.name" ))
110118 val instanceOptions = multiple.zipWithIndex.map { case (instance, idx) =>
111119 val dateFormatter = DateTimeFormatter .ofPattern(" yyyy-MM-dd HH:mm:ss z" ).withZone(ZoneId .systemDefault())
112- s " \t [ ${idx + 1 }] ${instance.instanceId()} ( ${instance.placement().availabilityZone()}) launched at ${dateFormatter.format(instance.launchTime())}"
120+ val launchTime = dateFormatter.format(instance.launchTime())
121+ event.withExtra(s " instance- ${idx}" , Map (
122+ " id" -> instance.instanceId,
123+ " region" -> instance.placement().availabilityZone(),
124+ " launchTime" -> launchTime,
125+ " state" -> instance.state().nameAsString()
126+ ))
127+ s " \t [ ${idx + 1 }] ${instance.instanceId()} ( ${instance.placement().availabilityZone()}) launched at ${launchTime}"
113128 }.mkString(" \n " )
129+ Util .sentryCapture(event.build())
114130 log(s " Multiple Devbox instances found. Which one would you like to keep? (enter 0 to discard all and get a new one) \n " + instanceOptions)
115131 val chosen = readChoice(log)
116132 val idsToDelete = (multiple.take(chosen) ++ multiple.drop(chosen + 1 )).map(_.instanceId())
0 commit comments