changes.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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 options
  15. import (
  16. "reflect"
  17. "sort"
  18. "yunion.io/x/log"
  19. "yunion.io/x/pkg/util/netutils"
  20. "yunion.io/x/onecloud/pkg/appsrv"
  21. "yunion.io/x/onecloud/pkg/cloudcommon/consts"
  22. "yunion.io/x/onecloud/pkg/util/netutils2"
  23. )
  24. func OnBaseOptionsChange(oOpts, nOpts interface{}) bool {
  25. oldOpts := oOpts.(*BaseOptions)
  26. newOpts := nOpts.(*BaseOptions)
  27. changed := false
  28. if oldOpts.RequestWorkerCount != newOpts.RequestWorkerCount {
  29. log.Debugf("RequestWorkerCount changed from %d to %d", oldOpts.RequestWorkerCount, newOpts.RequestWorkerCount)
  30. changed = true
  31. }
  32. if oldOpts.TimeZone != newOpts.TimeZone {
  33. changed = true
  34. }
  35. if oldOpts.NonDefaultDomainProjects != newOpts.NonDefaultDomainProjects {
  36. consts.SetNonDefaultDomainProjects(newOpts.NonDefaultDomainProjects)
  37. changed = true
  38. }
  39. if oldOpts.DomainizedNamespace != newOpts.DomainizedNamespace {
  40. consts.SetDomainizedNamespace(newOpts.DomainizedNamespace)
  41. changed = true
  42. }
  43. if privatePrrefixesChanged(oldOpts.CustomizedPrivatePrefixes, newOpts.CustomizedPrivatePrefixes) {
  44. netutils.SetPrivatePrefixes(newOpts.CustomizedPrivatePrefixes)
  45. log.Debugf("Customized private prefixes: %s", netutils.GetPrivateIPRanges())
  46. }
  47. if oldOpts.EnableQuotaCheck != newOpts.EnableQuotaCheck {
  48. consts.SetEnableQuotaCheck(newOpts.EnableQuotaCheck)
  49. }
  50. if oldOpts.LogLevel != newOpts.LogLevel {
  51. log.SetLogLevelByString(log.Logger(), newOpts.LogLevel)
  52. }
  53. if oldOpts.LogWithTimeZone != newOpts.LogWithTimeZone || oldOpts.LogTimestampFormat != newOpts.LogTimestampFormat {
  54. log.Logger().Formatter = &log.TextFormatter{
  55. TimeZone: newOpts.LogWithTimeZone,
  56. TimestampFormat: newOpts.LogTimestampFormat,
  57. }
  58. }
  59. if oldOpts.ApiServer != newOpts.ApiServer {
  60. log.Debugf("api_server changed from %s to %s", oldOpts.ApiServer, newOpts.ApiServer)
  61. }
  62. if !reflect.DeepEqual(oldOpts.MetadataServerIp4s, newOpts.MetadataServerIp4s) {
  63. netutils2.SetIp4MetadataServers(newOpts.MetadataServerIp4s)
  64. log.Debugf("Metadata server IPv4 address changed to %s", newOpts.MetadataServerIp4s)
  65. }
  66. if !reflect.DeepEqual(oldOpts.MetadataServerIp6s, newOpts.MetadataServerIp6s) {
  67. netutils2.SetIp6MetadataServers(newOpts.MetadataServerIp6s)
  68. log.Debugf("Metadata server IPv6 address changed to %s", newOpts.MetadataServerIp6s)
  69. }
  70. if oldOpts.TaskWorkerCount != newOpts.TaskWorkerCount {
  71. consts.SetTaskWorkerCount(newOpts.TaskWorkerCount)
  72. }
  73. if oldOpts.LocalTaskWorkerCount != newOpts.LocalTaskWorkerCount {
  74. consts.SetLocalTaskWorkerCount(newOpts.LocalTaskWorkerCount)
  75. }
  76. if oldOpts.TaskArchiveThresholdHours != newOpts.TaskArchiveThresholdHours {
  77. consts.SetTaskArchiveThresholdHours(newOpts.TaskArchiveThresholdHours)
  78. }
  79. if oldOpts.TaskArchiveBatchLimit != newOpts.TaskArchiveBatchLimit {
  80. consts.SetTaskArchiveBatchLimit(newOpts.TaskArchiveBatchLimit)
  81. }
  82. if oldOpts.EnableChangeOwnerAutoRename != newOpts.EnableChangeOwnerAutoRename {
  83. consts.SetChangeOwnerAutoRename(newOpts.EnableChangeOwnerAutoRename)
  84. }
  85. if privatePrrefixesChanged(oldOpts.DefaultHandlersWhitelistUserAgents, newOpts.DefaultHandlersWhitelistUserAgents) {
  86. appsrv.SetDefaultHandlersWhitelistUserAgents(newOpts.DefaultHandlersWhitelistUserAgents)
  87. }
  88. return changed
  89. }
  90. func privatePrrefixesChanged(oldprefs, newprefs []string) bool {
  91. if len(oldprefs) != len(newprefs) {
  92. return true
  93. }
  94. if len(oldprefs) == 0 {
  95. return false
  96. }
  97. sort.Strings(oldprefs)
  98. sort.Strings(newprefs)
  99. for i := range newprefs {
  100. if oldprefs[i] != newprefs[i] {
  101. return true
  102. }
  103. }
  104. return false
  105. }
  106. func OnCommonOptionsChange(oOpts, nOpts interface{}) bool {
  107. oldOpts := oOpts.(*CommonOptions)
  108. newOpts := nOpts.(*CommonOptions)
  109. changed := false
  110. if OnBaseOptionsChange(&oldOpts.BaseOptions, &newOpts.BaseOptions) {
  111. changed = true
  112. }
  113. return changed
  114. }
  115. func OnDBOptionsChange(oOpts, nOpts interface{}) bool {
  116. oldOpts := oOpts.(*DBOptions)
  117. newOpts := nOpts.(*DBOptions)
  118. changed := false
  119. if oldOpts.HistoricalUniqueName != newOpts.HistoricalUniqueName {
  120. if newOpts.HistoricalUniqueName {
  121. consts.EnableHistoricalUniqueName()
  122. } else {
  123. consts.DisableHistoricalUniqueName()
  124. }
  125. }
  126. return changed
  127. }