ruby-jss 0.8.2 → 0.9.0.b1

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.

Potentially problematic release.


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

@@ -1,26 +1,26 @@
1
1
  ### Copyright 2017 Pixar
2
2
 
3
- ###
3
+ ###
4
4
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")
5
5
  ### with the following modification; you may not use this file except in
6
6
  ### compliance with the Apache License and the following modification to it:
7
7
  ### Section 6. Trademarks. is deleted and replaced with:
8
- ###
8
+ ###
9
9
  ### 6. Trademarks. This License does not grant permission to use the trade
10
10
  ### names, trademarks, service marks, or product names of the Licensor
11
11
  ### and its affiliates, except as required to comply with Section 4(c) of
12
12
  ### the License and to reproduce the content of the NOTICE file.
13
- ###
13
+ ###
14
14
  ### You may obtain a copy of the Apache License at
15
- ###
15
+ ###
16
16
  ### http://www.apache.org/licenses/LICENSE-2.0
17
- ###
17
+ ###
18
18
  ### Unless required by applicable law or agreed to in writing, software
19
19
  ### distributed under the Apache License with the above modification is
20
20
  ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
21
  ### KIND, either express or implied. See the Apache License for the specific
22
22
  ### language governing permissions and limitations under the Apache License.
23
- ###
23
+ ###
24
24
  ###
25
25
 
26
26
  ###
@@ -127,11 +127,11 @@ module JSS
127
127
  ###
128
128
  ### For telling it when a change is made and an update needed
129
129
  attr_accessor :container
130
-
131
- ### @return [Boolean] should we expect a potential 409 Conflict
130
+
131
+ ### @return [Boolean] should we expect a potential 409 Conflict
132
132
  ### if we can't connect to LDAP servers for verification?
133
133
  attr_accessor :unable_to_verify_ldap_entries
134
-
134
+
135
135
  ### what type of target is this scope for? Computers or Mobiledevices?
136
136
  attr_reader :target_class
137
137
 
@@ -157,7 +157,7 @@ module JSS
157
157
  ### targets in the JSS form the base scope.
158
158
  ###
159
159
  attr_reader :all_targets
160
-
160
+
161
161
 
162
162
 
163
163
  ### @return [Hash<Array>]
@@ -199,8 +199,8 @@ module JSS
199
199
  ###
200
200
  ### @param api_scope[Hash] the JSON :scope data from an API query that is scopable, e.g. a Policy.
201
201
  ###
202
- def initialize(target_key, api_scope = DEFAULT_SCOPE)
203
-
202
+ def initialize(target_key, api_scope = nil)
203
+ api_scope ||= DEFAULT_SCOPE
204
204
  raise JSS::InvalidDataError, "The target class of a Scope must be one of the symbols :#{TARGETS_AND_GROUPS.keys.join(', :')}" unless TARGETS_AND_GROUPS.keys.include? target_key
205
205
 
206
206
  @target_key = target_key
@@ -575,13 +575,13 @@ module JSS
575
575
  end
576
576
  return scope
577
577
  end #scope_xml
578
-
579
-
578
+
579
+
580
580
  ### Aliases
581
-
581
+
582
582
  alias all_targets? all_targets
583
-
584
-
583
+
584
+
585
585
  #####################################
586
586
  ### Private Instance Methods
587
587
  #####################################
@@ -600,17 +600,17 @@ module JSS
600
600
  return true if found_in_jss
601
601
 
602
602
  return false unless CHECK_LDAP_KEYS.include?(key)
603
-
603
+
604
604
  begin
605
605
  return JSS::LDAPServer.user_in_ldap?(name) if LDAP_USER_KEYS.include?(key)
606
606
  return JSS::LDAPServer.group_in_ldap?(name) if LDAP_GROUP_KEYS.include?(key)
607
-
607
+
608
608
  # if an ldap server isn't connected, make a note of it and return true
609
609
  rescue JSS::InvalidConnectionError
610
610
  @unable_to_verify_ldap_entries = true
611
611
  return true
612
612
  end # begin
613
-
613
+
614
614
  return false
615
615
  end
616
616
 
@@ -619,4 +619,3 @@ module JSS
619
619
  end # class Scope
620
620
  end #module Scopable
621
621
  end # module
622
-
@@ -458,6 +458,7 @@ module JSS
458
458
  def in_self_service_at_init?
459
459
  return nil unless @self_service_data_config[:in_self_service_data_path]
460
460
  subsection, key = @self_service_data_config[:in_self_service_data_path]
461
+ return false unless @init_data[subsection]
461
462
  @init_data[subsection][key] == @self_service_data_config[:in_self_service]
462
463
  end
463
464
 
@@ -481,7 +482,7 @@ module JSS
481
482
  #
482
483
  def refresh_icon
483
484
  return nil unless @in_jss
484
- fresh_data = JSS::API.get_rsrc(@rest_rsrc)[self.class::RSRC_OBJECT_KEY]
485
+ fresh_data = JSS.api_connection.get_rsrc(@rest_rsrc)[self.class::RSRC_OBJECT_KEY]
485
486
  icon_data = fresh_data[:self_service][:self_service_icon]
486
487
  @icon = JSS::Icon.new icon_data
487
488
  end # refresh icon
@@ -506,11 +507,13 @@ module JSS
506
507
  end
507
508
 
508
509
  cats = ssvc.add_element('self_service_categories')
509
- @self_service_categories.each do |cat|
510
- catelem = cats.add_element('category')
511
- catelem.add_element('name').text = cat[:name]
512
- catelem.add_element('display_in').text = cat[:display_in] if @self_service_data_config[:can_display_in_categories]
513
- catelem.add_element('feature_in').text = cat[:feature_in] if @self_service_data_config[:can_feature_in_categories]
510
+ if @self_service_categories
511
+ @self_service_categories.each do |cat|
512
+ catelem = cats.add_element('category')
513
+ catelem.add_element('name').text = cat[:name]
514
+ catelem.add_element('display_in').text = cat[:display_in] if @self_service_data_config[:can_display_in_categories]
515
+ catelem.add_element('feature_in').text = cat[:feature_in] if @self_service_data_config[:can_feature_in_categories]
516
+ end
514
517
  end
515
518
 
516
519
  if self_service_targets.include? :macos
@@ -93,7 +93,7 @@ module JSS
93
93
  return nil unless @need_to_update
94
94
  raise JSS::UnsupportedError, "Editing #{self.class::RSRC_LIST_KEY} isn't yet supported. Please use other Casper workflows." unless UPDATABLE
95
95
  raise JSS::NoSuchItemError, "Not In JSS! Use #create to create this #{self.class::RSRC_OBJECT_KEY} in the JSS before updating it." unless @in_jss
96
- JSS::API.put_rsrc @rest_rsrc, rest_xml
96
+ JSS.api_connection.put_rsrc @rest_rsrc, rest_xml
97
97
  @need_to_update = false
98
98
  refresh_icon if self_servable?
99
99
  @id
@@ -130,7 +130,7 @@ module JSS
130
130
  file = File.new local_file.to_s, 'rb'
131
131
 
132
132
  # upload it!
133
- JSS::API.cnx[upload_rsrc].post name: file
133
+ JSS.api_connection.cnx[upload_rsrc].post name: file
134
134
  end # def upload file
135
135
 
136
136
  end # module FileUpload
data/lib/jss/server.rb CHANGED
@@ -1,109 +1,110 @@
1
1
  ### Copyright 2017 Pixar
2
2
 
3
- ###
3
+ ###
4
4
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")
5
5
  ### with the following modification; you may not use this file except in
6
6
  ### compliance with the Apache License and the following modification to it:
7
7
  ### Section 6. Trademarks. is deleted and replaced with:
8
- ###
8
+ ###
9
9
  ### 6. Trademarks. This License does not grant permission to use the trade
10
10
  ### names, trademarks, service marks, or product names of the Licensor
11
11
  ### and its affiliates, except as required to comply with Section 4(c) of
12
12
  ### the License and to reproduce the content of the NOTICE file.
13
- ###
13
+ ###
14
14
  ### You may obtain a copy of the Apache License at
15
- ###
15
+ ###
16
16
  ### http://www.apache.org/licenses/LICENSE-2.0
17
- ###
17
+ ###
18
18
  ### Unless required by applicable law or agreed to in writing, software
19
19
  ### distributed under the Apache License with the above modification is
20
20
  ### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
21
  ### KIND, either express or implied. See the Apache License for the specific
22
22
  ### language governing permissions and limitations under the Apache License.
23
- ###
23
+ ###
24
24
  ###
25
25
 
26
26
  ###
27
27
  module JSS
28
28
 
29
- ### A class representing a JSS Server.
30
- ###
31
- ### The {JSS::APIConnection} instance has a JSS::Server instance in its @server attribute.
32
- ### It is created fresh every time {APIConnection#connect} is called.
33
- ###
34
- ### That's the only time it should be instantiated, and all access should be through
35
- ### {JSS::API.server}
36
- ###
29
+ # A class representing the currently-connected JSS Server.
30
+ #
31
+ # The {JSS::APIConnection} instance has a JSS::Server instance in its #server
32
+ # attribute. It is created fresh every time {APIConnection#connect} is called.
33
+ #
34
+ # That's the only time it should be instantiated, and all access should be
35
+ # through {JSS.api_connection.server}
36
+ #
37
37
  class Server
38
38
 
39
+ # Constants
39
40
  #####################################
40
- ### Attributes
41
- #####################################
41
+ ACTIVATION_CODE_RSRC = 'activationcode'.freeze
42
+ ACTIVATION_CODE_KEY = :activation_code
42
43
 
43
- ### @return [String] the organization to which the server is licensed
44
- attr_reader :organization
45
-
46
44
 
47
- ### @return [String] the activation code for the server licence
48
- attr_reader :activation_code
45
+ # Attributes
46
+ #####################################
49
47
 
50
- ### @return [String] the type of server licence
48
+ # @return [String] the type of server licence
51
49
  attr_reader :license_type
52
50
 
53
- ### @return [String] the license product name
51
+ # @return [String] the license product name
54
52
  attr_reader :product
55
53
 
56
- ### @return [String] The version of the JSS. See the method JSS.parse_jss_version
54
+ # @return [String] The version of the JSS. See the method JSS.parse_jss_version
57
55
  attr_reader :version
58
56
 
59
- ### @return [Integer]
57
+ # @return [Integer]
60
58
  attr_reader :major_version
61
59
 
62
- ### @return [Integer]
60
+ # @return [Integer]
63
61
  attr_reader :minor_version
64
62
 
65
- ### @return [Integer]
63
+ # @return [Integer]
66
64
  attr_reader :revision_version
67
65
 
68
- ### @return [String]
66
+ # @return [String]
69
67
  attr_reader :raw_version
70
68
 
69
+ # Instance Methods
71
70
  #####################################
72
- ### Instance Methods
73
- #####################################
74
71
 
75
- ###
76
- ### Initialize!
77
- ###
78
- def initialize
79
- begin
80
-
81
- # the jssuser resource is readable by anyone with a JSS acct
82
- # regardless of their permissions.
83
- # However, it's marked as 'deprecated'. Hopefully jamf will
84
- # keep this basic level of info available for basic authentication
85
- # and JSS version checking.
86
- ju = JSS::API.get_rsrc('jssuser')[:user]
87
- @license_type = ju[:license_type]
88
- @product = ju[:product]
89
- @raw_version = ju[:version]
90
- parsed = JSS.parse_jss_version(@raw_version)
91
- @major_version = parsed[:major]
92
- @minor_version = parsed[:minor]
93
- @revision_version = parsed[:revision]
94
- @version = parsed[:version]
95
-
96
- rescue RestClient::Request::Unauthorized
97
- raise JSS::AuthenticationError, "Incorrect JSS username or password for '#{JSS::API.jss_user}@#{JSS::API.server_host}'."
98
- end
72
+ # Initialize!
73
+ # THe jss_data to be passed in is the JSON output of the 'jssuser' resource
74
+ # on the API server.
75
+ # the jssuser resource is readable by anyone with a JSS acct
76
+ # regardless of their permissions.
77
+ # However, it's marked as 'deprecated'. Hopefully jamf will
78
+ # keep this basic level of info available for basic authentication
79
+ # and JSS version checking.
80
+ def initialize(jss_data)
81
+
82
+ @license_type = jss_data[:license_type]
83
+ @product = jss_data[:product]
84
+ @raw_version = jss_data[:version]
85
+ parsed = JSS.parse_jss_version(@raw_version)
86
+ @major_version = parsed[:major]
87
+ @minor_version = parsed[:minor]
88
+ @revision_version = parsed[:revision]
89
+ @version = parsed[:version]
90
+ end
91
+
92
+ # @return [String] the organization to which the server is licensed
93
+ def organization
94
+ @act_code_data ||= JSS.api_connection.get_rsrc(ACTIVATION_CODE_RSRC)[ACTIVATION_CODE_KEY]
95
+ @act_code_data[:organization_name]
96
+ end
99
97
 
98
+ # @return [String] the activation code for the server licence
99
+ def activation_code
100
+ @act_code_data ||= JSS.api_connection.get_rsrc(ACTIVATION_CODE_RSRC)[ACTIVATION_CODE_KEY]
101
+ @act_code_data[:code]
100
102
  end
101
103
 
102
-
103
104
  ##### Aliases
104
105
  alias institution organization
105
106
  alias product_name product
106
-
107
+
107
108
  end # class server
108
109
 
109
110
  end # module
data/lib/jss/utility.rb CHANGED
@@ -281,6 +281,7 @@ module JSS
281
281
 
282
282
  # Given an element name and an array of content, generate an Array of
283
283
  # REXML::Element objects with that name, and matching content.
284
+ # Given element name 'foo' and the array ['bar','morefoo']
284
285
  # The array of REXML elements would render thus:
285
286
  # <foo>bar</foo>
286
287
  # <foo>morefoo</foo>
@@ -419,6 +420,9 @@ module JSS
419
420
  def self.parse_jss_version_newstyle(version)
420
421
  release, build = version.split '-'
421
422
  major, minor, revision = release.split '.'
423
+ minor ||= 0
424
+ revision ||= 0
425
+
422
426
  {
423
427
  major: major.to_i,
424
428
  minor: minor.to_i,
data/lib/jss/version.rb CHANGED
@@ -27,6 +27,6 @@
27
27
  module JSS
28
28
 
29
29
  ### The version of the JSS ruby gem
30
- VERSION = '0.8.2'.freeze
30
+ VERSION = '0.9.0.b1'.freeze
31
31
 
32
32
  end # module
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.0.b1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Lasell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-07 00:00:00.000000000 Z
12
+ date: 2017-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plist
@@ -79,26 +79,6 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0.8'
82
- - !ruby/object:Gem::Dependency
83
- name: immutable-struct
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '2.2'
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: 2.2.2
92
- type: :runtime
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: '2.2'
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 2.2.2
102
82
  description: |2
103
83
  The ruby-jss gem provides the JSS module, a framework for interacting with the REST API
104
84
  of the Jamf Software Server (JSS), the core of Jamf Pro, an enterprise/education
@@ -223,9 +203,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
203
  version: 1.9.3
224
204
  required_rubygems_version: !ruby/object:Gem::Requirement
225
205
  requirements:
226
- - - ">="
206
+ - - ">"
227
207
  - !ruby/object:Gem::Version
228
- version: '0'
208
+ version: 1.3.1
229
209
  requirements: []
230
210
  rubyforge_project:
231
211
  rubygems_version: 2.6.8