5
5
import re
6
6
7
7
from oracle .weblogic .deploy .exception import ExceptionHelper
8
- from wlsdeploy . aliases . location_context import LocationContext
8
+
9
9
from wlsdeploy .aliases .model_constants import KNOWN_TOPLEVEL_MODEL_SECTIONS
10
- from wlsdeploy .aliases .validation_codes import ValidationCodes
11
- from wlsdeploy .tool .modelhelp import model_help_utils
12
- from wlsdeploy .tool .modelhelp .model_help_utils import ControlOptions
13
- from wlsdeploy .tool .modelhelp .model_sample_printer import ModelSamplePrinter
14
- from wlsdeploy .util import model
15
10
from wlsdeploy .exception import exception_helper
16
11
from wlsdeploy .exception .expection_types import ExceptionType
12
+ from wlsdeploy .tool .modelhelp .model_help_utils import ControlOptions
13
+ from wlsdeploy .tool .modelhelp .model_sample_printer import ModelSamplePrinter
17
14
from wlsdeploy .tool .util .alias_helper import AliasHelper
15
+ from wlsdeploy .util import model
18
16
19
17
_class_name = "ModelHelpPrinter"
20
18
MODEL_PATH_PATTERN = re .compile (r'^([a-zA-Z]+:?)?((/[a-zA-Z0-9]+)*)?$' )
@@ -33,7 +31,7 @@ def __init__(self, aliases, logger):
33
31
self ._logger = logger
34
32
self ._alias_helper = AliasHelper (aliases , self ._logger , ExceptionType .CLA )
35
33
36
- def print_model_help (self , model_path , control_option , as_sample = False ):
34
+ def print_model_help (self , model_path , control_option ):
37
35
"""
38
36
Prints out the help information for a given '''model_path'''. '''model_path''' needs to be specified
39
37
using the following pattern:
@@ -48,36 +46,26 @@ def print_model_help(self, model_path, control_option, as_sample=False):
48
46
49
47
:param model_path: a formatted string containing the model path
50
48
:param control_option: a command-line switch that controls what is output
51
- :param as_sample: specifies that a model sample should be output
52
49
:raises CLAException: if a problem is encountered
53
50
"""
54
51
55
- # print filter information, if not NORMAL
52
+ model_path_tokens = self ._parse_model_path (model_path )
53
+ folder_path = '/' .join (model_path_tokens [1 :])
54
+ model_path = '%s:/%s' % (model_path_tokens [0 ], folder_path )
55
+
56
+ # print format information
57
+ print
56
58
if control_option == ControlOptions .RECURSIVE :
57
- print
58
- print _format_message ('WLSDPLY-10102' )
59
+ print _format_message ('WLSDPLY-10102' , model_path )
59
60
elif control_option == ControlOptions .FOLDERS_ONLY :
60
- print
61
- print _format_message ('WLSDPLY-10103' )
61
+ print _format_message ('WLSDPLY-10103' , model_path )
62
62
elif control_option == ControlOptions .ATTRIBUTES_ONLY :
63
- print
64
- print _format_message ('WLSDPLY-10104' )
65
-
66
- model_path_tokens = self ._parse_model_path (model_path )
67
-
68
- section_name = model_path_tokens [0 ]
69
- valid_section_folder_keys = self ._alias_helper .get_model_section_top_level_folder_names (section_name )
70
-
71
- if as_sample :
72
- sample_printer = ModelSamplePrinter (self ._alias_helper , self ._logger )
73
- sample_printer .print_model_sample (model_path_tokens , control_option )
63
+ print _format_message ('WLSDPLY-10104' , model_path )
74
64
else :
75
- if model_path_tokens [0 ] == 'top' :
76
- self ._print_model_top_level_help ()
77
- elif len (model_path_tokens ) == 1 :
78
- self ._print_model_section_help (section_name , valid_section_folder_keys , control_option )
79
- else :
80
- self ._print_model_folder_help (model_path_tokens , valid_section_folder_keys , control_option )
65
+ print _format_message ('WLSDPLY-10105' , model_path )
66
+
67
+ sample_printer = ModelSamplePrinter (self ._alias_helper , self ._logger )
68
+ sample_printer .print_model_sample (model_path_tokens , control_option )
81
69
82
70
def _parse_model_path (self , model_path ):
83
71
"""
@@ -150,206 +138,6 @@ def _get_section_for_folder_list(self, folder_list):
150
138
self ._logger .throwing (ex , class_name = _class_name , method_name = _method_name )
151
139
raise ex
152
140
153
- def _print_model_top_level_help (self ):
154
- """
155
- Prints out all the valid section names for a model.
156
- The -recursive flag is disregarded for this case.
157
- """
158
- _method_name = '_print_model_top_level_help'
159
- self ._logger .finest ('sections={0}' , KNOWN_TOPLEVEL_MODEL_SECTIONS , class_name = _class_name ,
160
- method_name = _method_name )
161
-
162
- title = _format_message ('WLSDPLY-10113' )
163
-
164
- # Print 'All Sections:' header
165
- print
166
- _print_indent (title , 0 )
167
- print
168
-
169
- for section in KNOWN_TOPLEVEL_MODEL_SECTIONS :
170
- _print_indent (section , 1 )
171
-
172
- def _print_model_section_help (self , section_name , valid_section_folder_keys , control_option ):
173
- """
174
- Prints the help for a section of a model, when just the section_name[:] is provided
175
- :param section_name: the name of the model section
176
- :param valid_section_folder_keys: list of the valid top folders in the specified section
177
- :param control_option: A command-line switch that controls what is output to STDOUT
178
- """
179
- _method_name = '_print_model_section_help'
180
-
181
- self ._logger .finest ('1 section_name={0}' , section_name , class_name = _class_name , method_name = _method_name )
182
-
183
- location_path = '%s:' % section_name
184
- self ._logger .finest ('1 location_path={0}' , location_path , class_name = _class_name , method_name = _method_name )
185
-
186
- model_section = _format_message ('WLSDPLY-10106' , location_path )
187
-
188
- # Print 'Section: <model_section>' label and field
189
- print
190
- _print_indent (model_section , 0 )
191
-
192
- if model_help_utils .show_attributes (control_option ):
193
- attributes_location = self ._alias_helper .get_model_section_attribute_location (section_name )
194
- if attributes_location is not None :
195
- self ._print_attributes_help (attributes_location , 1 )
196
-
197
- if model_help_utils .show_folders (control_option ):
198
- print
199
- _print_indent (_format_message ('WLSDPLY-10107' ), 1 )
200
- valid_section_folder_keys .sort ()
201
-
202
- for section_folder_key in valid_section_folder_keys :
203
- _print_indent (section_folder_key , 2 )
204
-
205
- if control_option == ControlOptions .RECURSIVE :
206
- model_location = LocationContext ().append_location (section_folder_key )
207
- self ._print_subfolders_help (model_location , control_option , 2 )
208
-
209
- def _print_model_folder_help (self , model_path_tokens , valid_section_folder_keys , control_option ):
210
- """
211
- Prints the help for a folder in a model, when more than just the section_name[:] is provided.
212
- The section name in the first token was already validated.
213
- :param model_path_tokens: a Python list of path elements built from model path
214
- :param valid_section_folder_keys: A list of valid folder names for the model section in the path
215
- :param control_option: A command-line switch that controls what is output to STDOUT
216
- """
217
- _method_name = '_print_model_folder_help'
218
-
219
- self ._logger .finest ('1 model_path_tokens={0}, control_option={1}, valid_section_folder_keys={0}' ,
220
- str (model_path_tokens ), ControlOptions .from_value (control_option ),
221
- str (valid_section_folder_keys ), class_name = _class_name , method_name = _method_name )
222
-
223
- print
224
-
225
- section_name = model_path_tokens [0 ]
226
- top_folder = model_path_tokens [1 ]
227
- if top_folder not in valid_section_folder_keys :
228
- ex = exception_helper .create_cla_exception ('WLSDPLY-10110' , section_name + ':' , top_folder ,
229
- ', ' .join (valid_section_folder_keys ))
230
- self ._logger .throwing (ex , class_name = _class_name , method_name = _method_name )
231
- raise ex
232
-
233
- # Populate the location context using model_path_tokens[1:]
234
- model_location = LocationContext ()
235
- for folder_key in model_path_tokens [1 :]:
236
- code , message = self ._alias_helper .is_valid_model_folder_name (model_location , folder_key )
237
- if code != ValidationCodes .VALID :
238
- ex = exception_helper .create_cla_exception ("WLSDPLY-05027" , message )
239
- self ._logger .throwing (ex , class_name = _class_name , method_name = _method_name )
240
- raise ex
241
-
242
- model_location .append_location (folder_key )
243
- name_token = self ._alias_helper .get_name_token (model_location )
244
- if name_token is not None :
245
- model_location .add_name_token (name_token , '%s-0' % folder_key )
246
-
247
- self ._logger .finest ('2 model_location={0}' , model_location , class_name = _class_name ,
248
- method_name = _method_name )
249
-
250
- folder_path = '/' .join (model_path_tokens [1 :])
251
- model_path = _format_message ('WLSDPLY-10105' , '%s:/%s' % (section_name , folder_path ))
252
- type_name = self ._get_folder_type_name (model_location )
253
- if type_name is not None :
254
- model_path += " (" + type_name + ")"
255
-
256
- # Print 'Path: <model_section>' header
257
- _print_indent (model_path , 0 )
258
-
259
- if model_help_utils .show_attributes (control_option ):
260
- # Print the attributes associated with location context
261
- self ._print_attributes_help (model_location , 1 )
262
-
263
- if model_help_utils .show_folders (control_option ):
264
- # Print the folders associated with location context
265
- print
266
- _print_indent (_format_message ('WLSDPLY-10107' ), 1 )
267
- self ._print_subfolders_help (model_location , control_option , 1 )
268
-
269
- self ._logger .exiting (class_name = _class_name , method_name = _method_name )
270
- return
271
-
272
- def _print_subfolders_help (self , model_location , control_option , indent_level ):
273
- """
274
- Prints the help for the folders in a model location, without header or leading space.
275
- :param model_location: the model location being worked on
276
- :param control_option: a command-line switch that controls what is output to STDOUT
277
- :param indent_level: the level to indent by, before printing output
278
- """
279
- _method_name = '_print_subfolders_help'
280
-
281
- valid_subfolder_keys = self ._alias_helper .get_model_subfolder_names (model_location )
282
- self ._logger .finest ('3 aliases.get_model_subfolder_names(model_location) returned: {0}' ,
283
- str (valid_subfolder_keys ), class_name = _class_name , method_name = _method_name )
284
-
285
- if not valid_subfolder_keys :
286
- return
287
-
288
- valid_subfolder_keys .sort ()
289
-
290
- for key in valid_subfolder_keys :
291
- model_location .append_location (key )
292
- name_token = self ._alias_helper .get_name_token (model_location )
293
- if name_token is not None :
294
- model_location .add_name_token (name_token , '%s-0' % key )
295
-
296
- self ._logger .finest ('3 model_location={0}' , model_location , class_name = _class_name ,
297
- method_name = _method_name )
298
-
299
- text = key
300
- type_name = self ._get_folder_type_name (model_location )
301
- if type_name is not None :
302
- text += " (" + type_name + ")"
303
-
304
- _print_indent (text , indent_level + 1 )
305
-
306
- if control_option == ControlOptions .RECURSIVE :
307
- # Call this method recursively
308
- self ._print_subfolders_help (model_location , control_option , indent_level + 1 )
309
-
310
- model_location .pop_location ()
311
-
312
- def _print_attributes_help (self , model_location , indent_level ):
313
- """
314
- Prints out the help for the attributes in a model location
315
- :param model_location: An object containing data about the model location being worked on
316
- :param indent_level: The level to indent by, before printing output
317
- """
318
- _method_name = '_print_attributes_help'
319
-
320
- attr_infos = self ._alias_helper .get_model_attribute_names_and_types (model_location )
321
- self ._logger .finer ('WLSDPLY-05012' , str (model_location ), str (attr_infos ),
322
- class_name = _class_name , method_name = _method_name )
323
-
324
- # Print 'Valid Attributes:' area label
325
- print
326
- _print_indent (_format_message ('WLSDPLY-10111' ), indent_level )
327
-
328
- if attr_infos :
329
- maxlen = 0
330
- for key in attr_infos :
331
- if len (key ) > maxlen :
332
- maxlen = len (key )
333
- formatted_string = '%-' + str (maxlen ) + 's\t %s'
334
-
335
- attr_list = attr_infos .keys ()
336
- attr_list .sort ()
337
- for attr_name in attr_list :
338
- msg = formatted_string % (attr_name , attr_infos [attr_name ])
339
- _print_indent (msg , indent_level + 1 )
340
-
341
- def _get_folder_type_name (self , location ):
342
- """
343
- Return text indicating the type of a folder, such as "multiple".
344
- :param location: the location to be checked
345
- :return: name of the folder type to be displayed, or None
346
- """
347
- if self ._alias_helper .is_artificial_type_folder (location ):
348
- return None
349
- if self ._alias_helper .supports_multiple_mbean_instances (location ):
350
- return "multiple"
351
- return None
352
-
353
141
354
142
def _format_message (key , * args ):
355
143
"""
@@ -358,17 +146,3 @@ def _format_message(key, *args):
358
146
:return: the formatted text message
359
147
"""
360
148
return ExceptionHelper .getMessage (key , list (args ))
361
-
362
-
363
- def _print_indent (msg , level = 1 ):
364
- """
365
- Print a message at the specified indent level.
366
- :param msg: the message to be printed
367
- :param level: the indent level
368
- """
369
- result = ''
370
- i = 0
371
- while i < level :
372
- result += ' '
373
- i += 1
374
- print '%s%s' % (result , msg )
0 commit comments