ruby-jss 1.2.6 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ruby-jss might be problematic. Click here for more details.

Files changed (250) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +189 -1
  3. data/README.md +1 -1
  4. data/bin/cgrouper +1 -1
  5. data/bin/jamfHelperBackgrounder +1 -1
  6. data/bin/netseg-update +1 -1
  7. data/data/ruby-jss.conf.example +1 -1
  8. data/lib/jamf.rb +1 -1
  9. data/lib/jamf/api/abstract_classes/advanced_search.rb +1 -1
  10. data/lib/jamf/api/abstract_classes/collection_resource.rb +17 -9
  11. data/lib/jamf/api/abstract_classes/generic_reference.rb +1 -1
  12. data/lib/jamf/api/abstract_classes/json_object.rb +2 -2
  13. data/lib/jamf/api/abstract_classes/prestage.rb +2 -2
  14. data/lib/jamf/api/abstract_classes/prestage_skip_setup_items.rb +1 -1
  15. data/lib/jamf/api/abstract_classes/resource.rb +1 -1
  16. data/lib/jamf/api/abstract_classes/singleton_resource.rb +1 -1
  17. data/lib/jamf/api/attribute_classes/ip_address.rb +1 -1
  18. data/lib/jamf/api/attribute_classes/timestamp.rb +1 -1
  19. data/lib/jamf/api/connection.rb +9 -5
  20. data/lib/jamf/api/connection/api_error.rb +1 -1
  21. data/lib/jamf/api/connection/api_error_styleguide.rb +1 -1
  22. data/lib/jamf/api/connection/token.rb +22 -2
  23. data/lib/jamf/api/json_objects/account_prefs.rb +1 -1
  24. data/lib/jamf/api/json_objects/android_details.rb +1 -1
  25. data/lib/jamf/api/json_objects/appletv_details.rb +1 -1
  26. data/lib/jamf/api/json_objects/attachment.rb +1 -1
  27. data/lib/jamf/api/json_objects/cellular_network.rb +1 -1
  28. data/lib/jamf/api/json_objects/change_log_entry.rb +1 -1
  29. data/lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb +1 -1
  30. data/lib/jamf/api/json_objects/country.rb +1 -1
  31. data/lib/jamf/api/json_objects/criterion.rb +1 -1
  32. data/lib/jamf/api/json_objects/device_enrollment_device.rb +1 -1
  33. data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +1 -1
  34. data/lib/jamf/api/json_objects/extension_attribute_value.rb +1 -1
  35. data/lib/jamf/api/json_objects/installed_application.rb +1 -1
  36. data/lib/jamf/api/json_objects/installed_certificate.rb +1 -1
  37. data/lib/jamf/api/json_objects/installed_configuration_profile.rb +1 -1
  38. data/lib/jamf/api/json_objects/installed_ebook.rb +1 -1
  39. data/lib/jamf/api/json_objects/installed_provisioning_profile.rb +1 -1
  40. data/lib/jamf/api/json_objects/inventory_preload_extension_attribute.rb +1 -1
  41. data/lib/jamf/api/json_objects/ios_details.rb +1 -1
  42. data/lib/jamf/api/json_objects/location.rb +1 -1
  43. data/lib/jamf/api/json_objects/md_prestage_name.rb +1 -1
  44. data/lib/jamf/api/json_objects/md_prestage_names.rb +1 -1
  45. data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +1 -1
  46. data/lib/jamf/api/json_objects/mobile_device_details.rb +1 -1
  47. data/lib/jamf/api/json_objects/mobile_device_security.rb +1 -1
  48. data/lib/jamf/api/json_objects/prestage_assignment.rb +1 -1
  49. data/lib/jamf/api/json_objects/prestage_location.rb +1 -1
  50. data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +1 -1
  51. data/lib/jamf/api/json_objects/prestage_scope.rb +1 -1
  52. data/lib/jamf/api/json_objects/prestage_sync_status.rb +1 -1
  53. data/lib/jamf/api/json_objects/purchasing_data.rb +1 -1
  54. data/lib/jamf/api/mixins/abstract.rb +1 -1
  55. data/lib/jamf/api/mixins/bulk_deletable.rb +1 -1
  56. data/lib/jamf/api/mixins/change_log.rb +1 -1
  57. data/lib/jamf/api/mixins/extendable.rb +1 -1
  58. data/lib/jamf/api/mixins/immutable.rb +1 -1
  59. data/lib/jamf/api/mixins/locatable.rb +1 -1
  60. data/lib/jamf/api/mixins/lockable.rb +1 -1
  61. data/lib/jamf/api/mixins/referable.rb +1 -1
  62. data/lib/jamf/api/mixins/searchable.rb +1 -1
  63. data/lib/jamf/api/mixins/uncreatable.rb +1 -1
  64. data/lib/jamf/api/mixins/undeletable.rb +1 -1
  65. data/lib/jamf/api/resources/collection_resources/account.rb +1 -1
  66. data/lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb +1 -1
  67. data/lib/jamf/api/resources/collection_resources/advanced_user_search.rb +1 -1
  68. data/lib/jamf/api/resources/collection_resources/building.rb +1 -1
  69. data/lib/jamf/api/resources/collection_resources/category.rb +1 -1
  70. data/lib/jamf/api/resources/collection_resources/computer.rb +1 -1
  71. data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +1 -1
  72. data/lib/jamf/api/resources/collection_resources/department.rb +2 -2
  73. data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +4 -4
  74. data/lib/jamf/api/resources/collection_resources/extension_attribute.rb +1 -1
  75. data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +1 -1
  76. data/lib/jamf/api/resources/collection_resources/mobile_device.rb +1 -1
  77. data/lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb +1 -1
  78. data/lib/jamf/api/resources/collection_resources/script.rb +1 -1
  79. data/lib/jamf/api/resources/collection_resources/site.rb +1 -1
  80. data/lib/jamf/api/resources/collection_resources/time_zone.rb +1 -1
  81. data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +1 -1
  82. data/lib/jamf/api/resources/singleton_resources/authorization.rb +1 -1
  83. data/lib/jamf/api/resources/singleton_resources/client_checkin_settings.rb +1 -1
  84. data/lib/jamf/api/resources/singleton_resources/reenrollment_settings.rb +1 -1
  85. data/lib/jamf/client.rb +1 -1
  86. data/lib/jamf/client/jamf_binary.rb +1 -1
  87. data/lib/jamf/client/jamf_helper.rb +1 -1
  88. data/lib/jamf/client/management_action.rb +1 -1
  89. data/lib/jamf/compatibility.rb +1 -1
  90. data/lib/jamf/composer.rb +1 -1
  91. data/lib/jamf/configuration.rb +8 -10
  92. data/lib/jamf/exceptions.rb +1 -1
  93. data/lib/jamf/ruby_extensions.rb +2 -1
  94. data/lib/jamf/ruby_extensions/array.rb +2 -2
  95. data/lib/jamf/ruby_extensions/array/predicates.rb +1 -1
  96. data/lib/jamf/ruby_extensions/array/utils.rb +4 -4
  97. data/lib/jamf/ruby_extensions/dig.rb +52 -0
  98. data/lib/jamf/ruby_extensions/filetest.rb +1 -1
  99. data/lib/jamf/ruby_extensions/filetest/predicates.rb +1 -1
  100. data/lib/jamf/ruby_extensions/hash.rb +1 -1
  101. data/lib/jamf/ruby_extensions/hash/backports.rb +2 -2
  102. data/lib/jamf/ruby_extensions/ipaddr.rb +1 -1
  103. data/lib/jamf/ruby_extensions/ipaddr/utils.rb +1 -1
  104. data/lib/jamf/ruby_extensions/object.rb +1 -1
  105. data/lib/jamf/ruby_extensions/object/predicates.rb +1 -1
  106. data/lib/jamf/ruby_extensions/pathname.rb +1 -1
  107. data/lib/jamf/ruby_extensions/pathname/predicates.rb +1 -1
  108. data/lib/jamf/ruby_extensions/pathname/utils.rb +1 -1
  109. data/lib/jamf/ruby_extensions/string.rb +1 -1
  110. data/lib/jamf/ruby_extensions/string/backports.rb +1 -1
  111. data/lib/jamf/ruby_extensions/string/conversions.rb +1 -1
  112. data/lib/jamf/ruby_extensions/string/predicates.rb +14 -4
  113. data/lib/jamf/utility.rb +1 -1
  114. data/lib/jamf/validate.rb +1 -1
  115. data/lib/jamf/version.rb +2 -2
  116. data/lib/jpapi.rb +1 -1
  117. data/lib/jss-api.rb +1 -1
  118. data/lib/jss.rb +3 -1
  119. data/lib/jss/api_connection.rb +3 -30
  120. data/lib/jss/api_object.rb +23 -4
  121. data/lib/jss/api_object/account.rb +1 -1
  122. data/lib/jss/api_object/advanced_search.rb +28 -27
  123. data/lib/jss/api_object/advanced_search/advanced_computer_search.rb +1 -1
  124. data/lib/jss/api_object/advanced_search/advanced_mobile_device_search.rb +1 -1
  125. data/lib/jss/api_object/advanced_search/advanced_user_search.rb +1 -1
  126. data/lib/jss/api_object/app_store_country_codes.rb +298 -0
  127. data/lib/jss/api_object/building.rb +1 -1
  128. data/lib/jss/api_object/categorizable.rb +1 -1
  129. data/lib/jss/api_object/category.rb +1 -1
  130. data/lib/jss/api_object/computer.rb +12 -6
  131. data/lib/jss/api_object/computer/application_installs.rb +1 -1
  132. data/lib/jss/api_object/computer_invitation.rb +1 -1
  133. data/lib/jss/api_object/configuration_profile.rb +4 -2
  134. data/lib/jss/api_object/configuration_profile/mobile_device_configuration_profile.rb +1 -1
  135. data/lib/jss/api_object/configuration_profile/osx_configuration_profile.rb +1 -1
  136. data/lib/jss/api_object/creatable.rb +1 -1
  137. data/lib/jss/api_object/criteriable.rb +1 -1
  138. data/lib/jss/api_object/criteriable/criteria.rb +1 -1
  139. data/lib/jss/api_object/criteriable/criterion.rb +1 -1
  140. data/lib/jss/api_object/department.rb +1 -1
  141. data/lib/jss/api_object/directory_binding.rb +273 -0
  142. data/lib/jss/api_object/directory_binding_type.rb +90 -0
  143. data/lib/jss/api_object/directory_binding_type/active_directory.rb +502 -0
  144. data/lib/jss/api_object/directory_binding_type/admitmac.rb +525 -0
  145. data/lib/jss/api_object/directory_binding_type/centrify.rb +212 -0
  146. data/lib/jss/api_object/directory_binding_type/open_directory.rb +178 -0
  147. data/lib/jss/api_object/directory_binding_type/powerbroker_identity_services.rb +73 -0
  148. data/lib/jss/api_object/disk_encryption_configurations.rb +114 -0
  149. data/lib/jss/api_object/distribution_point.rb +96 -36
  150. data/lib/jss/api_object/dock_item.rb +137 -0
  151. data/lib/jss/api_object/ebook.rb +2 -3
  152. data/lib/jss/api_object/extendable.rb +67 -28
  153. data/lib/jss/api_object/extension_attribute.rb +5 -4
  154. data/lib/jss/api_object/extension_attribute/computer_extension_attribute.rb +1 -1
  155. data/lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb +1 -1
  156. data/lib/jss/api_object/extension_attribute/user_extension_attribute.rb +1 -1
  157. data/lib/jss/api_object/group.rb +1 -1
  158. data/lib/jss/api_object/group/computer_group.rb +1 -1
  159. data/lib/jss/api_object/group/mobile_device_group.rb +1 -1
  160. data/lib/jss/api_object/group/user_group.rb +1 -1
  161. data/lib/jss/api_object/ibeacon.rb +1 -1
  162. data/lib/jss/api_object/ldap_server.rb +1 -1
  163. data/lib/jss/api_object/locatable.rb +1 -1
  164. data/lib/jss/api_object/mac_application.rb +108 -9
  165. data/lib/jss/api_object/management_history.rb +1 -1
  166. data/lib/jss/api_object/management_history/audit_event.rb +1 -1
  167. data/lib/jss/api_object/management_history/casper_imaging_log.rb +1 -1
  168. data/lib/jss/api_object/management_history/casper_remote_log.rb +1 -1
  169. data/lib/jss/api_object/management_history/computer_usage_log.rb +1 -1
  170. data/lib/jss/api_object/management_history/ebook.rb +1 -1
  171. data/lib/jss/api_object/management_history/hashlike.rb +1 -1
  172. data/lib/jss/api_object/management_history/mac_app_store_app.rb +1 -1
  173. data/lib/jss/api_object/management_history/mdm_command.rb +1 -1
  174. data/lib/jss/api_object/management_history/mobile_device_app.rb +1 -1
  175. data/lib/jss/api_object/management_history/policy_log.rb +1 -1
  176. data/lib/jss/api_object/management_history/screen_sharing_log.rb +1 -1
  177. data/lib/jss/api_object/management_history/user_location_change.rb +1 -1
  178. data/lib/jss/api_object/matchable.rb +1 -1
  179. data/lib/jss/api_object/mdm.rb +1 -1
  180. data/lib/jss/api_object/mobile_device.rb +12 -6
  181. data/lib/jss/api_object/mobile_device_application.rb +13 -1
  182. data/lib/jss/api_object/netboot_server.rb +1 -1
  183. data/lib/jss/api_object/network_segment.rb +153 -59
  184. data/lib/jss/api_object/package.rb +106 -41
  185. data/lib/jss/api_object/patch_policy.rb +1 -1
  186. data/lib/jss/api_object/patch_source.rb +1 -1
  187. data/lib/jss/api_object/patch_source/patch_external_source.rb +1 -1
  188. data/lib/jss/api_object/patch_source/patch_internal_source.rb +1 -1
  189. data/lib/jss/api_object/patch_title.rb +1 -1
  190. data/lib/jss/api_object/patch_title/version.rb +1 -1
  191. data/lib/jss/api_object/peripheral.rb +1 -1
  192. data/lib/jss/api_object/peripheral_type.rb +1 -1
  193. data/lib/jss/api_object/policy.rb +492 -8
  194. data/lib/jss/api_object/printer.rb +440 -0
  195. data/lib/jss/api_object/purchasable.rb +1 -1
  196. data/lib/jss/api_object/removable_macaddr.rb +1 -1
  197. data/lib/jss/api_object/restricted_software.rb +1 -1
  198. data/lib/jss/api_object/scopable.rb +1 -1
  199. data/lib/jss/api_object/scopable/scope.rb +387 -72
  200. data/lib/jss/api_object/script.rb +1 -1
  201. data/lib/jss/api_object/self_servable.rb +24 -16
  202. data/lib/jss/api_object/self_servable/icon.rb +1 -1
  203. data/lib/jss/api_object/sitable.rb +1 -1
  204. data/lib/jss/api_object/site.rb +1 -1
  205. data/lib/jss/api_object/software_update_server.rb +1 -1
  206. data/lib/jss/api_object/updatable.rb +1 -1
  207. data/lib/jss/api_object/uploadable.rb +2 -2
  208. data/lib/jss/api_object/user.rb +43 -2
  209. data/lib/jss/api_object/vpp_account.rb +209 -0
  210. data/lib/jss/api_object/vppable.rb +170 -14
  211. data/lib/jss/api_object/webhook.rb +1 -1
  212. data/lib/jss/client.rb +1 -1
  213. data/lib/jss/client/jamf_binary.rb +1 -1
  214. data/lib/jss/client/jamf_helper.rb +1 -1
  215. data/lib/jss/client/management_action.rb +1 -1
  216. data/lib/jss/compatibility.rb +1 -1
  217. data/lib/jss/composer.rb +2 -2
  218. data/lib/jss/configuration.rb +1 -1
  219. data/lib/jss/db_connection.rb +1 -1
  220. data/lib/jss/exceptions.rb +1 -1
  221. data/lib/jss/ruby_extensions.rb +1 -1
  222. data/lib/jss/ruby_extensions/array.rb +1 -1
  223. data/lib/jss/ruby_extensions/filetest.rb +1 -1
  224. data/lib/jss/ruby_extensions/hash.rb +1 -1
  225. data/lib/jss/ruby_extensions/ipaddr.rb +1 -1
  226. data/lib/jss/ruby_extensions/pathname.rb +1 -1
  227. data/lib/jss/ruby_extensions/string.rb +1 -1
  228. data/lib/jss/ruby_extensions/string/backports.rb +1 -1
  229. data/lib/jss/ruby_extensions/string/conversions.rb +1 -1
  230. data/lib/jss/ruby_extensions/string/predicates.rb +14 -4
  231. data/lib/jss/ruby_extensions/time.rb +1 -1
  232. data/lib/jss/server.rb +1 -1
  233. data/lib/jss/utility.rb +9 -23
  234. data/lib/jss/validate.rb +54 -11
  235. data/lib/jss/version.rb +2 -2
  236. data/lib/jss/xml_workaround.rb +1 -1
  237. data/lib/ruby-jss.rb +1 -1
  238. data/test/bin/runtests +1 -1
  239. data/test/lib/testhelper.rb +1 -1
  240. data/test/lib/testhelper/auth.rb +1 -1
  241. data/test/lib/testhelper/patch_mgmt.rb +1 -1
  242. data/test/specs/api_connection_spec.rb +1 -1
  243. data/test/specs/patch01_source_spec.rb +1 -1
  244. data/test/specs/patch02_internal_source_spec.rb +1 -1
  245. data/test/specs/patch03_external_source_spec.rb +1 -1
  246. data/test/specs/patch04_titles_spec.rb +1 -1
  247. data/test/specs/patch05_policies_spec.rb +1 -1
  248. data/test/specs/patch06_cleanup_spec.rb +1 -1
  249. data/test/specs/policy_spec.rb +1 -1
  250. metadata +15 -2
@@ -0,0 +1,502 @@
1
+ ### Copyright 2019 Rixar
2
+
3
+ ###
4
+ ### Licensed under the Apache License, Version 2.0 (the "Apache License")
5
+ ### with the following modification; you may not use this file except in
6
+ ### compliance with the Apache License and the following modification to it:
7
+ ### Section 6. Trademarks. is deleted and replaced with:
8
+ ###
9
+ ### 6. Trademarks. This License does not grant permission to use the trade
10
+ ### names, trademarks, service marks, or product names of the Licensor
11
+ ### and its affiliates, except as required to comply with Section 4(c) of
12
+ ### the License and to reproduce the content of the NOTICE file.
13
+ ###
14
+ ### You may obtain a copy of the Apache License at
15
+ ###
16
+ ### http://www.apache.org/licenses/LICENSE-2.0
17
+ ###
18
+ ### Unless required by applicable law or agreed to in writing, software
19
+ ### distributed under the Apache License with the above modification is
20
+ ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
+ ### KIND, either express or implied. See the Apache License for the specific
22
+ ### language governing permissions and limitations under the Apache License.
23
+ ###
24
+ ###
25
+
26
+ module JSS
27
+
28
+ # Module for containing the different types of DirectoryBindings stored within the JSS
29
+ module DirectoryBindingType
30
+
31
+ # Module Variables
32
+ #####################################
33
+
34
+ # Module Methods
35
+ #####################################
36
+
37
+ # Classes
38
+ #####################################
39
+
40
+ # Class for the specific Active Directory DirectoryBinding type stored within the JSS
41
+ #
42
+ # @author Tyler Morgan
43
+ #
44
+ # Attributes
45
+ # @!attribute [rw] cache_last_user
46
+ # @!attribute [rw] require_confirmation
47
+ # @!attribute [rw] local_home
48
+ # @!attribute [rw] use_unc_path
49
+ # @!attribute [rw] mount_style
50
+ # @!attribute [rw] default_shell
51
+ # @!attribute [rw] uid
52
+ # @!attribute [rw] user_gid
53
+ # @!attribute [rw] gid
54
+ # @!attribute [rw] multiple_domains
55
+ # @!attribute [rw] preferred_domain
56
+ # @!attribute [rw] admin_groups
57
+ # @!attribute [rw] forest
58
+ # TODO: Include default values upon creation
59
+
60
+ class ActiveDirectory < DirectoryBindingType
61
+ # Mix-Ins
62
+ #####################################
63
+
64
+ # Class Methods
65
+ #####################################
66
+
67
+ # Class Constants
68
+ #####################################
69
+
70
+ # Attributes
71
+ #####################################
72
+ attr_reader :cache_last_user
73
+ attr_reader :require_confirmation
74
+ attr_reader :local_home
75
+ attr_reader :use_unc_path
76
+ attr_reader :mount_style
77
+ attr_reader :default_shell
78
+ attr_reader :uid
79
+ attr_reader :user_gid
80
+ attr_reader :gid
81
+ attr_reader :multiple_domains
82
+ attr_reader :preferred_domain
83
+ attr_reader :admin_groups
84
+ attr_reader :forest
85
+
86
+ # Constructor
87
+ #####################################
88
+
89
+ # An initializer for the Active Directory object.
90
+ #
91
+ # @author Tyler Morgan
92
+ # @see JSS::DirectoryBinding
93
+ # @see JSS::DirectoryBindingType
94
+ #
95
+ # @param [Hash] initialize data
96
+ def initialize(init_data)
97
+
98
+ # Return without processing anything since there is
99
+ # nothing to process.
100
+ return if init_data.nil?
101
+
102
+ # Process provided information
103
+ @cache_last_user = init_data[:cache_last_user]
104
+ @require_confirmation = init_data[:require_confirmation]
105
+ @local_home = init_data[:local_home]
106
+ @use_unc_path = init_data[:use_unc_path]
107
+ @default_shell = init_data[:default_shell]
108
+ @uid = init_data[:uid]
109
+ @user_gid = init_data[:user_gid]
110
+ @gid = init_data[:gid]
111
+ @multiple_domains = init_data[:multiple_domains]
112
+ @preferred_domain = init_data[:preferred_domain]
113
+ @forest = init_data[:forest]
114
+
115
+ if init_data[:mount_style].nil? || init_data[:mount_style].is_a?(String)
116
+ raise JSS::InvalidDataError, "Mount style must be one of #{NETWORK_PROTOCOL.values.join(', ')}." unless NETWORK_PROTOCOL.values.map { |x| x.downcase }.include?(init_data[:mount_style].downcase) || init_data[:mount_style].nil?
117
+ @mount_style = init_data[:mount_style]
118
+ else
119
+ raise JSS::InvalidDataError, "Mount style must be one of :#{NETWORK_PROTOCOL.keys.join(',:')}," unless NETWORK_PROTOCOL.keys.include? init_data[:mount_style]
120
+
121
+ @mount_style = NETWORK_PROTOCOL[init_data[:mount_style]]
122
+ end
123
+
124
+ if init_data[:admin_groups].nil?
125
+ # This is needed since we have the ability to add and
126
+ # remove admin groups from this array.
127
+ @admin_groups = []
128
+ elsif init_data[:admin_groups].is_a? String
129
+ @admin_groups = init_data[:admin_groups].split(',')
130
+ else
131
+ @admin_groups = init_data[:admin_groups]
132
+ end
133
+ end
134
+
135
+
136
+
137
+ # Public Instance Methods
138
+ #####################################
139
+
140
+ # Create mobile account upon login
141
+ #
142
+ # @author Tyler Morgan
143
+ #
144
+ # @param newvalue [Bool]
145
+ #
146
+ # @raise [JSS::InvalidDataError] If the new value doesn't match a Bool value
147
+ #
148
+ # @return [void]
149
+ def cache_last_user=(newvalue)
150
+
151
+ # Data Check
152
+ raise JSS::InvalidDataError, "cache_last_user must be true or false." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
153
+
154
+ # Update Value
155
+ @cache_last_user = newvalue
156
+
157
+ # Set the object to needing to be updated.
158
+ self.container&.should_update
159
+ end
160
+
161
+
162
+ # Require confirmation before creating a mobile account on the system.
163
+ #
164
+ # @author Tyler Morgan
165
+ #
166
+ # @param newvalue [Bool]
167
+ #
168
+ # @raise [JSS::InvalidDataError] If the new value doesn't match a Bool value
169
+ #
170
+ # @return [void]
171
+ def require_confirmation=(newvalue)
172
+
173
+ # Data Check
174
+ raise JSS::InvalidDataError, "require_confirmation must be true or false." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
175
+
176
+ # Update Value
177
+ @require_confirmation = newvalue
178
+
179
+ # Set the object to needing to be updated.
180
+ self.container&.should_update
181
+ end
182
+
183
+
184
+ # Force local home directory to be placed on the startup disk
185
+ #
186
+ # @author Tyler Morgan
187
+ #
188
+ # @param newvalue [Bool]
189
+ #
190
+ # @raise [JSS::InvalidDataError] If the new value doesn't match a Bool value
191
+ #
192
+ # @return [void]
193
+ def local_home=(newvalue)
194
+
195
+ # Data Check
196
+ raise JSS::InvalidDataError, "local_home must be true or false." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
197
+
198
+ # Update Value
199
+ @local_home = newvalue
200
+
201
+ # Set the object to needing to be updated.
202
+ self.container&.should_update
203
+ end
204
+
205
+
206
+ # Attempt to derive the network home location using the UNC path stored inside Active Directory
207
+ #
208
+ # @author Tyler Morgan
209
+ #
210
+ # @param newvalue [Bool]
211
+ #
212
+ # @raise [JSS::InvalidDataError] If the new value doesn't match a Bool value
213
+ #
214
+ # @return [void]
215
+ def use_unc_path=(newvalue)
216
+
217
+ # Data Check
218
+ raise JSS::InvalidDataError, "use_unc_path must be true or false." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
219
+
220
+ # Update Value
221
+ @use_unc_path = newvalue
222
+
223
+ # Set the object to needing to be updated.
224
+ self.container&.should_update
225
+ end
226
+
227
+
228
+ # The protocol to be use when mounting network home location
229
+ #
230
+ # @author Tyler Morgan
231
+ #
232
+ # @param newvalue [Symbol] One of the keys available in NETWORK_PROTOCOL
233
+ # @see JSS::DIRECTORYBINDINGTYPE::NETWORK_PROTOCOL
234
+ #
235
+ # @raise [JSS::InvalidDataError] If the new value provided is not a key inside the NETWORK_PROTOCOL hash.
236
+ #
237
+ # @return [void]
238
+ def mount_style=(newvalue)
239
+
240
+ # Data Check
241
+ raise JSS::InvalidDataError, "mount_style must be one of :#{NETWORK_PROTOCOL.keys.join(',:')}." unless NETWORK_PROTOCOL.keys.include? newvalue
242
+
243
+ # Update Value
244
+ @mount_style = newvalue
245
+
246
+ # Set the object to needing to be updated.
247
+ self.container&.should_update
248
+ end
249
+
250
+
251
+ # The directory path to the shell user's default shell will be set to upon login.
252
+ #
253
+ # @author Tyler Morgan
254
+ #
255
+ # @param newvalue [String] Directory path for the specific shell that is wanting to be set.
256
+ #
257
+ # @raise [JSS::InvalidDataError] If the new value is not a String
258
+ #
259
+ # @return [void]
260
+ def default_shell=(newvalue)
261
+
262
+ # Data Check
263
+ raise JSS::InvalidDataError, "default_shell must be a string." unless newvalue.is_a? String
264
+
265
+ # Update Value
266
+ @default_shell = newvalue
267
+
268
+ # Set the object to needing to be updated.
269
+ self.container&.should_update
270
+ end
271
+
272
+
273
+ # Map specific a UID to Attribute
274
+ #
275
+ # @author Tyler Morgan
276
+ #
277
+ # @param newvalue [String] The UID you want to be mapped
278
+ #
279
+ # @raise [JSS::InvalidDataError] If the new value is not a String
280
+ #
281
+ # @return [void]
282
+ def uid=(newvalue)
283
+
284
+ # Data Check
285
+ raise JSS::InvalidDataError, "uid must be either an integer or a string." unless (newvalue.is_a? Integer || newvalue.is_a?(String))
286
+
287
+ # Update Value
288
+ @uid = newvalue
289
+
290
+ # Set the object to needing to be updated.
291
+ self.container&.should_update
292
+ end
293
+
294
+
295
+ # Specify a specific forest within Active Directory
296
+ #
297
+ # @author Tyler Morgan
298
+ #
299
+ # @param newvalue [String] The forest you want to specify
300
+ #
301
+ # @raise [JSS::InvalidDataError] If the new value is not a String
302
+ #
303
+ # @return [void]
304
+ def forest=(newvalue)
305
+
306
+ # Data Check
307
+ raise JSS::InvalidDataError, "forest must be a string." unless newvalue.is_a? String
308
+
309
+ # Update Value
310
+ @forest = newvalue
311
+
312
+ # Set the object to needing to be updated.
313
+ self.container&.should_update
314
+ end
315
+
316
+ # Map specific a User's GID to Attribute
317
+ #
318
+ # @author Tyler Morgan
319
+ #
320
+ # @param newvalue [String] The User's GID you want to be mapped
321
+ #
322
+ # @raise [JSS::InvalidDataError] If the new value is not a String
323
+ #
324
+ # @return [void]
325
+ def user_gid=(newvalue)
326
+
327
+ # Data Check
328
+ raise JSS::InvalidDataError, "user_gid must be either an integer or a string." unless (newvalue.is_a? Integer || newvalue.is_a?(String))
329
+
330
+ # Update Value
331
+ @user_gid = newvalue
332
+
333
+ # Set the object to needing to be updated.
334
+ self.container&.should_update
335
+ end
336
+
337
+
338
+ # Map specific a GID to Attribute
339
+ #
340
+ # @author Tyler Morgan
341
+ #
342
+ # @param newvalue [String] The GID you want to be mapped
343
+ #
344
+ # @raise [JSS::InvalidDataError] If the new value is not a String
345
+ #
346
+ # @return [void]
347
+ def gid=(newvalue)
348
+
349
+ # Data Check
350
+ raise JSS::InvalidDataError, "gid must be either an integer or a string." unless (newvalue.is_a? Integer || newvalue.is_a?(String))
351
+
352
+ # Update Value
353
+ @gid = newvalue
354
+
355
+ # Set the object to needing to be updated.
356
+ self.container&.should_update
357
+ end
358
+
359
+
360
+ # Will this computer be possibly connecting to multiple domains
361
+ #
362
+ # @author Tyler Morgan
363
+ #
364
+ # @param newvalue [Bool]
365
+ #
366
+ # @raise [JSS::InvalidDataError] If the provided value is not a Bool.
367
+ #
368
+ # @return [void]
369
+ def multiple_domains=(newvalue)
370
+
371
+ # Data Check
372
+ raise JSS::InvalidDataError, "multiple_domains must be true or false." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
373
+
374
+ # Update Value
375
+ @multiple_domains = newvalue
376
+
377
+ # Set the object to needing to be updated.
378
+ self.container&.should_update
379
+ end
380
+
381
+
382
+ # What domain server should be highest priority
383
+ #
384
+ # @author Tyler Morgan
385
+ #
386
+ # @param newvalue [String]
387
+ #
388
+ # @raise [JSS::InvalidDataError] If the provided value is not a String.
389
+ #
390
+ # @return [void]
391
+ def preferred_domain=(newvalue)
392
+
393
+ # Data Check
394
+ raise JSS::InvalidDataError, "preferred_domain must be a string." unless newvalue.is_a? String
395
+
396
+ # Update Value
397
+ @preferred_domain = newvalue
398
+
399
+ # Set the object to needing to be updated.
400
+ self.container&.should_update
401
+ end
402
+
403
+
404
+ # The AD group which can be considered administrators of a device.
405
+ #
406
+ # @author Tyler Morgan
407
+ #
408
+ # @param newvalue [Array <String>]
409
+ #
410
+ # @raise [JSS::InvalidDataError] If the provided value is not an Array.
411
+ #
412
+ # @return [void]
413
+ def admin_groups=(newvalue)
414
+
415
+ # Data Check
416
+ raise JSS::InvalidDataError, "admin_groups must be either a string or an array of strings." unless (newvalue.is_a? String || newvalue.is_a?(Array))
417
+
418
+ # Update Value
419
+ if newvalue.is_a? Array
420
+ @admin_groups = newvalue.join ","
421
+ else
422
+ @admin_groups = newvalue
423
+ end
424
+
425
+ # Set the object to needing to be updated.
426
+ self.container&.should_update
427
+ end
428
+
429
+
430
+ # Add a specific admin group to the admin_groups
431
+ #
432
+ # @author Tyler Morgan
433
+ #
434
+ # @param newvalue [String] The admin group name you want to add to the admin group list
435
+ #
436
+ # @raise [JSS::InvalidDataError] If the value provided is not a String
437
+ # @raise [JSS::InvalidDataError] If the group provided is not in the admin_group array
438
+ #
439
+ # @return [Array <String>] An array of all the admin groups currently set.
440
+ def add_admin_group(value)
441
+
442
+ raise JSS::InvalidDataError, "Admin group must be a string." unless value.is_a? String
443
+ raise JSS::InvalidDataError, "Group \"#{value}\" already is in the admin groups." unless !@admin_groups.include? value
444
+
445
+ @admin_groups << value
446
+ # Set the object to needing to be updated.
447
+ self.container&.should_update
448
+
449
+ return @admin_groups
450
+ end
451
+
452
+
453
+ # Remove a specific admin group from the admin_groups
454
+ #
455
+ # @author Tyler Morgan
456
+ #
457
+ # @param newvalue [String] The admin group name you want to remove from the admin groups.
458
+ #
459
+ # @raise [JSS::InvalidDataError] If the value provided is not a String
460
+ # @raise [JSS::InvalidDataError] If the group provided is not in the admin_group array
461
+ #
462
+ # @return [Array <String>] An array of all the admin groups currently set.
463
+ def remove_admin_group(value)
464
+
465
+ raise JSS::InvalidDataError, "Admin group being removed must be a string." unless value.is_a? String
466
+ raise JSS::InvalidDataError, "Admin group #{value} is not in the current admin group(s)." unless @admin_groups.include? value
467
+
468
+ @admin_groups.delete value
469
+ # Set the object to needing to be updated.
470
+ self.container&.should_update
471
+
472
+ return @admin_groups
473
+ end
474
+
475
+
476
+ # Return a REXML Element containing the current state of the DirectoryBindingType
477
+ # object for adding into the XML of the container.
478
+ #
479
+ # @author Tyler Morgan
480
+ #
481
+ # @return [REXML::Element]
482
+ def type_setting_xml
483
+ type_setting = REXML::Element.new "active_directory"
484
+ type_setting.add_element("cache_last_user").text = @cache_last_user
485
+ type_setting.add_element("require_confirmation").text = @require_confirmation
486
+ type_setting.add_element("local_home").text = @local_home
487
+ type_setting.add_element("use_unc_path").text = @use_unc_path
488
+ type_setting.add_element("mount_style").text = @mount_style.downcase
489
+ type_setting.add_element("default_shell").text = @default_shell
490
+ type_setting.add_element("uid").text = @uid
491
+ type_setting.add_element("user_gid").text = @user_gid
492
+ type_setting.add_element("gid").text = @gid
493
+ type_setting.add_element("multiple_domains").text = @multiple_domains
494
+ type_setting.add_element("preferred_domain").text = @preferred_domain
495
+ type_setting.add_element("admin_groups").text = @admin_groups.join(',').to_s unless @admin_groups.nil?
496
+ type_setting.add_element("forest").text = @forest.to_s
497
+
498
+ return type_setting
499
+ end
500
+ end
501
+ end
502
+ end