@@ -24,24 +24,30 @@ module SoftLayer
2424 class Ticket < SoftLayer ::ModelBase
2525
2626 ##
27- # :attr_reader: title
27+ # :attr_reader:
2828 # The title is an identifying string set when the ticket is created
2929 sl_attr :title
3030
3131 ##
32- # :attr_reader: subject
32+ # :attr_reader:
3333 # The ticket system maintains a fixed set of subjects for tickets that are used to ensure tickets make it to the right folks quickly
3434 sl_attr :subject
35+
36+ ##
37+ # :attr_reader:
38+ # The date the ticket was last updated.
39+ sl_attr :lastEditDate
3540
3641 ##
3742 # Returns true if the ticket has "unread" updates
3843 def has_updates?
39- self [ "newUpdatesFlag" ] != 0
44+ self [ "newUpdatesFlag" ]
4045 end
4146
4247 ##
4348 # Returns true if the ticket is a server admin ticket
4449 def server_admin_ticket?
50+ # note that serverAdministrationFlag comes from the server as an Integer (0, or 1)
4551 self [ "serverAdministrationFlag" ] != 0
4652 end
4753
@@ -89,9 +95,9 @@ def self.default_object_mask
8995 'status.id' ,
9096 'createDate' ,
9197 'lastEditDate' ,
92- 'newUpdatesFlag' ,
93- 'awaitingUserResponseFlag' ,
94- 'serverAdministrationFlag' ,
98+ 'newUpdatesFlag' , # This comes in from the server as a Boolean value
99+ 'awaitingUserResponseFlag' , # This comes in from the server as a Boolean value
100+ 'serverAdministrationFlag' , # This comes in from the server as an integer :-(
95101 ]
96102 }
97103 end
@@ -112,6 +118,29 @@ def self.ticket_subjects(client = nil)
112118 @ticket_subjects
113119 end
114120
121+ ##
122+ # Returns the set of currently open tickets
123+ #
124+ # Options should contain:
125+ #
126+ # <b>+:client+</b> - the client in which to search for the ticket
127+ #
128+ # If a client is not provided then the routine will search Client::default_client
129+ # If Client::default_client is also nil the routine will raise an error.
130+ def self . open_tickets ( options = { } )
131+ softlayer_client = options [ :client ] || Client . default_client
132+ raise "#{ __method__ } requires a client but none was given and Client::default_client is not set" if !softlayer_client
133+
134+ if options . has_key? ( :object_mask )
135+ object_mask = options [ :object_mask ]
136+ else
137+ object_mask = default_object_mask . to_sl_object_mask
138+ end
139+
140+ open_tickets_data = softlayer_client [ "Account" ] . object_mask ( object_mask ) . getOpenTickets
141+ open_tickets_data . collect { |ticket_data | new ( softlayer_client , ticket_data ) }
142+ end
143+
115144 ##
116145 # Find the ticket with the given ID and return it
117146 #
@@ -132,7 +161,7 @@ def self.ticket_with_id(ticket_id, options = {})
132161 object_mask = default_object_mask . to_sl_object_mask
133162 end
134163
135- ticket_data = softlayer_client [ "Ticket" ] . object_with_id ( server_id ) . object_mask ( object_mask ) . getObject ( )
164+ ticket_data = softlayer_client [ "Ticket" ] . object_with_id ( ticket_id ) . object_mask ( object_mask ) . getObject ( )
136165
137166 return new ( softlayer_client , ticket_data )
138167 end
@@ -153,7 +182,7 @@ def self.ticket_with_id(ticket_id, options = {})
153182 # * <b>+:body+</b> (String) - The content of the ticket
154183 # * <b>+:subject_id+</b> (Int) - The id of a subject to use for the ticket. A list of ticket subjects can be returned by SoftLayer::Ticket.ticket_subjects
155184 # * <b>+:assigned_user_id+</b> (Int) - The id of a user to whom the ticket should be assigned
156- def self . create_ticket ( options = { } )
185+ def self . create_standard_ticket ( options = { } )
157186 softlayer_client = options [ :client ] || SoftLayer ::Client . default_client
158187 raise "#{ __method__ } requires a client but none was given and Client::default_client is not set" if !softlayer_client
159188
0 commit comments