Load server groups and servers.
(input_file, selected_servers,
load_user=current_user, from_setup=False,
auth_source=INTERNAL)
| 650 | |
| 651 | |
| 652 | def load_database_servers(input_file, selected_servers, |
| 653 | load_user=current_user, from_setup=False, |
| 654 | auth_source=INTERNAL): |
| 655 | """Load server groups and servers. |
| 656 | """ |
| 657 | user = _does_user_exist(load_user, from_setup, auth_source) |
| 658 | if user is None: |
| 659 | return False, USER_NOT_FOUND % load_user |
| 660 | |
| 661 | # generate full path of file |
| 662 | try: |
| 663 | if from_setup: |
| 664 | file_path = unquote(input_file) |
| 665 | else: |
| 666 | file_path = filename_with_file_manager_path(unquote(input_file)) |
| 667 | except Exception as e: |
| 668 | return _handle_error(str(e), from_setup) |
| 669 | |
| 670 | try: |
| 671 | with open(file_path) as f: |
| 672 | data = json.load(f) |
| 673 | except json.decoder.JSONDecodeError as e: |
| 674 | return _handle_error(gettext("Error parsing input file %s: %s" % |
| 675 | (file_path, e)), from_setup) |
| 676 | except Exception as e: |
| 677 | return _handle_error(gettext("Error reading input file %s: [%d] %s" % |
| 678 | (file_path, e.errno, e.strerror)), from_setup) |
| 679 | |
| 680 | f.close() |
| 681 | |
| 682 | user_id = user.id |
| 683 | # Counters |
| 684 | groups_added = 0 |
| 685 | servers_added = 0 |
| 686 | |
| 687 | # Get the server groups |
| 688 | groups = ServerGroup.query.filter_by(user_id=user_id) |
| 689 | |
| 690 | # Validate server data |
| 691 | error_msg = validate_json_data(data, user.has_role("Administrator")) |
| 692 | if error_msg is not None and from_setup: |
| 693 | print(ADD_SERVERS_MSG % (groups_added, servers_added)) |
| 694 | return _handle_error(error_msg, from_setup) |
| 695 | |
| 696 | for server in data["Servers"]: |
| 697 | if selected_servers is None or str(server) in selected_servers: |
| 698 | obj = data["Servers"][server] |
| 699 | |
| 700 | # Get the group. Create if necessary |
| 701 | group_id = next( |
| 702 | (g.id for g in groups if g.name == obj["Group"]), -1) |
| 703 | |
| 704 | if group_id == -1: |
| 705 | new_group = ServerGroup() |
| 706 | new_group.name = obj["Group"] |
| 707 | new_group.user_id = user_id |
| 708 | db.session.add(new_group) |
| 709 |
no test coverage detected