|
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 | """ |
@@ -389,7 +382,6 @@ def _create_subfolders(self, location, model_nodes): |
389 | 382 | self.logger.exiting(class_name=self.__class_name, method_name=_method_name) |
390 | 383 | return |
391 | 384 |
|
392 | | - |
393 | 385 | def _is_type_valid(self, location, type_name): |
394 | 386 | """ |
395 | 387 | Verify that the specified location in valid for the current WLS version. |
@@ -447,139 +439,3 @@ def _format_model_path(self, location, name): |
447 | 439 | path += '/' |
448 | 440 | path += name |
449 | 441 | return path |
450 | | - |
451 | | - def _get_existing_server_names(self): |
452 | | - """ |
453 | | - Get the list of server names from WLST. |
454 | | - :return: the list of server names |
455 | | - :raises: CreateException: is an error occurs reading from the aliases or WLST |
456 | | - """ |
457 | | - _method_name = '_get_existing_server_names' |
458 | | - |
459 | | - self.logger.entering(class_name=self.__class_name, method_name=_method_name) |
460 | | - server_location = LocationContext().append_location(SERVER) |
461 | | - server_list_path = self.alias_helper.get_wlst_list_path(server_location) |
462 | | - result = self.wlst_helper.get_existing_object_list(server_list_path) |
463 | | - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
464 | | - return result |
465 | | - |
466 | | - def _get_clusters_and_members_map(self): |
467 | | - """ |
468 | | - Get a map keyed by cluster name with values that are a list of member server names |
469 | | - :return: the cluster name to member server names map |
470 | | - :raises: CreateException: is an error occurs reading from the aliases or WLST |
471 | | - """ |
472 | | - _method_name = '_get_clusters_and_members_map' |
473 | | - |
474 | | - self.logger.entering(class_name=self.__class_name, method_name=_method_name) |
475 | | - server_location = LocationContext().append_location(SERVER) |
476 | | - server_list_path = self.alias_helper.get_wlst_list_path(server_location) |
477 | | - server_names = self.wlst_helper.get_existing_object_list(server_list_path) |
478 | | - server_token = self.alias_helper.get_name_token(server_location) |
479 | | - cluster_map = OrderedDict() |
480 | | - for server_name in server_names: |
481 | | - server_location.add_name_token(server_token, server_name) |
482 | | - server_attributes_path = self.alias_helper.get_wlst_attributes_path(server_location) |
483 | | - self.wlst_helper.cd(server_attributes_path) |
484 | | - |
485 | | - server_attributes_map = self.wlst_helper.lsa() |
486 | | - cluster_name = dictionary_utils.get_element(server_attributes_map, CLUSTER) |
487 | | - if string_utils.is_empty(cluster_name): |
488 | | - # if server is not part of a cluster, continue with the next server |
489 | | - continue |
490 | | - |
491 | | - if cluster_name not in cluster_map: |
492 | | - cluster_map[cluster_name] = list() |
493 | | - cluster_map[cluster_name].append(server_name) |
494 | | - |
495 | | - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=cluster_map) |
496 | | - return cluster_map |
497 | | - |
498 | | - def _get_server_group_targeting_limits(self, server_group_targeting_limits, clusters_map): |
499 | | - """ |
500 | | - Get any server group targeting limits specified in the model, converting any cluster |
501 | | - names to the list of members. This method assumes that the limits dictionary is not |
502 | | - None or empty. |
503 | | - :param server_group_targeting_limits: the raw server group targeting_limits from the model |
504 | | - :param clusters_map: the map of cluster names to member server names |
505 | | - :return: the map of server groups to server names to target |
506 | | - """ |
507 | | - _method_name = '_get_server_group_targeting_limits' |
508 | | - |
509 | | - self.logger.entering(str(server_group_targeting_limits), str(clusters_map), |
510 | | - class_name=self.__class_name, method_name=_method_name) |
511 | | - sg_targeting_limits = copy.deepcopy(server_group_targeting_limits) |
512 | | - for server_group_name, sg_targeting_limit in sg_targeting_limits.iteritems(): |
513 | | - if type(sg_targeting_limit) is str: |
514 | | - if MODEL_LIST_DELIMITER in sg_targeting_limit: |
515 | | - sg_targeting_limit = sg_targeting_limit.split(MODEL_LIST_DELIMITER) |
516 | | - else: |
517 | | - # convert a single value into a list of one... |
518 | | - new_list = list() |
519 | | - new_list.append(sg_targeting_limit) |
520 | | - sg_targeting_limit = new_list |
521 | | - |
522 | | - # Convert any references to a cluster name into the list of member server names |
523 | | - new_list = list() |
524 | | - for target_name in sg_targeting_limit: |
525 | | - target_name = target_name.strip() |
526 | | - if target_name in clusters_map: |
527 | | - cluster_members = dictionary_utils.get_element(clusters_map, target_name) |
528 | | - new_list.extend(cluster_members) |
529 | | - else: |
530 | | - # Assume it is a server name and add it to the new list |
531 | | - new_list.append(target_name) |
532 | | - sg_targeting_limits[server_group_name] = new_list |
533 | | - |
534 | | - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=sg_targeting_limits) |
535 | | - return sg_targeting_limits |
536 | | - |
537 | | - def _get_server_to_server_groups_map(self, admin_server_name, server_names, server_groups, sg_targeting_limits): |
538 | | - """ |
539 | | - Get the map of server names to the list of server groups to target to that server. |
540 | | - :param admin_server_name: the admin server name |
541 | | - :param server_names: the list of server names |
542 | | - :param server_groups: the complete list of server groups that will, by default, be targeted to |
543 | | - all managed servers unless the server is listed in the targeting limits map |
544 | | - :param sg_targeting_limits: the targeting limits map |
545 | | - :return: the map of server names to the list of server groups to target to that server |
546 | | - """ |
547 | | - _method_name = '_get_server_to_server_groups_map' |
548 | | - |
549 | | - self.logger.entering(admin_server_name, str(server_names), str(server_groups), str(sg_targeting_limits), |
550 | | - class_name=self.__class_name, method_name=_method_name) |
551 | | - result = OrderedDict() |
552 | | - for server_name in server_names: |
553 | | - server_groups_for_server = self.__get_server_groups_for_server(server_name, sg_targeting_limits) |
554 | | - if server_groups_for_server is not None: |
555 | | - result[server_name] = server_groups_for_server |
556 | | - elif server_name != admin_server_name: |
557 | | - # By default, we only target managed servers unless explicitly listed in the targeting limits |
558 | | - result[server_name] = list(server_groups) |
559 | | - else: |
560 | | - result[admin_server_name] = list() |
561 | | - if admin_server_name not in result: |
562 | | - result[admin_server_name] = list() |
563 | | - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
564 | | - return result |
565 | | - |
566 | | - def __get_server_groups_for_server(self, server_name, sg_targeting_limits): |
567 | | - """ |
568 | | - Get the servers groups to target for a given server name. |
569 | | - :param server_name: the server name |
570 | | - :param sg_targeting_limits: the targeting limits |
571 | | - :return: the list of server groups to target to the specified server name, or None |
572 | | - if the server name does not appear in the targeting limits |
573 | | - """ |
574 | | - _method_name = '__get_server_groups_for_server' |
575 | | - |
576 | | - self.logger.entering(server_name, str(sg_targeting_limits), |
577 | | - class_name=self.__class_name, method_name=_method_name) |
578 | | - result = None |
579 | | - for server_group, server_names_list in sg_targeting_limits.iteritems(): |
580 | | - if server_name in server_names_list: |
581 | | - if result is None: |
582 | | - result = list() |
583 | | - result.append(server_group) |
584 | | - self.logger.exiting(class_name=self.__class_name, method_name=_method_name, result=result) |
585 | | - return result |
0 commit comments