Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to PlanIDs #370

Open
wants to merge 45 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
13a7310
add GetPlansMigrationDone and SetPlansMigration
mihaiiorga Oct 4, 2021
81c9444
add default plans as json file for testing
mihaiiorga Oct 5, 2021
cbd30c5
alter PlantInfo to have PlanID
mihaiiorga Oct 5, 2021
6f8964d
PlanInfo struct
mihaiiorga Oct 5, 2021
63b4508
PlanInfo model methods
mihaiiorga Oct 5, 2021
5ed16c7
add PlanInfo to Accounts model
mihaiiorga Oct 5, 2021
af3f6aa
add MonthsInSubscription to 12
mihaiiorga Oct 5, 2021
4e405cb
adapt accounts model funcs to use PlanInfo
mihaiiorga Oct 5, 2021
ee82e60
add all info to plans.json
mihaiiorga Oct 5, 2021
33713ac
adapt accounts routes to PlansInfo
mihaiiorga Oct 5, 2021
005d34a
accounts models tests and adaption to PlansInfo
mihaiiorga Oct 5, 2021
fb7417f
accounts route tests adaption to PlanInfo
mihaiiorga Oct 5, 2021
bc8f9ce
adapt init file upload + test
mihaiiorga Oct 5, 2021
0bdf602
add MigratePlanIds main func (only Accounts)
mihaiiorga Oct 5, 2021
0c1059f
upgrades entity adaption
mihaiiorga Oct 6, 2021
b7da39d
upgrades tests adaption
mihaiiorga Oct 6, 2021
bb0a1e0
upgrade account adaptions + upgrade/renew tests
mihaiiorga Oct 6, 2021
a61a37a
upgrade account tests and v2 tests adaptions
mihaiiorga Oct 6, 2021
500a3f3
stripe payments models and routes planID adaption
mihaiiorga Oct 6, 2021
a17005c
stripe models tests
mihaiiorga Oct 6, 2021
0b6b029
adapt renew account tests to planIDs
mihaiiorga Oct 6, 2021
510fbe5
return plans from db on /plans
mihaiiorga Oct 6, 2021
b3c9ea2
remove env.Plans and DefaultPlansJson
mihaiiorga Oct 7, 2021
b26aa53
Admin pages for plans adaption
mihaiiorga Oct 7, 2021
64e1c2b
add migrations - wip
mihaiiorga Oct 7, 2021
a540db7
fix plan metrics (remove Env.Plans)
mihaiiorga Oct 7, 2021
4cf0059
fix space used queries for Grafana
mihaiiorga Oct 7, 2021
100c811
remove DefaultMonthsPerSubscription const and dependency
mihaiiorga Oct 7, 2021
bd154b9
remove BasicSubscriptionDefaultCostForTest const and dependency
mihaiiorga Oct 7, 2021
07e2fec
update docs
mihaiiorga Oct 7, 2021
1808946
add NewPlanInfoID primary_key for Upgrades + GetAllUpgrades
mihaiiorga Oct 7, 2021
4690208
migrate upgrades db entries to planIDs
mihaiiorga Oct 7, 2021
4af6b1f
fix SetTestPlans
mihaiiorga Oct 7, 2021
05e345e
migrate upgrades fixes
mihaiiorga Oct 7, 2021
5b38b56
migration plans flag
mihaiiorga Oct 7, 2021
a7daf50
admin plans improvements
mihaiiorga Oct 8, 2021
ca43976
fix all models tests
mihaiiorga Oct 8, 2021
da68db7
add PlanInfo validation
mihaiiorga Oct 8, 2021
5e12039
fix all routes tests
mihaiiorga Oct 8, 2021
981ff36
PROD_DATABASE_URL travis
mihaiiorga Oct 8, 2021
893a601
upgrade tests
mihaiiorga Oct 8, 2021
3d77513
performance tests plans fix
mihaiiorga Oct 8, 2021
39f5053
remove hardcoded +12 months
mihaiiorga Oct 8, 2021
b570105
add PlanResponse
mihaiiorga Oct 8, 2021
110349a
[skip travis] Merge branch 'master' into feature/DEV-263-PlanIDsMigra…
mihaiiorga Oct 9, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
967 changes: 206 additions & 761 deletions docs/docs.go

Large diffs are not rendered by default.

950 changes: 195 additions & 755 deletions docs/swagger.json

Large diffs are not rendered by default.

704 changes: 146 additions & 558 deletions docs/swagger.yaml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions jobs/jobrunner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ import (
func Test_Init_Jobs(t *testing.T) {
utils.SetTesting("../.env")
models.Connect(utils.Env.DatabaseURL)
models.SetTestPlans()
}
31 changes: 26 additions & 5 deletions jobs/metric_collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package jobs
import (
"github.com/opacity/storage-node/models"
"github.com/opacity/storage-node/utils"
"github.com/prometheus/client_golang/prometheus"
)

type metricCollector struct{}
Expand Down Expand Up @@ -32,8 +33,10 @@ func (m metricCollector) spaceUsageMetrics() {

utils.Metrics_Percent_Of_Space_Used_Map[utils.TotalLbl].Set(models.CalculatePercentSpaceUsed(spaceReport))

for _, plan := range utils.Env.Plans {
spaceReport := models.CreateSpaceUsedReportForPlanType(models.StorageLimitType(plan.StorageInGB))
plans, _ := models.GetAllPlans()

for _, plan := range plans {
spaceReport := models.CreateSpaceUsedReportForPlanType(plan)

utils.Metrics_Percent_Of_Space_Used_Map[plan.Name].Set(models.CalculatePercentSpaceUsed(spaceReport))
}
Expand Down Expand Up @@ -79,22 +82,40 @@ func (m metricCollector) accountsMetrics() {
utils.Metrics_Percent_Of_Paid_Accounts_Collected.Set(float64(percentOfPaidAccountsCollected))
}

for _, plan := range utils.Env.Plans {
plans, _ := models.GetAllPlans()

for _, plan := range plans {
name := plan.Name
accountCount, err := models.CountPaidAccountsByPlanType(models.StorageLimitType(plan.StorageInGB))
accountCount, err := models.CountPaidAccountsByPlanType(plan)
if err == nil {
utils.Metrics_Total_Paid_Accounts_Map[name].Set(float64(accountCount))
}
utils.LogIfError(err, nil)

stripeCount, err := models.CountPaidAccountsByPaymentMethodAndPlanType(models.StorageLimitType(plan.StorageInGB), models.PaymentMethodWithCreditCard)
stripeCount, err := models.CountPaidAccountsByPaymentMethodAndPlanType(plan, models.PaymentMethodWithCreditCard)
if err == nil {
utils.Metrics_Total_Stripe_Paid_Accounts_Map[name].Set(float64(stripeCount))
}
utils.LogIfError(err, nil)
}
}

func CreatePlanMetrics() {
utils.Metrics_Percent_Of_Space_Used_Map[utils.TotalLbl] = utils.Metrics_Percent_Of_Space_Used.With(prometheus.Labels{"plan_type": utils.TotalLbl})
utils.Metrics_Total_Paid_Accounts_Map[utils.TotalLbl] = utils.Metrics_Total_Paid_Accounts.With(prometheus.Labels{"plan_type": utils.TotalLbl})

utils.Metrics_Total_Stripe_Paid_Accounts_Map[utils.TotalLbl] = utils.Metrics_Total_Stripe_Paid_Accounts.With(prometheus.Labels{"plan_type": utils.TotalLbl})

plans, _ := models.GetAllPlans()

for _, plan := range plans {
name := plan.Name
utils.Metrics_Percent_Of_Space_Used_Map[name] = utils.Metrics_Percent_Of_Space_Used.With(prometheus.Labels{"plan_type": name})
utils.Metrics_Total_Paid_Accounts_Map[name] = utils.Metrics_Total_Paid_Accounts.With(prometheus.Labels{"plan_type": name})
utils.Metrics_Total_Stripe_Paid_Accounts_Map[name] = utils.Metrics_Total_Stripe_Paid_Accounts.With(prometheus.Labels{"plan_type": name})
}
}

func (m metricCollector) fileMetrics() {
completedFileInSQLCount := 0
err := models.DB.Model(&models.CompletedFile{}).Count(&completedFileInSQLCount).Error
Expand Down
1 change: 1 addition & 0 deletions jobs/s3_deleter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
func Test_Init_S3_Deleter(t *testing.T) {
utils.SetTesting("../.env")
models.Connect(utils.Env.DatabaseURL)
models.SetTestPlans()
}

func Test_DeleteAllExpiredCompletedFiles(t *testing.T) {
Expand Down
1 change: 1 addition & 0 deletions jobs/s3_expire_access_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
func Test_Init_S3_Life_Cycle(t *testing.T) {
utils.SetTesting("../.env")
models.Connect(utils.Env.DatabaseURL)
models.SetTestPlans()
}

func Test_Delete_S3Object(t *testing.T) {
Expand Down
31 changes: 8 additions & 23 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,14 @@ func main() {
models.Connect(utils.Env.DatabaseURL)
}

setEnvPlans()
migratePlanIds := utils.GetPlansMigrationDone()
if !migratePlanIds {
err = models.MigratePlanIds()
utils.PanicOnError(err)
}

jobs.CreatePlanMetrics()

models.MigrateEnvWallets()

jobs.StartupJobs()
Expand All @@ -68,28 +75,6 @@ func main() {
routes.CreateRoutes()
}

func setEnvPlans() {
plans := []utils.PlanInfo{}
results := models.DB.Find(&plans)

utils.Env.Plans = make(utils.PlanResponseType)

if results.RowsAffected == 0 {
err := json.Unmarshal([]byte(utils.DefaultPlansJson), &utils.Env.Plans)
utils.LogIfError(err, nil)

for _, plan := range utils.Env.Plans {
models.DB.Model(&utils.PlanInfo{}).Create(&plan)
}
} else {
for _, plan := range plans {
utils.Env.Plans[plan.StorageInGB] = plan
}
}

utils.CreatePlanMetrics()
}

func sentryOpacityBeforeSend(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
if event.Request != nil {
req := routes.GenericRequest{}
Expand Down