| #!/bin/env python |
| # -*- coding: utf-8 -*- |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| """ |
| This module init Palo runtime environment. |
| Date: 2015/10/07 17:23:06 |
| """ |
| import threading |
| import env_config |
| import execute |
| |
| |
| def create_fe_dir(): |
| """create fe dir. |
| """ |
| cmd = 'mkdir -p %s' % env_config.fe_path |
| for host_name in [env_config.master] + env_config.follower_list + \ |
| env_config.observer_list + env_config.dynamic_add_fe_list: |
| status, output = execute.exe_cmd(cmd, host_name) |
| |
| |
| def create_be_dir(): |
| """create be dir. |
| """ |
| create_be_dir_threads = [] |
| for host_name in env_config.be_list + env_config.dynamic_add_be_list: |
| t = threading.Thread(target=create_one_be_dir, args=(host_name,)) |
| t.start() |
| create_be_dir_threads.append(t) |
| for t in create_be_dir_threads: |
| t.join() |
| |
| |
| def create_one_be_dir(host_name): |
| """create be dir and data dir""" |
| # if data_path not in be_path, will not backup, need to clean |
| print("clean %s data path..." % host_name) |
| # clean data path & create |
| for dir in env_config.be_data_path_list: |
| cmd = 'mkdir -p /home/%s/empty; rsync --delete-before -a /home/%s/empty/ %s/' % \ |
| (env_config.host_username, env_config.host_username, dir) |
| status, output = execute.exe_cmd(cmd, host_name) |
| data_path = ' '.join(env_config.be_data_path_list) |
| cmd = 'rm -rf %s' % data_path |
| status, output = execute.exe_cmd(cmd, host_name) |
| |
| print("%s mkdir be & data path" % host_name) |
| cmd = 'mkdir -p %s' % env_config.be_path |
| status, output = execute.exe_cmd(cmd, host_name) |
| cmd = 'mkdir -p %s' % data_path |
| status, output = execute.exe_cmd(cmd, host_name) |
| |
| |
| def create_palo_dir(): |
| """create palo dir. |
| """ |
| create_fe_dir() |
| create_be_dir() |
| |
| |
| def check_fe_port(): |
| """check whether fe port in use |
| """ |
| query_port = env_config.fe_query_port |
| http_port = query_port - 1000 |
| rpc_port = query_port - 10 |
| edit_log_port = query_port - 20 |
| port_list = [query_port, http_port, rpc_port, edit_log_port] |
| for host_name in [env_config.master] + env_config.follower_list + \ |
| env_config.observer_list + env_config.dynamic_add_fe_list: |
| for port in port_list: |
| cmd = 'netstat -ntpl | grep "\:%s "' % (port) |
| status, output = execute.exe_cmd(cmd, host_name) |
| if status == 0: |
| return False |
| return True |
| |
| |
| def check_be_port(): |
| """check whether be port in use |
| """ |
| query_port = env_config.fe_query_port |
| be_port = query_port + 30 |
| webserver_port = query_port - 1000 + 10 |
| heartbeat_service_port = query_port + 20 |
| port_list = [be_port, webserver_port, heartbeat_service_port] |
| for host_name in env_config.be_list + env_config.dynamic_add_be_list: |
| for port in port_list: |
| cmd = 'netstat -ntpl | grep "\:%s "' % (port) |
| status, output = execute.exe_cmd(cmd, host_name) |
| if status == 0: |
| return False |
| return True |
| |
| |
| def check_palo_port(): |
| """check whether palo port in use |
| """ |
| if not check_fe_port(): |
| return False |
| if not check_be_port(): |
| return False |
| return True |
| |
| |
| def init_palo_env(): |
| """init palo env |
| """ |
| # if not check_palo_port(): |
| # return False |
| create_palo_dir() |
| return True |
| |
| |
| if __name__ == '__main__': |
| init_palo_env() |