diff --git a/logic/telemetry.go b/logic/telemetry.go index 12b7035c6..f4f4a8f4d 100644 --- a/logic/telemetry.go +++ b/logic/telemetry.go @@ -2,6 +2,7 @@ package logic import ( "encoding/json" + "os" "time" "github.com/gravitl/netmaker/database" @@ -9,6 +10,7 @@ import ( "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/servercfg" "github.com/posthog/posthog-go" + "golang.org/x/exp/slog" ) // flags to keep for telemetry @@ -39,14 +41,18 @@ func sendTelemetry() error { // get telemetry data d, err := FetchTelemetryData() if err != nil { - return err + slog.Error("error fetching telemetry data", "error", err) } + // get tenant admin email + adminEmail := os.Getenv("NM_EMAIL") client, err := posthog.NewWithConfig(posthog_pub_key, posthog.Config{Endpoint: posthog_endpoint}) if err != nil { return err } defer client.Close() + slog.Info("sending telemetry data to posthog", "data", d) + // send to posthog return client.Enqueue(posthog.Capture{ DistinctId: telRecord.UUID, @@ -67,7 +73,11 @@ func sendTelemetry() error { Set("k8s", d.Count.K8S). Set("version", d.Version). Set("is_ee", d.IsPro). // TODO change is_ee to is_pro for consistency, but probably needs changes in posthog - Set("is_free_tier", isFreeTier), + Set("is_free_tier", isFreeTier). + Set("is_pro_trial", d.IsProTrial). + Set("pro_trial_end_date", d.ProTrialEndDate.In(time.UTC).Format("2006-01-02")). + Set("admin_email", adminEmail). + Set("is_saas_tenant", d.IsSaasTenant), }) } @@ -87,6 +97,15 @@ func FetchTelemetryData() (telemetryData, error) { data.Nodes = len(nodes) data.Count = getClientCount(nodes) } + endDate, err := GetTrialEndDate() + if err != nil { + logger.Log(0, "error getting trial end date", err.Error()) + } + data.ProTrialEndDate = endDate + if endDate.After(time.Now()) { + data.IsProTrial = true + } + data.IsSaasTenant = servercfg.DeployedByOperator() return data, err } @@ -162,16 +181,19 @@ func getDBLength(dbname string) int { // telemetryData - What data to send to posthog type telemetryData struct { - Nodes int - Hosts int - ExtClients int - Users int - Count clientCount - Networks int - Servers int - Version string - IsPro bool - IsFreeTier bool + Nodes int + Hosts int + ExtClients int + Users int + Count clientCount + Networks int + Servers int + Version string + IsPro bool + IsFreeTier bool + IsProTrial bool + ProTrialEndDate time.Time + IsSaasTenant bool } // clientCount - What types of netclients we're tallying diff --git a/scripts/nm-quick.sh b/scripts/nm-quick.sh index 9a965dba0..4c9e0204e 100755 --- a/scripts/nm-quick.sh +++ b/scripts/nm-quick.sh @@ -470,23 +470,11 @@ set_install_vars() { wait_seconds 1 - unset GET_EMAIL - unset RAND_EMAIL - RAND_EMAIL="$(echo $RANDOM | md5sum | head -c 16)@email.com" - # suggest the prev email or a random one - EMAIL_SUGGESTED=${NM_EMAIL:-$RAND_EMAIL} - read -p "Email Address for Domain Registration (click 'enter' to use $EMAIL_SUGGESTED): " GET_EMAIL - if [ -z "$GET_EMAIL" ]; then - EMAIL="$EMAIL_SUGGESTED" - if [ "$EMAIL" = "$NM_EMAIL" ]; then - echo "using config email" - else - echo "using rand email" - fi - else - EMAIL="$GET_EMAIL" - fi + while [ -z "$GET_EMAIL" ]; do + read -p "Email Address for Domain Registration: " GET_EMAIL + done + EMAIL="$GET_EMAIL" wait_seconds 1 @@ -592,8 +580,6 @@ install_netmaker() { echo "Starting containers..." - - # start docker and rebuild containers / networks cd "${SCRIPT_DIR}" docker-compose up -d --force-recreate