options.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. "os"
  17. common_options "yunion.io/x/onecloud/pkg/cloudcommon/options"
  18. "yunion.io/x/onecloud/pkg/compute/options"
  19. )
  20. type SOptions struct {
  21. options.ComputeOptions
  22. }
  23. var (
  24. opts SOptions
  25. )
  26. func GetOptions() *SOptions {
  27. return &opts
  28. }
  29. func Init() {
  30. common_options.ParseOptions(&opts, os.Args, "apimap.conf", "apimap")
  31. options.Options = opts.ComputeOptions
  32. }
  33. func OnOptionsChange(oldO, newO interface{}) bool {
  34. oldOpts := oldO.(*SOptions)
  35. newOpts := newO.(*SOptions)
  36. changed := false
  37. if common_options.OnCommonOptionsChange(&oldOpts.CommonOptions, &newOpts.CommonOptions) {
  38. changed = true
  39. }
  40. if common_options.OnDBOptionsChange(&oldOpts.DBOptions, &newOpts.DBOptions) {
  41. changed = true
  42. }
  43. options.Options = newOpts.ComputeOptions
  44. return changed
  45. }