comet_backup_ruby_sdk 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +25 -0
  3. data/Gemfile +15 -0
  4. data/LICENSE +7 -0
  5. data/README.md +81 -0
  6. data/Rakefile +22 -0
  7. data/comet_backup_ruby_sdk.gemspec +35 -0
  8. data/lib/comet/api_response_error.rb +27 -0
  9. data/lib/comet/comet_server.rb +2926 -0
  10. data/lib/comet/definitions.rb +550 -0
  11. data/lib/comet/models/add_bucket_response_message.rb +92 -0
  12. data/lib/comet/models/admin_account_properties_response.rb +76 -0
  13. data/lib/comet/models/admin_resource_response.rb +84 -0
  14. data/lib/comet/models/admin_security_options.rb +139 -0
  15. data/lib/comet/models/admin_u2fregistration.rb +84 -0
  16. data/lib/comet/models/admin_user_permissions.rb +102 -0
  17. data/lib/comet/models/available_download.rb +84 -0
  18. data/lib/comet/models/azure_destination_location.rb +102 -0
  19. data/lib/comet/models/b2destination_location.rb +110 -0
  20. data/lib/comet/models/b2storage_extra_info.rb +77 -0
  21. data/lib/comet/models/b2transaction_totals.rb +80 -0
  22. data/lib/comet/models/backup_job_advanced_options.rb +98 -0
  23. data/lib/comet/models/backup_job_detail.rb +199 -0
  24. data/lib/comet/models/backup_job_progress.rb +92 -0
  25. data/lib/comet/models/backup_rule_config.rb +188 -0
  26. data/lib/comet/models/backup_rule_event_triggers.rb +78 -0
  27. data/lib/comet/models/branding_options.rb +283 -0
  28. data/lib/comet/models/branding_properties.rb +245 -0
  29. data/lib/comet/models/browse_disk_drives_response.rb +91 -0
  30. data/lib/comet/models/browse_edbresponse.rb +91 -0
  31. data/lib/comet/models/browse_hvresponse.rb +91 -0
  32. data/lib/comet/models/browse_vssresponse.rb +91 -0
  33. data/lib/comet/models/bucket_properties.rb +89 -0
  34. data/lib/comet/models/bucket_usage_info.rb +91 -0
  35. data/lib/comet/models/comet_apiresponse_message.rb +76 -0
  36. data/lib/comet/models/comet_destination_location.rb +86 -0
  37. data/lib/comet/models/constellation_check_report.rb +89 -0
  38. data/lib/comet/models/constellation_stats.rb +86 -0
  39. data/lib/comet/models/constellation_status_apiresponse.rb +109 -0
  40. data/lib/comet/models/content_measurement.rb +89 -0
  41. data/lib/comet/models/content_measurement_component.rb +84 -0
  42. data/lib/comet/models/create_group_policy_response.rb +84 -0
  43. data/lib/comet/models/default_email_report_policy.rb +83 -0
  44. data/lib/comet/models/destination_config.rb +465 -0
  45. data/lib/comet/models/destination_location.rb +365 -0
  46. data/lib/comet/models/destination_statistics.rb +102 -0
  47. data/lib/comet/models/device_config.rb +96 -0
  48. data/lib/comet/models/disk_drive.rb +153 -0
  49. data/lib/comet/models/dispatcher_admin_sources_response.rb +92 -0
  50. data/lib/comet/models/dispatcher_stored_objects_response.rb +91 -0
  51. data/lib/comet/models/dispatcher_vault_snapshots_response.rb +91 -0
  52. data/lib/comet/models/edbfile_info.rb +92 -0
  53. data/lib/comet/models/email_options.rb +140 -0
  54. data/lib/comet/models/email_report_config.rb +90 -0
  55. data/lib/comet/models/email_report_generated_preview.rb +100 -0
  56. data/lib/comet/models/extra_file_exclusion.rb +82 -0
  57. data/lib/comet/models/ftpdestination_location.rb +124 -0
  58. data/lib/comet/models/get_group_policy_response.rb +91 -0
  59. data/lib/comet/models/get_profile_and_hash_response_message.rb +91 -0
  60. data/lib/comet/models/get_profile_hash_response_message.rb +84 -0
  61. data/lib/comet/models/group_policy.rb +83 -0
  62. data/lib/comet/models/hyper_vmachine_info.rb +78 -0
  63. data/lib/comet/models/live_user_connection.rb +125 -0
  64. data/lib/comet/models/local_destination_location.rb +92 -0
  65. data/lib/comet/models/mac_oscode_sign_properties.rb +113 -0
  66. data/lib/comet/models/mongo_dbconnection.rb +211 -0
  67. data/lib/comet/models/new_bucket_detail.rb +78 -0
  68. data/lib/comet/models/news_entry.rb +76 -0
  69. data/lib/comet/models/osinfo.rb +92 -0
  70. data/lib/comet/models/partition.rb +148 -0
  71. data/lib/comet/models/private_branding_properties.rb +185 -0
  72. data/lib/comet/models/protected_item_engine_type_policy.rb +84 -0
  73. data/lib/comet/models/public_branding_properties.rb +122 -0
  74. data/lib/comet/models/remote_server_address.rb +135 -0
  75. data/lib/comet/models/remote_storage_option.rb +147 -0
  76. data/lib/comet/models/replicator_state_apiresponse.rb +138 -0
  77. data/lib/comet/models/request_storage_vault_response_message.rb +84 -0
  78. data/lib/comet/models/restore_job_advanced_options.rb +104 -0
  79. data/lib/comet/models/retention_policy.rb +83 -0
  80. data/lib/comet/models/retention_range.rb +110 -0
  81. data/lib/comet/models/s3destination_location.rb +114 -0
  82. data/lib/comet/models/schedule_config.rb +82 -0
  83. data/lib/comet/models/search_clause.rb +111 -0
  84. data/lib/comet/models/server_config_options_branding_fragment.rb +69 -0
  85. data/lib/comet/models/server_config_options_software_build_role_fragment.rb +69 -0
  86. data/lib/comet/models/server_meta_version_info.rb +208 -0
  87. data/lib/comet/models/session_key_regenerated_response.rb +92 -0
  88. data/lib/comet/models/sftpdestination_location.rb +122 -0
  89. data/lib/comet/models/size_measurement.rb +80 -0
  90. data/lib/comet/models/software_build_role_options.rb +74 -0
  91. data/lib/comet/models/software_update_news_response.rb +102 -0
  92. data/lib/comet/models/source_basic_info.rb +93 -0
  93. data/lib/comet/models/source_config.rb +172 -0
  94. data/lib/comet/models/source_statistics.rb +69 -0
  95. data/lib/comet/models/spanned_destination_location.rb +77 -0
  96. data/lib/comet/models/spanned_storage_extra_info.rb +77 -0
  97. data/lib/comet/models/sshconnection.rb +114 -0
  98. data/lib/comet/models/stat_result.rb +86 -0
  99. data/lib/comet/models/storage_free_space_info.rb +98 -0
  100. data/lib/comet/models/storage_vault_provider_policy.rb +82 -0
  101. data/lib/comet/models/stored_object.rb +130 -0
  102. data/lib/comet/models/streamable_event.rb +74 -0
  103. data/lib/comet/models/swift_destination_location.rb +192 -0
  104. data/lib/comet/models/test_response.rb +82 -0
  105. data/lib/comet/models/totp_regenerated_response.rb +100 -0
  106. data/lib/comet/models/u2fregister_request.rb +78 -0
  107. data/lib/comet/models/u2fregistered_key.rb +86 -0
  108. data/lib/comet/models/u2fregistration_challenge_response.rb +122 -0
  109. data/lib/comet/models/u2fsign_request.rb +101 -0
  110. data/lib/comet/models/u2fsign_response.rb +94 -0
  111. data/lib/comet/models/uninstall_config.rb +74 -0
  112. data/lib/comet/models/update_campaign_device_status.rb +68 -0
  113. data/lib/comet/models/update_campaign_options.rb +86 -0
  114. data/lib/comet/models/update_campaign_properties.rb +100 -0
  115. data/lib/comet/models/update_campaign_status.rb +115 -0
  116. data/lib/comet/models/update_campaign_status_device_entry.rb +84 -0
  117. data/lib/comet/models/user_custom_email_settings.rb +77 -0
  118. data/lib/comet/models/user_on_server.rb +76 -0
  119. data/lib/comet/models/user_policy.rb +304 -0
  120. data/lib/comet/models/user_profile_config.rb +300 -0
  121. data/lib/comet/models/user_profile_fragment.rb +70 -0
  122. data/lib/comet/models/vault_snapshot.rb +84 -0
  123. data/lib/comet/models/vsscomponent.rb +92 -0
  124. data/lib/comet/models/vsswriter_info.rb +85 -0
  125. data/lib/comet/models/web_interface_branding_properties.rb +100 -0
  126. data/lib/comet/models/webhook_option.rb +84 -0
  127. data/lib/comet/models/win_smbauth.rb +92 -0
  128. data/lib/comet/models/windows_code_sign_properties.rb +130 -0
  129. data/lib/comet_backup_ruby_sdk.rb +130 -0
  130. metadata +227 -0
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # UpdateCampaignStatus is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class UpdateCampaignStatus
16
+
17
+ # @type [Boolean] active
18
+ attr_accessor :active
19
+
20
+ # @type [Boolean] upgrade_older
21
+ attr_accessor :upgrade_older
22
+
23
+ # @type [Boolean] reinstall_current_ver
24
+ attr_accessor :reinstall_current_ver
25
+
26
+ # @type [Boolean] downgrade_newer
27
+ attr_accessor :downgrade_newer
28
+
29
+ # @type [Number] start_time
30
+ attr_accessor :start_time
31
+
32
+ # @type [String] target_version
33
+ attr_accessor :target_version
34
+
35
+ # @type [Array<Comet::UpdateCampaignStatusDeviceEntry>] devices
36
+ attr_accessor :devices
37
+
38
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
39
+ attr_accessor :unknown_json_fields
40
+
41
+ def initialize
42
+ @devices = []
43
+ @unknown_json_fields = {}
44
+ end
45
+
46
+ # @param [String] json_string The complete object in JSON format
47
+ def from_json(json_string)
48
+ raise TypeError 'expected string' unless json_string.is_a? String
49
+
50
+ from_hash(JSON.parse(json_string))
51
+ end
52
+
53
+ # @param [Hash] obj The complete object as a Ruby hash
54
+ def from_hash(obj)
55
+ raise TypeError 'expected hash' unless obj.is_a? Hash
56
+
57
+ obj.each do |k, v|
58
+ case k
59
+ when 'Active'
60
+ @active = v
61
+ when 'UpgradeOlder'
62
+ @upgrade_older = v
63
+ when 'ReinstallCurrentVer'
64
+ @reinstall_current_ver = v
65
+ when 'DowngradeNewer'
66
+ @downgrade_newer = v
67
+ when 'StartTime'
68
+ @start_time = v
69
+ when 'TargetVersion'
70
+ raise TypeError 'expected string' unless v.is_a? String
71
+
72
+ @target_version = v
73
+ when 'Devices'
74
+ if v.nil?
75
+ @devices = []
76
+ else
77
+ @devices = Array.new(v.length)
78
+ v.each_with_index do |v1, i1|
79
+ @devices[i1] = Comet::UpdateCampaignStatusDeviceEntry.new
80
+ @devices[i1].from_hash(v1)
81
+ end
82
+ end
83
+ else
84
+ @unknown_json_fields[k] = v
85
+ end
86
+ end
87
+ end
88
+
89
+ # @return [Hash] The complete object as a Ruby hash
90
+ def to_hash
91
+ ret = {}
92
+ ret['Active'] = @active
93
+ ret['UpgradeOlder'] = @upgrade_older
94
+ ret['ReinstallCurrentVer'] = @reinstall_current_ver
95
+ ret['DowngradeNewer'] = @downgrade_newer
96
+ ret['StartTime'] = @start_time
97
+ ret['TargetVersion'] = @target_version
98
+ ret['Devices'] = @devices
99
+ @unknown_json_fields.each do |k, v|
100
+ ret[k] = v
101
+ end
102
+ ret
103
+ end
104
+
105
+ # @return [Hash] The complete object as a Ruby hash
106
+ def to_h
107
+ to_hash
108
+ end
109
+
110
+ # @return [String] The complete object as a JSON string
111
+ def to_json(options = {})
112
+ to_hash.to_json(options)
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # UpdateCampaignStatusDeviceEntry is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class UpdateCampaignStatusDeviceEntry
16
+
17
+ # @type [String] username
18
+ attr_accessor :username
19
+
20
+ # @type [String] device_id
21
+ attr_accessor :device_id
22
+
23
+ # @type [Number] status
24
+ attr_accessor :status
25
+
26
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
27
+ attr_accessor :unknown_json_fields
28
+
29
+ def initialize
30
+ @unknown_json_fields = {}
31
+ end
32
+
33
+ # @param [String] json_string The complete object in JSON format
34
+ def from_json(json_string)
35
+ raise TypeError 'expected string' unless json_string.is_a? String
36
+
37
+ from_hash(JSON.parse(json_string))
38
+ end
39
+
40
+ # @param [Hash] obj The complete object as a Ruby hash
41
+ def from_hash(obj)
42
+ raise TypeError 'expected hash' unless obj.is_a? Hash
43
+
44
+ obj.each do |k, v|
45
+ case k
46
+ when 'Username'
47
+ raise TypeError 'expected string' unless v.is_a? String
48
+
49
+ @username = v
50
+ when 'DeviceID'
51
+ raise TypeError 'expected string' unless v.is_a? String
52
+
53
+ @device_id = v
54
+ when 'Status'
55
+ @status = v
56
+ else
57
+ @unknown_json_fields[k] = v
58
+ end
59
+ end
60
+ end
61
+
62
+ # @return [Hash] The complete object as a Ruby hash
63
+ def to_hash
64
+ ret = {}
65
+ ret['Username'] = @username
66
+ ret['DeviceID'] = @device_id
67
+ ret['Status'] = @status
68
+ @unknown_json_fields.each do |k, v|
69
+ ret[k] = v
70
+ end
71
+ ret
72
+ end
73
+
74
+ # @return [Hash] The complete object as a Ruby hash
75
+ def to_h
76
+ to_hash
77
+ end
78
+
79
+ # @return [String] The complete object as a JSON string
80
+ def to_json(options = {})
81
+ to_hash.to_json(options)
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # UserCustomEmailSettings is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class UserCustomEmailSettings
16
+
17
+ # @type [Array<Comet::EmailReportConfig>] reports
18
+ attr_accessor :reports
19
+
20
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
21
+ attr_accessor :unknown_json_fields
22
+
23
+ def initialize
24
+ @reports = []
25
+ @unknown_json_fields = {}
26
+ end
27
+
28
+ # @param [String] json_string The complete object in JSON format
29
+ def from_json(json_string)
30
+ raise TypeError 'expected string' unless json_string.is_a? String
31
+
32
+ from_hash(JSON.parse(json_string))
33
+ end
34
+
35
+ # @param [Hash] obj The complete object as a Ruby hash
36
+ def from_hash(obj)
37
+ raise TypeError 'expected hash' unless obj.is_a? Hash
38
+
39
+ obj.each do |k, v|
40
+ case k
41
+ when 'Reports'
42
+ if v.nil?
43
+ @reports = []
44
+ else
45
+ @reports = Array.new(v.length)
46
+ v.each_with_index do |v1, i1|
47
+ @reports[i1] = Comet::EmailReportConfig.new
48
+ @reports[i1].from_hash(v1)
49
+ end
50
+ end
51
+ else
52
+ @unknown_json_fields[k] = v
53
+ end
54
+ end
55
+ end
56
+
57
+ # @return [Hash] The complete object as a Ruby hash
58
+ def to_hash
59
+ ret = {}
60
+ ret['Reports'] = @reports
61
+ @unknown_json_fields.each do |k, v|
62
+ ret[k] = v
63
+ end
64
+ ret
65
+ end
66
+
67
+ # @return [Hash] The complete object as a Ruby hash
68
+ def to_h
69
+ to_hash
70
+ end
71
+
72
+ # @return [String] The complete object as a JSON string
73
+ def to_json(options = {})
74
+ to_hash.to_json(options)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # UserOnServer is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class UserOnServer
16
+
17
+ # @type [Number] server_id
18
+ attr_accessor :server_id
19
+
20
+ # @type [String] username
21
+ attr_accessor :username
22
+
23
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
24
+ attr_accessor :unknown_json_fields
25
+
26
+ def initialize
27
+ @unknown_json_fields = {}
28
+ end
29
+
30
+ # @param [String] json_string The complete object in JSON format
31
+ def from_json(json_string)
32
+ raise TypeError 'expected string' unless json_string.is_a? String
33
+
34
+ from_hash(JSON.parse(json_string))
35
+ end
36
+
37
+ # @param [Hash] obj The complete object as a Ruby hash
38
+ def from_hash(obj)
39
+ raise TypeError 'expected hash' unless obj.is_a? Hash
40
+
41
+ obj.each do |k, v|
42
+ case k
43
+ when 'ServerID'
44
+ @server_id = v
45
+ when 'Username'
46
+ raise TypeError 'expected string' unless v.is_a? String
47
+
48
+ @username = v
49
+ else
50
+ @unknown_json_fields[k] = v
51
+ end
52
+ end
53
+ end
54
+
55
+ # @return [Hash] The complete object as a Ruby hash
56
+ def to_hash
57
+ ret = {}
58
+ ret['ServerID'] = @server_id
59
+ ret['Username'] = @username
60
+ @unknown_json_fields.each do |k, v|
61
+ ret[k] = v
62
+ end
63
+ ret
64
+ end
65
+
66
+ # @return [Hash] The complete object as a Ruby hash
67
+ def to_h
68
+ to_hash
69
+ end
70
+
71
+ # @return [String] The complete object as a JSON string
72
+ def to_json(options = {})
73
+ to_hash.to_json(options)
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,304 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # UserPolicy is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class UserPolicy
16
+
17
+ # @type [Boolean] prevent_request_storage_vault
18
+ attr_accessor :prevent_request_storage_vault
19
+
20
+ # @type [Boolean] prevent_add_custom_storage_vault
21
+ attr_accessor :prevent_add_custom_storage_vault
22
+
23
+ # @type [Boolean] prevent_edit_storage_vault
24
+ attr_accessor :prevent_edit_storage_vault
25
+
26
+ # @type [Boolean] hide_cloud_storage_branding
27
+ attr_accessor :hide_cloud_storage_branding
28
+
29
+ # @type [Boolean] prevent_delete_storage_vault
30
+ attr_accessor :prevent_delete_storage_vault
31
+
32
+ # @type [Comet::StorageVaultProviderPolicy] storage_vault_providers
33
+ attr_accessor :storage_vault_providers
34
+
35
+ # @type [Boolean] prevent_new_protected_item
36
+ attr_accessor :prevent_new_protected_item
37
+
38
+ # @type [Boolean] prevent_edit_protected_item
39
+ attr_accessor :prevent_edit_protected_item
40
+
41
+ # @type [Boolean] prevent_delete_protected_item
42
+ attr_accessor :prevent_delete_protected_item
43
+
44
+ # @type [Comet::ProtectedItemEngineTypePolicy] protected_item_engine_types
45
+ attr_accessor :protected_item_engine_types
46
+
47
+ # @type [Array<Comet::ExtraFileExclusion>] file_and_folder_mandatory_exclusions
48
+ attr_accessor :file_and_folder_mandatory_exclusions
49
+
50
+ # @type [Number] mode_schedule_skip_already_running
51
+ attr_accessor :mode_schedule_skip_already_running
52
+
53
+ # @type [Number] mode_admin_reset_password
54
+ attr_accessor :mode_admin_reset_password
55
+
56
+ # @type [Number] mode_admin_view_filenames
57
+ attr_accessor :mode_admin_view_filenames
58
+
59
+ # @type [Number] mode_require_user_reset_password
60
+ attr_accessor :mode_require_user_reset_password
61
+
62
+ # @type [Boolean] prevent_delete_single_snapshots
63
+ attr_accessor :prevent_delete_single_snapshots
64
+
65
+ # @type [Boolean] prevent_change_account_password
66
+ attr_accessor :prevent_change_account_password
67
+
68
+ # @type [Boolean] prevent_change_email_settings
69
+ attr_accessor :prevent_change_email_settings
70
+
71
+ # @type [Boolean] prevent_change_account_name
72
+ attr_accessor :prevent_change_account_name
73
+
74
+ # @type [Boolean] prevent_open_app_ui
75
+ attr_accessor :prevent_open_app_ui
76
+
77
+ # @type [Boolean] require_password_open_app_ui
78
+ attr_accessor :require_password_open_app_ui
79
+
80
+ # @type [Boolean] hide_app_import
81
+ attr_accessor :hide_app_import
82
+
83
+ # @type [Boolean] hide_app_version
84
+ attr_accessor :hide_app_version
85
+
86
+ # @type [Boolean] prevent_open_web_ui
87
+ attr_accessor :prevent_open_web_ui
88
+
89
+ # @type [Boolean] prevent_view_device_names
90
+ attr_accessor :prevent_view_device_names
91
+
92
+ # @type [Comet::DefaultEmailReportPolicy] default_email_reports
93
+ attr_accessor :default_email_reports
94
+
95
+ # @type [Comet::RetentionPolicy] default_storage_vault_retention
96
+ attr_accessor :default_storage_vault_retention
97
+
98
+ # @type [Boolean] enforce_storage_vault_retention
99
+ attr_accessor :enforce_storage_vault_retention
100
+
101
+ # @type [Boolean] prevent_protected_item_retention
102
+ attr_accessor :prevent_protected_item_retention
103
+
104
+ # @type [Hash{String => Comet::SourceConfig}] default_sources
105
+ attr_accessor :default_sources
106
+
107
+ # @type [Hash{String => Comet::BackupRuleConfig}] default_sources_backup_rules
108
+ attr_accessor :default_sources_backup_rules
109
+
110
+ # @type [Hash{String => Comet::BackupRuleConfig}] default_backup_rules
111
+ attr_accessor :default_backup_rules
112
+
113
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
114
+ attr_accessor :unknown_json_fields
115
+
116
+ def initialize
117
+ @file_and_folder_mandatory_exclusions = []
118
+ @default_sources = {}
119
+ @default_sources_backup_rules = {}
120
+ @default_backup_rules = {}
121
+ @unknown_json_fields = {}
122
+ end
123
+
124
+ # @param [String] json_string The complete object in JSON format
125
+ def from_json(json_string)
126
+ raise TypeError 'expected string' unless json_string.is_a? String
127
+
128
+ from_hash(JSON.parse(json_string))
129
+ end
130
+
131
+ # @param [Hash] obj The complete object as a Ruby hash
132
+ def from_hash(obj)
133
+ raise TypeError 'expected hash' unless obj.is_a? Hash
134
+
135
+ obj.each do |k, v|
136
+ case k
137
+ when 'PreventRequestStorageVault'
138
+ @prevent_request_storage_vault = v
139
+ when 'PreventAddCustomStorageVault'
140
+ @prevent_add_custom_storage_vault = v
141
+ when 'PreventEditStorageVault'
142
+ @prevent_edit_storage_vault = v
143
+ when 'HideCloudStorageBranding'
144
+ @hide_cloud_storage_branding = v
145
+ when 'PreventDeleteStorageVault'
146
+ @prevent_delete_storage_vault = v
147
+ when 'StorageVaultProviders'
148
+ @storage_vault_providers = Comet::StorageVaultProviderPolicy.new
149
+ @storage_vault_providers.from_hash(v)
150
+ when 'PreventNewProtectedItem'
151
+ @prevent_new_protected_item = v
152
+ when 'PreventEditProtectedItem'
153
+ @prevent_edit_protected_item = v
154
+ when 'PreventDeleteProtectedItem'
155
+ @prevent_delete_protected_item = v
156
+ when 'ProtectedItemEngineTypes'
157
+ @protected_item_engine_types = Comet::ProtectedItemEngineTypePolicy.new
158
+ @protected_item_engine_types.from_hash(v)
159
+ when 'FileAndFolderMandatoryExclusions'
160
+ if v.nil?
161
+ @file_and_folder_mandatory_exclusions = []
162
+ else
163
+ @file_and_folder_mandatory_exclusions = Array.new(v.length)
164
+ v.each_with_index do |v1, i1|
165
+ @file_and_folder_mandatory_exclusions[i1] = Comet::ExtraFileExclusion.new
166
+ @file_and_folder_mandatory_exclusions[i1].from_hash(v1)
167
+ end
168
+ end
169
+ when 'ModeScheduleSkipAlreadyRunning'
170
+ @mode_schedule_skip_already_running = v
171
+ when 'ModeAdminResetPassword'
172
+ @mode_admin_reset_password = v
173
+ when 'ModeAdminViewFilenames'
174
+ @mode_admin_view_filenames = v
175
+ when 'ModeRequireUserResetPassword'
176
+ @mode_require_user_reset_password = v
177
+ when 'PreventDeleteSingleSnapshots'
178
+ @prevent_delete_single_snapshots = v
179
+ when 'PreventChangeAccountPassword'
180
+ @prevent_change_account_password = v
181
+ when 'PreventChangeEmailSettings'
182
+ @prevent_change_email_settings = v
183
+ when 'PreventChangeAccountName'
184
+ @prevent_change_account_name = v
185
+ when 'PreventOpenAppUI'
186
+ @prevent_open_app_ui = v
187
+ when 'RequirePasswordOpenAppUI'
188
+ @require_password_open_app_ui = v
189
+ when 'HideAppImport'
190
+ @hide_app_import = v
191
+ when 'HideAppVersion'
192
+ @hide_app_version = v
193
+ when 'PreventOpenWebUI'
194
+ @prevent_open_web_ui = v
195
+ when 'PreventViewDeviceNames'
196
+ @prevent_view_device_names = v
197
+ when 'DefaultEmailReports'
198
+ @default_email_reports = Comet::DefaultEmailReportPolicy.new
199
+ @default_email_reports.from_hash(v)
200
+ when 'DefaultStorageVaultRetention'
201
+ @default_storage_vault_retention = Comet::RetentionPolicy.new
202
+ @default_storage_vault_retention.from_hash(v)
203
+ when 'EnforceStorageVaultRetention'
204
+ @enforce_storage_vault_retention = v
205
+ when 'PreventProtectedItemRetention'
206
+ @prevent_protected_item_retention = v
207
+ when 'DefaultSources'
208
+ @default_sources = {}
209
+ if v.nil?
210
+ @default_sources = {}
211
+ else
212
+ v.each do |k1, v1|
213
+ @default_sources[k1] = Comet::SourceConfig.new
214
+ @default_sources[k1].from_hash(v1)
215
+ end
216
+ end
217
+ when 'DefaultSourcesBackupRules'
218
+ @default_sources_backup_rules = {}
219
+ if v.nil?
220
+ @default_sources_backup_rules = {}
221
+ else
222
+ v.each do |k1, v1|
223
+ @default_sources_backup_rules[k1] = Comet::BackupRuleConfig.new
224
+ @default_sources_backup_rules[k1].from_hash(v1)
225
+ end
226
+ end
227
+ when 'DefaultBackupRules'
228
+ @default_backup_rules = {}
229
+ if v.nil?
230
+ @default_backup_rules = {}
231
+ else
232
+ v.each do |k1, v1|
233
+ @default_backup_rules[k1] = Comet::BackupRuleConfig.new
234
+ @default_backup_rules[k1].from_hash(v1)
235
+ end
236
+ end
237
+ else
238
+ @unknown_json_fields[k] = v
239
+ end
240
+ end
241
+ end
242
+
243
+ # @return [Hash] The complete object as a Ruby hash
244
+ def to_hash
245
+ ret = {}
246
+ ret['PreventRequestStorageVault'] = @prevent_request_storage_vault
247
+ ret['PreventAddCustomStorageVault'] = @prevent_add_custom_storage_vault
248
+ ret['PreventEditStorageVault'] = @prevent_edit_storage_vault
249
+ ret['HideCloudStorageBranding'] = @hide_cloud_storage_branding
250
+ ret['PreventDeleteStorageVault'] = @prevent_delete_storage_vault
251
+ ret['StorageVaultProviders'] = @storage_vault_providers
252
+ ret['PreventNewProtectedItem'] = @prevent_new_protected_item
253
+ ret['PreventEditProtectedItem'] = @prevent_edit_protected_item
254
+ ret['PreventDeleteProtectedItem'] = @prevent_delete_protected_item
255
+ ret['ProtectedItemEngineTypes'] = @protected_item_engine_types
256
+ unless @file_and_folder_mandatory_exclusions.nil?
257
+ ret['FileAndFolderMandatoryExclusions'] = @file_and_folder_mandatory_exclusions
258
+ end
259
+ unless @mode_schedule_skip_already_running.nil?
260
+ ret['ModeScheduleSkipAlreadyRunning'] = @mode_schedule_skip_already_running
261
+ end
262
+ unless @mode_admin_reset_password.nil?
263
+ ret['ModeAdminResetPassword'] = @mode_admin_reset_password
264
+ end
265
+ unless @mode_admin_view_filenames.nil?
266
+ ret['ModeAdminViewFilenames'] = @mode_admin_view_filenames
267
+ end
268
+ unless @mode_require_user_reset_password.nil?
269
+ ret['ModeRequireUserResetPassword'] = @mode_require_user_reset_password
270
+ end
271
+ ret['PreventDeleteSingleSnapshots'] = @prevent_delete_single_snapshots
272
+ ret['PreventChangeAccountPassword'] = @prevent_change_account_password
273
+ ret['PreventChangeEmailSettings'] = @prevent_change_email_settings
274
+ ret['PreventChangeAccountName'] = @prevent_change_account_name
275
+ ret['PreventOpenAppUI'] = @prevent_open_app_ui
276
+ ret['RequirePasswordOpenAppUI'] = @require_password_open_app_ui
277
+ ret['HideAppImport'] = @hide_app_import
278
+ ret['HideAppVersion'] = @hide_app_version
279
+ ret['PreventOpenWebUI'] = @prevent_open_web_ui
280
+ ret['PreventViewDeviceNames'] = @prevent_view_device_names
281
+ ret['DefaultEmailReports'] = @default_email_reports
282
+ ret['DefaultStorageVaultRetention'] = @default_storage_vault_retention
283
+ ret['EnforceStorageVaultRetention'] = @enforce_storage_vault_retention
284
+ ret['PreventProtectedItemRetention'] = @prevent_protected_item_retention
285
+ ret['DefaultSources'] = @default_sources
286
+ ret['DefaultSourcesBackupRules'] = @default_sources_backup_rules
287
+ ret['DefaultBackupRules'] = @default_backup_rules
288
+ @unknown_json_fields.each do |k, v|
289
+ ret[k] = v
290
+ end
291
+ ret
292
+ end
293
+
294
+ # @return [Hash] The complete object as a Ruby hash
295
+ def to_h
296
+ to_hash
297
+ end
298
+
299
+ # @return [String] The complete object as a JSON string
300
+ def to_json(options = {})
301
+ to_hash.to_json(options)
302
+ end
303
+ end
304
+ end