1// Copyright (C) 2019 Storj Labs, Inc. 2// See LICENSE for copying information. 3 4package satellite 5 6import ( 7 "context" 8 9 hw "github.com/jtolds/monkit-hw/v2" 10 "github.com/spacemonkeygo/monkit/v3" 11 12 "storj.io/common/identity" 13 "storj.io/private/debug" 14 "storj.io/storj/private/server" 15 version_checker "storj.io/storj/private/version/checker" 16 "storj.io/storj/satellite/accounting" 17 "storj.io/storj/satellite/accounting/live" 18 "storj.io/storj/satellite/accounting/projectbwcleanup" 19 "storj.io/storj/satellite/accounting/rollup" 20 "storj.io/storj/satellite/accounting/rolluparchive" 21 "storj.io/storj/satellite/accounting/tally" 22 "storj.io/storj/satellite/admin" 23 "storj.io/storj/satellite/analytics" 24 "storj.io/storj/satellite/attribution" 25 "storj.io/storj/satellite/audit" 26 "storj.io/storj/satellite/buckets" 27 "storj.io/storj/satellite/compensation" 28 "storj.io/storj/satellite/console" 29 "storj.io/storj/satellite/console/consoleweb" 30 "storj.io/storj/satellite/contact" 31 "storj.io/storj/satellite/gc" 32 "storj.io/storj/satellite/gracefulexit" 33 "storj.io/storj/satellite/mailservice" 34 "storj.io/storj/satellite/metabase/zombiedeletion" 35 "storj.io/storj/satellite/metainfo" 36 "storj.io/storj/satellite/metainfo/expireddeletion" 37 "storj.io/storj/satellite/metrics" 38 "storj.io/storj/satellite/nodeapiversion" 39 "storj.io/storj/satellite/orders" 40 "storj.io/storj/satellite/overlay" 41 "storj.io/storj/satellite/overlay/straynodes" 42 "storj.io/storj/satellite/payments/paymentsconfig" 43 "storj.io/storj/satellite/payments/stripecoinpayments" 44 "storj.io/storj/satellite/repair/checker" 45 "storj.io/storj/satellite/repair/queue" 46 "storj.io/storj/satellite/repair/repairer" 47 "storj.io/storj/satellite/reputation" 48 "storj.io/storj/satellite/revocation" 49 "storj.io/storj/satellite/snopayouts" 50) 51 52var mon = monkit.Package() 53 54func init() { 55 hw.Register(monkit.Default) 56} 57 58// DB is the master database for the satellite. 59// 60// architecture: Master Database 61type DB interface { 62 // MigrateToLatest initializes the database 63 MigrateToLatest(ctx context.Context) error 64 // CheckVersion checks the database is the correct version 65 CheckVersion(ctx context.Context) error 66 // Close closes the database 67 Close() error 68 69 // TestingMigrateToLatest initializes the database for testplanet. 70 TestingMigrateToLatest(ctx context.Context) error 71 72 // PeerIdentities returns a storage for peer identities 73 PeerIdentities() overlay.PeerIdentities 74 // OverlayCache returns database for caching overlay information 75 OverlayCache() overlay.DB 76 // Reputation returns database for audit reputation information 77 Reputation() reputation.DB 78 // Attribution returns database for partner keys information 79 Attribution() attribution.DB 80 // StoragenodeAccounting returns database for storing information about storagenode use 81 StoragenodeAccounting() accounting.StoragenodeAccounting 82 // ProjectAccounting returns database for storing information about project data use 83 ProjectAccounting() accounting.ProjectAccounting 84 // RepairQueue returns queue for segments that need repairing 85 RepairQueue() queue.RepairQueue 86 // Console returns database for satellite console 87 Console() console.DB 88 // Orders returns database for orders 89 Orders() orders.DB 90 // Containment returns database for containment 91 Containment() audit.Containment 92 // Buckets returns the database to interact with buckets 93 Buckets() buckets.DB 94 // GracefulExit returns database for graceful exit 95 GracefulExit() gracefulexit.DB 96 // StripeCoinPayments returns stripecoinpayments database. 97 StripeCoinPayments() stripecoinpayments.DB 98 // SnoPayout returns database for payouts. 99 SNOPayouts() snopayouts.DB 100 // Compoensation tracks storage node compensation 101 Compensation() compensation.DB 102 // Revocation tracks revoked macaroons 103 Revocation() revocation.DB 104 // NodeAPIVersion tracks nodes observed api usage 105 NodeAPIVersion() nodeapiversion.DB 106} 107 108// Config is the global config satellite. 109type Config struct { 110 Identity identity.Config 111 Server server.Config 112 Debug debug.Config 113 114 Admin admin.Config 115 116 Contact contact.Config 117 Overlay overlay.Config 118 StrayNodes straynodes.Config 119 120 Metainfo metainfo.Config 121 Orders orders.Config 122 123 Reputation reputation.Config 124 125 Checker checker.Config 126 Repairer repairer.Config 127 Audit audit.Config 128 129 GarbageCollection gc.Config 130 131 ExpiredDeletion expireddeletion.Config 132 ZombieDeletion zombiedeletion.Config 133 134 Tally tally.Config 135 Rollup rollup.Config 136 RollupArchive rolluparchive.Config 137 LiveAccounting live.Config 138 ProjectBWCleanup projectbwcleanup.Config 139 140 Mail mailservice.Config 141 142 Payments paymentsconfig.Config 143 144 Console consoleweb.Config 145 146 Version version_checker.Config 147 148 GracefulExit gracefulexit.Config 149 150 Metrics metrics.Config 151 152 Compensation compensation.Config 153 154 ProjectLimit accounting.ProjectLimitConfig 155 156 Analytics analytics.Config 157} 158