|
2 | 2 | Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
3 | 3 | The Universal Permissive License (UPL), Version 1.0
|
4 | 4 | """
|
5 |
| -import copy |
6 | 5 |
|
7 |
| -from oracle.weblogic.deploy.util import PyOrderedDict as OrderedDict |
8 | 6 | from oracle.weblogic.deploy.util import WLSDeployArchive
|
9 | 7 |
|
10 | 8 | from wlsdeploy.aliases.location_context import LocationContext
|
|
17 | 15 | from wlsdeploy.tool.util.wlst_helper import WlstHelper
|
18 | 16 | from wlsdeploy.util import dictionary_utils
|
19 | 17 | from wlsdeploy.util.model import Model
|
20 |
| -from wlsdeploy.util import string_utils |
21 | 18 | from wlsdeploy.util.weblogic_helper import WebLogicHelper
|
22 | 19 |
|
23 |
| -from wlsdeploy.aliases.model_constants import CLUSTER |
24 |
| -from wlsdeploy.aliases.model_constants import MODEL_LIST_DELIMITER |
25 |
| -from wlsdeploy.aliases.model_constants import SERVER |
26 |
| - |
27 | 20 |
|
28 | 21 | class Creator(object):
|
29 | 22 | """
|
30 | 23 | The base class used by the DomainCreator.
|
31 | 24 | """
|
32 | 25 | __class_name = 'Creator'
|
33 | 26 |
|
34 |
| - def __init__(self, model, model_context, aliases): |
35 |
| - self.logger = PlatformLogger('wlsdeploy.create') |
| 27 | + def __init__(self, model, model_context, aliases, exception_type=ExceptionType.CREATE, |
| 28 | + logger=PlatformLogger('wlsdeploy.create')): |
| 29 | + |
| 30 | + self.logger = logger |
36 | 31 | self.aliases = aliases
|
37 |
| - self.alias_helper = AliasHelper(self.aliases, self.logger, ExceptionType.CREATE) |
38 |
| - self.wlst_helper = WlstHelper(self.logger, ExceptionType.CREATE) |
| 32 | + self.alias_helper = AliasHelper(self.aliases, self.logger, exception_type) |
| 33 | + self.wlst_helper = WlstHelper(self.logger, exception_type) |
39 | 34 | self.model = Model(model)
|
40 | 35 | self.model_context = model_context
|
41 | 36 | self.wls_helper = WebLogicHelper(self.logger)
|
42 |
| - self.attribute_setter = AttributeSetter(self.aliases, self.logger, ExceptionType.CREATE) |
| 37 | + self.attribute_setter = AttributeSetter(self.aliases, self.logger, exception_type) |
43 | 38 | # Must be initialized by the subclass since only it has
|
44 | 39 | # the knowledge required to compute the domain name.
|
45 | 40 | self.archive_helper = None
|
@@ -393,7 +388,6 @@ def _create_subfolders(self, location, model_nodes):
|
393 | 388 | self.logger.exiting(class_name=self.__class_name, method_name=_method_name)
|
394 | 389 | return
|
395 | 390 |
|
396 |
| - |
397 | 391 | def _is_type_valid(self, location, type_name):
|
398 | 392 | """
|
399 | 393 | Verify that the specified location in valid for the current WLS version.
|
@@ -451,139 +445,3 @@ def _format_model_path(self, location, name):
|
451 | 445 | path += '/'
|
452 | 446 | path += name
|
453 | 447 | return path
|
454 |
| - |
455 |
| - def _get_existing_server_names(self): |
456 |
| - """ |
457 |
| - Get the list of server names from WLST. |
458 |
| - :return: the list of server names |
459 |
| - :raises: CreateException: is an error occurs reading from the aliases or WLST |
460 |
| - """ |
461 |
| - _method_name = '_get_existing_server_names' |
462 |
| - |
463 |
| - self.logger.entering(class_name=self.__class_name, method_name=_method_name) |
464 |
| - server_location = LocationContext().append_location(SERVER) |
465 |
| - server_list_path = self.alias_helper.get_wlst_list_path(server_location) |
466 |
| - result = self.wlst_helper.get_existing_object_list(server_list_path) |
467 |
| - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
468 |
| - return result |
469 |
| - |
470 |
| - def _get_clusters_and_members_map(self): |
471 |
| - """ |
472 |
| - Get a map keyed by cluster name with values that are a list of member server names |
473 |
| - :return: the cluster name to member server names map |
474 |
| - :raises: CreateException: is an error occurs reading from the aliases or WLST |
475 |
| - """ |
476 |
| - _method_name = '_get_clusters_and_members_map' |
477 |
| - |
478 |
| - self.logger.entering(class_name=self.__class_name, method_name=_method_name) |
479 |
| - server_location = LocationContext().append_location(SERVER) |
480 |
| - server_list_path = self.alias_helper.get_wlst_list_path(server_location) |
481 |
| - server_names = self.wlst_helper.get_existing_object_list(server_list_path) |
482 |
| - server_token = self.alias_helper.get_name_token(server_location) |
483 |
| - cluster_map = OrderedDict() |
484 |
| - for server_name in server_names: |
485 |
| - server_location.add_name_token(server_token, server_name) |
486 |
| - server_attributes_path = self.alias_helper.get_wlst_attributes_path(server_location) |
487 |
| - self.wlst_helper.cd(server_attributes_path) |
488 |
| - |
489 |
| - server_attributes_map = self.wlst_helper.lsa() |
490 |
| - cluster_name = dictionary_utils.get_element(server_attributes_map, CLUSTER) |
491 |
| - if string_utils.is_empty(cluster_name): |
492 |
| - # if server is not part of a cluster, continue with the next server |
493 |
| - continue |
494 |
| - |
495 |
| - if cluster_name not in cluster_map: |
496 |
| - cluster_map[cluster_name] = list() |
497 |
| - cluster_map[cluster_name].append(server_name) |
498 |
| - |
499 |
| - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=cluster_map) |
500 |
| - return cluster_map |
501 |
| - |
502 |
| - def _get_server_group_targeting_limits(self, server_group_targeting_limits, clusters_map): |
503 |
| - """ |
504 |
| - Get any server group targeting limits specified in the model, converting any cluster |
505 |
| - names to the list of members. This method assumes that the limits dictionary is not |
506 |
| - None or empty. |
507 |
| - :param server_group_targeting_limits: the raw server group targeting_limits from the model |
508 |
| - :param clusters_map: the map of cluster names to member server names |
509 |
| - :return: the map of server groups to server names to target |
510 |
| - """ |
511 |
| - _method_name = '_get_server_group_targeting_limits' |
512 |
| - |
513 |
| - self.logger.entering(str(server_group_targeting_limits), str(clusters_map), |
514 |
| - class_name=self.__class_name, method_name=_method_name) |
515 |
| - sg_targeting_limits = copy.deepcopy(server_group_targeting_limits) |
516 |
| - for server_group_name, sg_targeting_limit in sg_targeting_limits.iteritems(): |
517 |
| - if type(sg_targeting_limit) is str: |
518 |
| - if MODEL_LIST_DELIMITER in sg_targeting_limit: |
519 |
| - sg_targeting_limit = sg_targeting_limit.split(MODEL_LIST_DELIMITER) |
520 |
| - else: |
521 |
| - # convert a single value into a list of one... |
522 |
| - new_list = list() |
523 |
| - new_list.append(sg_targeting_limit) |
524 |
| - sg_targeting_limit = new_list |
525 |
| - |
526 |
| - # Convert any references to a cluster name into the list of member server names |
527 |
| - new_list = list() |
528 |
| - for target_name in sg_targeting_limit: |
529 |
| - target_name = target_name.strip() |
530 |
| - if target_name in clusters_map: |
531 |
| - cluster_members = dictionary_utils.get_element(clusters_map, target_name) |
532 |
| - new_list.extend(cluster_members) |
533 |
| - else: |
534 |
| - # Assume it is a server name and add it to the new list |
535 |
| - new_list.append(target_name) |
536 |
| - sg_targeting_limits[server_group_name] = new_list |
537 |
| - |
538 |
| - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=sg_targeting_limits) |
539 |
| - return sg_targeting_limits |
540 |
| - |
541 |
| - def _get_server_to_server_groups_map(self, admin_server_name, server_names, server_groups, sg_targeting_limits): |
542 |
| - """ |
543 |
| - Get the map of server names to the list of server groups to target to that server. |
544 |
| - :param admin_server_name: the admin server name |
545 |
| - :param server_names: the list of server names |
546 |
| - :param server_groups: the complete list of server groups that will, by default, be targeted to |
547 |
| - all managed servers unless the server is listed in the targeting limits map |
548 |
| - :param sg_targeting_limits: the targeting limits map |
549 |
| - :return: the map of server names to the list of server groups to target to that server |
550 |
| - """ |
551 |
| - _method_name = '_get_server_to_server_groups_map' |
552 |
| - |
553 |
| - self.logger.entering(admin_server_name, str(server_names), str(server_groups), str(sg_targeting_limits), |
554 |
| - class_name=self.__class_name, method_name=_method_name) |
555 |
| - result = OrderedDict() |
556 |
| - for server_name in server_names: |
557 |
| - server_groups_for_server = self.__get_server_groups_for_server(server_name, sg_targeting_limits) |
558 |
| - if server_groups_for_server is not None: |
559 |
| - result[server_name] = server_groups_for_server |
560 |
| - elif server_name != admin_server_name: |
561 |
| - # By default, we only target managed servers unless explicitly listed in the targeting limits |
562 |
| - result[server_name] = list(server_groups) |
563 |
| - else: |
564 |
| - result[admin_server_name] = list() |
565 |
| - if admin_server_name not in result: |
566 |
| - result[admin_server_name] = list() |
567 |
| - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
568 |
| - return result |
569 |
| - |
570 |
| - def __get_server_groups_for_server(self, server_name, sg_targeting_limits): |
571 |
| - """ |
572 |
| - Get the servers groups to target for a given server name. |
573 |
| - :param server_name: the server name |
574 |
| - :param sg_targeting_limits: the targeting limits |
575 |
| - :return: the list of server groups to target to the specified server name, or None |
576 |
| - if the server name does not appear in the targeting limits |
577 |
| - """ |
578 |
| - _method_name = '__get_server_groups_for_server' |
579 |
| - |
580 |
| - self.logger.entering(server_name, str(sg_targeting_limits), |
581 |
| - class_name=self.__class_name, method_name=_method_name) |
582 |
| - result = None |
583 |
| - for server_group, server_names_list in sg_targeting_limits.iteritems(): |
584 |
| - if server_name in server_names_list: |
585 |
| - if result is None: |
586 |
| - result = list() |
587 |
| - result.append(server_group) |
588 |
| - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
589 |
| - return result |
0 commit comments