handlers.go 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package service
  15. import (
  16. "yunion.io/x/onecloud/pkg/appsrv"
  17. "yunion.io/x/onecloud/pkg/appsrv/dispatcher"
  18. app_common "yunion.io/x/onecloud/pkg/cloudcommon/app"
  19. "yunion.io/x/onecloud/pkg/cloudcommon/db"
  20. "yunion.io/x/onecloud/pkg/cloudcommon/db/proxy"
  21. "yunion.io/x/onecloud/pkg/cloudcommon/db/quotas"
  22. "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
  23. "yunion.io/x/onecloud/pkg/compute/capabilities"
  24. "yunion.io/x/onecloud/pkg/compute/misc"
  25. "yunion.io/x/onecloud/pkg/compute/models"
  26. baremetalmodels "yunion.io/x/onecloud/pkg/compute/models/baremetal"
  27. "yunion.io/x/onecloud/pkg/compute/options"
  28. "yunion.io/x/onecloud/pkg/compute/specs"
  29. "yunion.io/x/onecloud/pkg/compute/sshkeys"
  30. "yunion.io/x/onecloud/pkg/compute/usages"
  31. )
  32. func InitHandlers(app *appsrv.Application, isSlave bool) {
  33. db.InitAllManagers()
  34. models.InitGuestNetworkTrafficLog()
  35. db.RegistUserCredCacheUpdater()
  36. db.AddScopeResourceCountHandler("", app)
  37. if !isSlave {
  38. db.AddHistoryDataCleanHandler("", app)
  39. }
  40. quotas.AddQuotaHandler(&models.QuotaManager.SQuotaBaseManager, "", app, isSlave)
  41. quotas.AddQuotaHandler(&models.RegionQuotaManager.SQuotaBaseManager, "", app, isSlave)
  42. quotas.AddQuotaHandler(&models.ZoneQuotaManager.SQuotaBaseManager, "", app, isSlave)
  43. quotas.AddQuotaHandler(&models.ProjectQuotaManager.SQuotaBaseManager, "", app, isSlave)
  44. quotas.AddQuotaHandler(&models.DomainQuotaManager.SQuotaBaseManager, "", app, isSlave)
  45. quotas.AddQuotaHandler(&models.InfrasQuotaManager.SQuotaBaseManager, "", app, isSlave)
  46. usages.AddUsageHandler("", app)
  47. usages.AddHistoryUsageHandler("", app)
  48. capabilities.AddCapabilityHandler("", app)
  49. specs.AddSpecHandler("", app)
  50. sshkeys.AddSshKeysHandler("", app)
  51. taskman.AddTaskHandler("", app, isSlave)
  52. misc.AddMiscHandler("", app)
  53. app_common.ExportOptionsHandler(app, &options.Options)
  54. for _, manager := range []db.IModelManager{
  55. taskman.TaskManager,
  56. taskman.SubTaskManager,
  57. taskman.TaskObjectManager,
  58. taskman.ArchivedTaskManager,
  59. db.UserCacheManager,
  60. db.TenantCacheManager,
  61. db.SharedResourceManager,
  62. db.I18nManager,
  63. models.GuestcdromManager,
  64. models.GuestFloppyManager,
  65. models.NetInterfaceManager,
  66. models.NetworkAdditionalWireManager,
  67. models.QuotaManager,
  68. models.QuotaUsageManager,
  69. models.QuotaPendingUsageManager,
  70. models.ZoneQuotaManager,
  71. models.ZoneUsageManager,
  72. models.ZonePendingUsageManager,
  73. models.RegionQuotaManager,
  74. models.RegionUsageManager,
  75. models.RegionPendingUsageManager,
  76. models.ProjectQuotaManager,
  77. models.ProjectUsageManager,
  78. models.ProjectPendingUsageManager,
  79. models.DomainQuotaManager,
  80. models.DomainUsageManager,
  81. models.DomainPendingUsageManager,
  82. models.InfrasQuotaManager,
  83. models.InfrasUsageManager,
  84. models.InfrasPendingUsageManager,
  85. models.CloudproviderCapabilityManager,
  86. models.ScalingTimerManager,
  87. models.ScalingAlarmManager,
  88. models.ScalingGroupGuestManager,
  89. models.ScalingGroupNetworkManager,
  90. models.CloudimageManager,
  91. models.WafRuleStatementManager,
  92. models.LoadbalancerSecurityGroupManager,
  93. models.HostFileJointsManager,
  94. models.SnapshotPolicyDiskManager,
  95. } {
  96. db.RegisterModelManager(manager)
  97. }
  98. for _, manager := range []db.IModelManager{
  99. db.OpsLog,
  100. db.Metadata,
  101. proxy.ProxySettingManager,
  102. models.BucketManager,
  103. models.CloudaccountManager,
  104. models.CloudproviderManager,
  105. models.CloudregionManager,
  106. models.ZoneManager,
  107. models.VpcManager,
  108. models.WireManager,
  109. models.StorageManager,
  110. models.StoragecacheManager,
  111. models.CachedimageManager,
  112. models.HostManager,
  113. models.HostDmesgLogManager,
  114. models.SchedtagManager,
  115. models.GuestManager,
  116. models.GetContainerManager(),
  117. models.GroupManager,
  118. models.DiskManager,
  119. models.NetworkManager,
  120. models.NetworkAddressManager,
  121. models.NetworkIpMacManager,
  122. models.ReservedipManager,
  123. models.KeypairManager,
  124. models.IsolatedDeviceManager,
  125. models.IsolatedDeviceModelManager,
  126. models.SecurityGroupManager,
  127. models.SecurityGroupRuleManager,
  128. models.ElasticipManager,
  129. models.NatGatewayManager,
  130. models.NatDEntryManager,
  131. models.NatSEntryManager,
  132. models.InstanceSnapshotManager,
  133. models.SnapshotManager,
  134. models.SnapshotPolicyManager,
  135. models.SnapshotPolicyResourceManager,
  136. models.BaremetalagentManager,
  137. models.LoadbalancerManager,
  138. models.LoadbalancerListenerManager,
  139. models.LoadbalancerListenerRuleManager,
  140. models.LoadbalancerBackendGroupManager,
  141. models.LoadbalancerBackendManager,
  142. models.LoadbalancerCertificateManager,
  143. models.LoadbalancerAclManager,
  144. models.LoadbalancerAgentManager,
  145. models.LoadbalancerClusterManager,
  146. models.LoadbalancerHealthCheckManager,
  147. models.RouteTableManager,
  148. models.RouteTableAssociationManager,
  149. models.RouteTableRouteSetManager,
  150. models.InterVpcNetworkRouteSetManager,
  151. models.GuestScreenDumpManager,
  152. models.BillingResourceCheckManager,
  153. models.GuestnetworksecgroupManager,
  154. models.SchedpolicyManager,
  155. models.DynamicschedtagManager,
  156. models.ServerSkuManager,
  157. models.ExternalProjectManager,
  158. models.NetworkInterfaceManager,
  159. models.DBInstanceManager,
  160. models.DBInstanceBackupManager,
  161. models.DBInstanceParameterManager,
  162. models.DBInstanceDatabaseManager,
  163. models.DBInstanceAccountManager,
  164. models.DBInstancePrivilegeManager,
  165. models.DBInstanceSkuManager,
  166. models.ElasticcacheManager,
  167. models.ElasticcacheAclManager,
  168. models.ElasticcacheAccountManager,
  169. models.ElasticcacheParameterManager,
  170. models.ElasticcacheBackupManager,
  171. models.ElasticcacheSkuManager,
  172. models.GlobalVpcManager,
  173. models.GuestTemplateManager,
  174. models.ServiceCatalogManager,
  175. models.CloudproviderQuotaManager,
  176. models.ScalingGroupManager,
  177. models.ScalingPolicyManager,
  178. models.ScalingActivityManager,
  179. models.PolicyDefinitionManager,
  180. models.PolicyAssignmentManager,
  181. models.DnsZoneManager,
  182. models.DnsRecordManager,
  183. models.VpcPeeringConnectionManager,
  184. models.InterVpcNetworkManager,
  185. models.NatSkuManager,
  186. models.NasSkuManager,
  187. models.FileSystemManager,
  188. models.AccessGroupManager,
  189. models.AccessGroupRuleManager,
  190. models.MountTargetManager,
  191. models.ProjectMappingManager,
  192. models.WafRuleGroupManager,
  193. models.WafIPSetManager,
  194. models.WafRegexSetManager,
  195. models.WafInstanceManager,
  196. models.WafRuleManager,
  197. models.MongoDBManager,
  198. models.ElasticSearchManager,
  199. models.KafkaManager,
  200. models.AppManager,
  201. models.AppEnvironmentManager,
  202. models.CDNDomainManager,
  203. models.KubeClusterManager,
  204. models.KubeNodeManager,
  205. models.KubeNodePoolManager,
  206. models.BackupStorageManager,
  207. models.DiskBackupManager,
  208. models.InstanceBackupManager,
  209. models.IPv6GatewayManager,
  210. models.TablestoreManager,
  211. models.NetTapServiceManager,
  212. models.NetTapFlowManager,
  213. models.ModelartsPoolManager,
  214. models.ModelartsPoolSkuManager,
  215. models.MiscResourceManager,
  216. models.SSLCertificateManager,
  217. baremetalmodels.BaremetalProfileManager,
  218. models.HostFileManager,
  219. models.AiGatewayManager,
  220. models.GuestNetworkTrafficLogManager,
  221. } {
  222. db.RegisterModelManager(manager)
  223. handler := db.NewModelHandler(manager)
  224. dispatcher.AddModelDispatcher("", app, handler, isSlave)
  225. }
  226. for _, manager := range []db.IJointModelManager{
  227. models.HostwireManagerDeprecated,
  228. models.HostnetworkManager,
  229. models.HoststorageManager,
  230. models.HostBackupstorageManager,
  231. models.HostschedtagManager,
  232. models.HostIsolatedDeviceModelManager,
  233. models.StorageschedtagManager,
  234. models.NetworkschedtagManager,
  235. models.CloudproviderschedtagManager,
  236. models.ZoneschedtagManager,
  237. models.CloudregionschedtagManager,
  238. models.GuestnetworkManager,
  239. models.GuestsecgroupManager,
  240. models.LoadbalancernetworkManager,
  241. models.GuestdiskManager,
  242. models.GroupnetworkManager,
  243. models.GroupguestManager,
  244. models.StoragecachedimageManager,
  245. models.CloudproviderRegionManager,
  246. models.DBInstanceNetworkManager,
  247. models.NetworkinterfacenetworkManager,
  248. models.InstanceSnapshotJointManager,
  249. models.DnsZoneVpcManager,
  250. models.DBInstanceSecgroupManager,
  251. models.ElasticcachesecgroupManager,
  252. models.InterVpcNetworkVpcManager,
  253. models.InstanceBackupJointManager,
  254. } {
  255. db.RegisterModelManager(manager)
  256. handler := db.NewJointModelHandler(manager)
  257. dispatcher.AddJointModelDispatcher("", app, handler, isSlave)
  258. }
  259. }