コード例 #1
0
ファイル: cinderstorage.py プロジェクト: zbwzy/fuel-python
    def install():
        print 'Cinder-storage.install start===='
        keystone_vip = JSONUtility.getValue('keystone_vip')
        print 'start to install prerequisites============='
        script_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 
                                                      'cinder-storage', 
                                                      'cinder_storage_service.sh')
        
        ShellCmdExecutor.execCmd('cp -r %s /opt/' % script_file_path)
        ShellCmdExecutor.execCmd('chmod 777 /opt/cinder_storage_service.sh')
        FileUtil.replaceFileContent('/opt/cinder_storage_service.sh', '<KEYSTONE_VIP>', keystone_vip)
        ShellCmdExecutor.execCmd('bash /opt/cinder_storage_service.sh')
        
        print 'install prerequisites done####'
        
        yumCmd = 'yum install lvm2 -y'
        ShellCmdExecutor.execCmd(yumCmd)
        
        ShellCmdExecutor.execCmd("/etc/init.d/lvm2-lvmetad start")
        ShellCmdExecutor.execCmd("chkconfig lvm2-lvmetad on")
        
        #Default create volume
        #Create the LVM physical volume /dev/sdb1:
#         createCmd = 'pvcreate /dev/sdb1' 
#         ShellCmdExecutor.execCmd(createCmd)
        
#         createCmd = 'vgcreate cinder-volumes /dev/sdb1'
#         ShellCmdExecutor.execCmd(createCmd)
       
        yumCmd = 'yum install openstack-cinder python-oslo-db MySQL-python -y'
        ShellCmdExecutor.execCmd(yumCmd)
        
        print 'Cinder-storage.install done####'
        pass
コード例 #2
0
    def confiugureNeutron():
        neutronConfTemplateFilePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'nova-compute', 'neutron.conf')
        
        ShellCmdExecutor.execCmd('cp -r %s /etc/neutron/' % neutronConfTemplateFilePath)
        #configure neutron
        keystone_vip = JSONUtility.getValue('keystone_vip')
#         rabbit_host = JSONUtility.getValue("rabbit_host")
#         rabbit_vip = JSONUtility.getValue("rabbit_vip")
        rabbit_hosts = JSONUtility.getValue("rabbit_hosts")
        rabbit_userid = JSONUtility.getValue("rabbit_userid")
        rabbit_password = JSONUtility.getValue("rabbit_password")
        
        #REFACTOR LATER
        neutron_pass = '******'
        
        neutronConfFilePath = '/etc/neutron/neutron.conf'
        ShellCmdExecutor.execCmd('chmod 777 /etc/neutron/neutron.conf')
        FileUtil.replaceFileContent(neutronConfFilePath, '<KEYSTONE_VIP>', keystone_vip)
        FileUtil.replaceFileContent(neutronConfFilePath, '<NEUTRON_PASS>', neutron_pass)
#         FileUtil.replaceFileContent(neutronConfFilePath, '<RABBIT_HOST>', rabbit_vip)
        FileUtil.replaceFileContent(neutronConfFilePath, '<RABBIT_HOSTS>', rabbit_hosts)
        FileUtil.replaceFileContent(neutronConfFilePath, '<RABBIT_USERID>', rabbit_userid)
        FileUtil.replaceFileContent(neutronConfFilePath, '<RABBIT_PASSWORD>', rabbit_password)
        
        ShellCmdExecutor.execCmd('chown -R neutron:neutron /etc/neutron')
        pass
コード例 #3
0
ファイル: cinderstorage.py プロジェクト: zbwzy/fuel-python
    def install():
        #KEYSTONE_ADMIN_PASSWORD
        print 'Cinder-storage.install start===='
        #
        keystone_vip = JSONUtility.getValue('keystone_vip')
        keystone_admin_password = JSONUtility.getValue('keystone_admin_password')
        print 'start to install prerequisites============='
        script_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 
                                                      'cinder-storage', 
                                                      'cinder_storage_service.sh')
        
        ShellCmdExecutor.execCmd('cp -r %s /opt/' % script_file_path)
        ShellCmdExecutor.execCmd('chmod 777 /opt/cinder_storage_service.sh')
        FileUtil.replaceFileContent('/opt/cinder_storage_service.sh', '<KEYSTONE_VIP>', keystone_vip)
        ShellCmdExecutor.execCmd('bash /opt/cinder_storage_service.sh')
        
        
        ShellCmdExecutor.execCmd("systemctl restart lvm2-lvmetad.service")
        
        #Default create volume
        #Create the LVM physical volume /dev/sdb1:
#         createCmd = 'pvcreate /dev/sdb1' 
#         ShellCmdExecutor.execCmd(createCmd)
        
#         createCmd = 'vgcreate cinder-volumes /dev/sdb1'
#         ShellCmdExecutor.execCmd(createCmd)
       
        yumCmd = 'yum install openstack-cinder targetcli python-oslo-db python-oslo-log MySQL-python -y'
        ShellCmdExecutor.execCmd(yumCmd)
        
        print 'Cinder-storage.install done####'
        pass
コード例 #4
0
ファイル: network.py プロジェクト: zbwzy/fuel-python
    def configOVS():
        output, exitcode = ShellCmdExecutor.execCmd('systemctl enable openvswitch.service')
        output, exitcode = ShellCmdExecutor.execCmd('systemctl start openvswitch.service')
        time.sleep(3)
        #Add the external bridge:
        ShellCmdExecutor.execCmd('ovs-vsctl add-br br-ex')
        time.sleep(2)
        #Add a port to the external bridge that connects to the physical external network interface:
        #Replace INTERFACE_NAME with the actual interface name. For example, eth2 or ens256.
        #REFACTOR LATER:on physical, the below is bond1 or bond2
        physical_external_network_interface = 'eth2'
#         addExternalBridgeCmd = 'ovs-vsctl add-port br-ex %s' % physical_external_network_interface
        addExternalBridgeTemplateScriptPath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'network', 'addExternalBridge.sh')
        ShellCmdExecutor.execCmd('cp -r %s /opt/' % addExternalBridgeTemplateScriptPath)
        FileUtil.replaceFileContent('/opt/addExternalBridge.sh', 
                                    '<PHYSICAL_EXTERNAL_NETWORK_INTERFACE>', 
                                    physical_external_network_interface)
#         output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
#         localIP = output.strip()
#         FileUtil.replaceFileContent('/opt/addExternalBridge.sh', 
#                                     '<LOCAL_IP>', 
#                                     localIP)
        
        ShellCmdExecutor.execCmd('bash /opt/addExternalBridge.sh')
        pass
コード例 #5
0
ファイル: dashboard.py プロジェクト: zbwzy/fuel-python
 def configConfFile():
     localSettingsFileTemplatePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'dashboard', 'local_settings')
     dashboardConfFileDir = '/etc/openstack-dashboard/'
     
     if os.path.exists(Dashboard.DASHBOARD_CONF_FILE_PATH) :
         ShellCmdExecutor.execCmd("rm -rf %s" % Dashboard.DASHBOARD_CONF_FILE_PATH)
         pass
     else :
         ShellCmdExecutor.execCmd("sudo mkdir %s" % dashboardConfFileDir)
         pass
     
     print 'localSettingsFileTemplatePath=%s--' % localSettingsFileTemplatePath
     ShellCmdExecutor.execCmd("sudo chmod 777 %s" % dashboardConfFileDir)
     ####NEW
     ShellCmdExecutor.execCmd('cat %s > /tmp/local_settings' % localSettingsFileTemplatePath)
     ShellCmdExecutor.execCmd('mv /tmp/local_settings %s' % dashboardConfFileDir)
     
     keystone_vip = JSONUtility.getValue("keystone_vip")
     
     ShellCmdExecutor.execCmd('sudo chmod 777 %s' % Dashboard.DASHBOARD_CONF_FILE_PATH)
     FileUtil.replaceFileContent(Dashboard.DASHBOARD_CONF_FILE_PATH, '<KEYSTONE_VIP>', keystone_vip)
     ShellCmdExecutor.execCmd('sudo chmod 644 %s' % Dashboard.DASHBOARD_CONF_FILE_PATH)
     
     #Assign rights: can be accessed
     DIR_PATH = '/usr/share/openstack-dashboard/openstack_dashboard/local'
     if os.path.exists(DIR_PATH) :
         ShellCmdExecutor.execCmd('sudo chmod 777 %s' % DIR_PATH)
         pass
     pass
コード例 #6
0
 def configureML2():
     ml2ConfTemplatePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'nova-compute', 'ml2_conf.ini')
     ShellCmdExecutor.execCmd('cp -r %s /etc/neutron/plugins/ml2/' % ml2ConfTemplatePath)
     
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     localIP = output.strip()
     FileUtil.replaceFileContent('/etc/neutron/plugins/ml2/ml2_conf.ini', '<INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS>', localIP)
     pass
コード例 #7
0
ファイル: ShellCmdExecutor.py プロジェクト: zbwzy/fuel-python
 def execCmdWithoutKillTimeout(cmd, ifPrint=None, env=None):
     if not cmd:
         return
     
     print('Executing cmd without timeout : %s' % cmd)
     output = None
     error = None
     outputFile = None
     outputFilePath = ""
     try :
         strTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
         strUUID = commands.getoutput('uuidgen')
         outputFileName = "output%s.%s.log" % (strTime, strUUID)
         if not os.path.exists(ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR) :
             os.system("mkdir -p %s" % ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR)
             pass
         
         outputFilePath = "%s/%s" % (ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR, outputFileName)
         print("OutputFileName=%s" % outputFilePath)
         outputFile=open(outputFilePath, 'w')
         
         if env != None :
             try:
                 import inspect
                 import json
                 stack = inspect.stack()
                 the_class = stack[2][0].f_locals["self"].__class__.__name__
                 if not os.path.exists("/var/log/autoops_env.json"):
                     record_env = {the_class: env}
                     content = json.dumps(record_env, sort_keys=True, indent=4)
                 else:
                     content_data = json.load(file("/var/log/autoops_env.json"))
                     content_data[the_class] = env
                     content = json.dumps(content_data, sort_keys=True, indent=4)
                 FileUtil.writeContent("/var/log/autoops_env.json", content)
             except Exception as ex:
                 print("Save parsed Env params Failed")
                 print(ex)
             env = dict(os.environ.items() + env.items())
             pass
         p = subprocess.Popen(cmd, shell=True, close_fds=True, stdout=outputFile, stderr=subprocess.PIPE, env=env)
         output, error = p.communicate()
         
         output = FileUtil.readContent(outputFilePath)
         
         if ifPrint :
             print("cmd output=%s---" % output)
         elif not ifPrint or ifPrint == None :
             pass
         
         if error!=None and error!="" :
             print("cmd error=%s---" % error)
             pass
         
         if error!=None and error!="" and cmd.find(".sh") > -1:
             error = "SOE: " + str(error)
     except Exception, e :
         print(e)
コード例 #8
0
ファイル: adminopenrc.py プロジェクト: zbwzy/fuel-python
 def prepareAdminOpenrc():
     adminOpenrcTemplateFilePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'admin-openrc.sh')
     ShellCmdExecutor.execCmd('cp -r %s /opt/openstack_conf' % adminOpenrcTemplateFilePath)
     
     keystone_admin_password = JSONUtility.getValue('keystone_admin_password')
     keystone_vip = JSONUtility.getValue('keystone_vip')
     FileUtil.replaceFileContent('/opt/openstack_conf/admin-openrc.sh', '<KEYSTONE_ADMIN_PASSWORD>', keystone_admin_password)
     FileUtil.replaceFileContent('/opt/openstack_conf/admin-openrc.sh', '<KEYSTONE_VIP>', keystone_vip)
     pass
コード例 #9
0
ファイル: dashboardHAProxy.py プロジェクト: zbwzy/fuel-python
    def configureKeystoneHAProxy():
        dashboard_vip = JSONUtility.getValue("dashboard_vip")
        
        openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
        HAProxyTemplateFilePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'haproxy.cfg')
        haproxyConfFilePath = PropertiesUtility.getValue(openstackConfPopertiesFilePath, 'HAPROXY_CONF_FILE_PATH')
        print 'haproxyConfFilePath=%s' % haproxyConfFilePath
        if not os.path.exists('/etc/haproxy') :
            ShellCmdExecutor.execCmd('sudo mkdir /etc/haproxy')
            pass
        
        if not os.path.exists(haproxyConfFilePath) :
            ShellCmdExecutor.execCmd('sudo cp -rf %s %s' % (HAProxyTemplateFilePath, haproxyConfFilePath))
            pass
        
        ShellCmdExecutor.execCmd('sudo chmod 777 %s' % haproxyConfFilePath)
        dashboardBackendStringTemplate = '''
listen dashboard_cluster
  bind <DASHBOARD_VIP>:80
  balance source
  option tcpka
  option httpchk
  option tcplog
  <DASHBOARD_SERVER_LIST>
        '''
        ###############
        dashboardBackendString = dashboardBackendStringTemplate.replace('<DASHBOARD_VIP>', dashboard_vip)
        
        ################new
        dashboard_ips = JSONUtility.getValue("dashboard_ips")
        dashboard_ip_list = dashboard_ips.strip().split(',')
        serverDashboardBackendTemplate = 'server dashboard-<INDEX> <SERVER_IP>:8080 weight 3 check inter 2000 rise 2 fall 3'
        
        dashboardServerListContent = ''
        index = 1
        for dashboard_ip in dashboard_ip_list:
            print 'dashboard_ip=%s' % dashboard_ip
            dashboardServerListContent += serverDashboardBackendTemplate.replace('<INDEX>', str(index)).replace('<SERVER_IP>', dashboard_ip)
            
            dashboardServerListContent += '\n'
            dashboardServerListContent += '  '

            index += 1
            pass
        
        dashboardServerListContent = dashboardServerListContent.strip()
        print 'dashboardServerListContent=%s--' % dashboardServerListContent
        
        dashboardBackendString = dashboardBackendString.replace('<DASHBOARD_SERVER_LIST>', dashboardServerListContent)
        
        print 'dashboardBackendString=%s--' % dashboardBackendString
        
        #append
        FileUtil.replaceFileContent(haproxyConfFilePath, '<DASHBOARD_LIST>', dashboardBackendString)
        
        ShellCmdExecutor.execCmd('sudo chmod 644 %s' % haproxyConfFilePath)
コード例 #10
0
ファイル: keystone.py プロジェクト: zbwzy/fuel-python
    def configConfFile():
        print "configure keystone conf file======"
        mysql_vip = JSONUtility.getValue("mysql_vip")
        admin_token = JSONUtility.getValue("admin_token")
        #memcache service list
        keystone_ips_string = JSONUtility.getValue("keystone_ips")
        keystone_ip_list = keystone_ips_string.split(',')
        memcached_service_list = []
        for ip in keystone_ip_list:
            memcached_service_list.append(ip.strip() + ':11211')
            pass
        
        memcached_service_string = ','.join(memcached_service_list)
        print 'memcached_service_string=%s--' % memcached_service_string
        
        openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
        keystoneConfDir = PropertiesUtility.getValue(openstackConfPopertiesFilePath, 'KEYSTONE_CONF_DIR')
        
        keystone_conf_file_path = os.path.join(keystoneConfDir, 'keystone.conf')
        
        if not os.path.exists(keystoneConfDir) :
            os.system("sudo mkdir -p %s" % keystoneConfDir)
            pass
        
        ShellCmdExecutor.execCmd("cp -r %s %s" % (SOURCE_KEYSTONE_CONF_FILE_TEMPLATE_PATH, keystoneConfDir))
        ShellCmdExecutor.execCmd("sudo chmod 777 %s" % keystone_conf_file_path)
#         #if exist, remove original conf files
#         if os.path.exists(keystone_conf_file_path) :
#             os.system("sudo rm -rf %s" % keystone_conf_file_path)
#             pass
#         
#         ShellCmdExecutor.execCmd('chmod 777 /etc/keystone')
#         
# #         os.system("sudo cp -r %s %s" % (SOURCE_KEYSTONE_CONF_FILE_TEMPLATE_PATH, keystoneConfDir))
#         ###NEW
#         ShellCmdExecutor.execCmd('cat %s > /tmp/keystone.conf' % SOURCE_KEYSTONE_CONF_FILE_TEMPLATE_PATH)
#         ShellCmdExecutor.execCmd('mv /tmp/keystone.conf /etc/keystone/')
#         
#         ShellCmdExecutor.execCmd("sudo chmod 777 %s" % keystone_conf_file_path)
        ###########LOCAL_IP:retrieve it from one file, the LOCAL_IP file is generated when this project inits.
        localIP = Keystone.getLocalIP()
        print 'localip=%s--' % localIP
        
#         FileUtil.replaceByRegularExpression(keystone_conf_file_path, '<LOCAL_IP>', localIP)
#         FileUtil.replaceByRegularExpression(keystone_conf_file_path, '<MYSQL_VIP>', mysql_vip)
        keystoneDbPass = JSONUtility.getValue('keystone_dbpass')
        FileUtil.replaceFileContent(keystone_conf_file_path, '<ADMIN_TOKEN>', admin_token)
        FileUtil.replaceFileContent(keystone_conf_file_path, '<LOCAL_MANAGEMENT_IP>', localIP)
        FileUtil.replaceFileContent(keystone_conf_file_path, '<MYSQL_VIP>', mysql_vip)
        FileUtil.replaceFileContent(keystone_conf_file_path, '<KEYSTONE_DBPASS>', keystoneDbPass)
        FileUtil.replaceFileContent(keystone_conf_file_path, '<MEMCACHED_LIST>', memcached_service_string)
        
        ShellCmdExecutor.execCmd("chmod 644 %s" % keystone_conf_file_path)
        print "configure keystone conf file done####"
        pass
コード例 #11
0
ファイル: MySQLHA.py プロジェクト: zbwzy/fuel-python
 def sourceAdminOpenRC():
     adminOpenRCScriptPath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'admin_openrc.sh')
     print 'adminOpenRCScriptPath=%s' % adminOpenRCScriptPath
     
     ShellCmdExecutor.execCmd('cp -rf %s /opt/' % adminOpenRCScriptPath)
     
     keystone_vip = JSONUtility.getValue("keystone_vip")
     FileUtil.replaceFileContent('/opt/admin_openrc.sh', '<KEYSTONE_VIP>', keystone_vip)
     time.sleep(2)
     ShellCmdExecutor.execCmd('source /opt/admin_openrc.sh')
     pass
コード例 #12
0
ファイル: ceilometer.py プロジェクト: zbwzy/fuel-python
 def getMeteringSecret():
     if not os.path.exists(Ceilometer.METERING_SECRET_FILE_PATH) :
         output, exitcode = ShellCmdExecutor.execCmd("openssl rand -hex 10")
         meteringSecret = output.strip()
         FileUtil.writeContent(Ceilometer.METERING_SECRET_FILE_PATH, meteringSecret)
         pass
     
     output, exitcode = ShellCmdExecutor.execCmd('cat %s' % Ceilometer.METERING_SECRET_FILE_PATH)
     
     meteringSecret = output.strip()
     
     return meteringSecret
コード例 #13
0
ファイル: YAMLUtil.py プロジェクト: zbwzy/fuel-python
 def writeIPList(role):
     #Default, in /opt/{role}_ip_list
     ipList = YAMLUtil.getRoleIPList(role)
     ipListContent = ','.join(ipList)
     ip_list_file_path = '/opt/{role}_ip_list'.format(role=role).replace('-', '_')
     
     if os.path.exists(ip_list_file_path) :
         ShellCmdExecutor.execCmd('rm -rf %s' % ip_list_file_path)
         pass
     
     FileUtil.writeContent(ip_list_file_path, ipListContent)
     pass
コード例 #14
0
 def configureOVS():
     ShellCmdExecutor.execCmd("service openvswitch start")
     ShellCmdExecutor.execCmd("chkconfig openvswitch on")
     
     scriptPath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'nova-compute', 'addBridgeAndInterface.sh')
     ShellCmdExecutor.execCmd('cp -r %s /opt/' % scriptPath)
     
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     localIP = output.strip()
     
     FileUtil.replaceFileContent('/opt/addBridgeAndInterface.sh', '<LOCAL_IP>', localIP)
     ShellCmdExecutor.execCmd('bash /opt/addBridgeAndInterface.sh')
     pass
コード例 #15
0
 def configKeepalived():
     ha_vip1 = JSONUtility.getValue('ha_vip1')
     ha_vip2 = JSONUtility.getValue('ha_vip2')
     
     ha_vip1_interface = JSONUtility.getValue('ha_vip1_interface')
     ha_vip2_interface = JSONUtility.getValue('ha_vip2_interface')
     
     keepalived_conf_1_template_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'ha', 'keepalived.conf.1')
     keepalived_conf_2_template_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'ha', 'keepalived.conf.2')
     
     keepalived_conf_dest_path = '/etc/keepalived/keepalived.conf'
     haproxy_keepalived_ips = JSONUtility.getValue('haproxy_keepalived_ips')
     haproxy_keepalived_ip_list = haproxy_keepalived_ips.split(',')
     
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     local_management_ip = output.strip()
     serverIndex = ServerSequence.getIndex(haproxy_keepalived_ip_list, local_management_ip)
     if serverIndex == 0 :
         ShellCmdExecutor.execCmd('cp -r %s %s' % (keepalived_conf_1_template_path, keepalived_conf_dest_path))
         FileUtil.replaceFileContent(keepalived_conf_dest_path, '<HA_VIP1>', ha_vip1)
         FileUtil.replaceFileContent(keepalived_conf_dest_path, '<HA_VIP1_INTERFACE>', ha_vip1_interface)
         pass
     
     if serverIndex == 1 :
         ShellCmdExecutor.execCmd('cp -r %s %s' % (keepalived_conf_2_template_path, keepalived_conf_dest_path))
         FileUtil.replaceFileContent(keepalived_conf_dest_path, '<HA_VIP2>', ha_vip2)
         FileUtil.replaceFileContent(keepalived_conf_dest_path, '<HA_VIP1_INTERFACE>', ha_vip2_interface)
         pass
     
     haproxy_check_script_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'ha', 'haproxy_check.sh')
     ShellCmdExecutor.execCmd('cp -r %s /etc/keepalived/' % haproxy_check_script_path)
     ShellCmdExecutor.execCmd('chmod 644 %s' % keepalived_conf_dest_path)
     ShellCmdExecutor.execCmd('chmod 644 /etc/keepalived/haproxy_check.sh')
     pass
コード例 #16
0
ファイル: initKeystone.py プロジェクト: zbwzy/fuel-python
 def initNeutron():
     ha_vip1 = JSONUtility.getValue('ha_vip1')
     ha_vip2 = JSONUtility.getValue('ha_vip2')
     
     keystone_admin_password = JSONUtility.getValue('keystone_admin_password')
     keystone_vip = ha_vip1
     keystone_neutron_password = JSONUtility.getValue('keystone_neutron_password')
     neutron_vip = ha_vip1
     
     initNeutronScriptTemplatePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'neutron-server', 'initNeutron.sh')
     ##
     openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
     openstackScriptDirPath = PropertiesUtility.getValue(openstackConfPopertiesFilePath, 'OPENSTACK_SCRIPT_DIR')
     if os.path.exists(openstackScriptDirPath) :
         os.system('mkdir -p %s' % openstackScriptDirPath)
         pass
     
     ShellCmdExecutor.execCmd('cp -r %s %s' % (initNeutronScriptTemplatePath, openstackScriptDirPath))
     
     initNeutronScriptPath = os.path.join(openstackScriptDirPath, 'initNeutron.sh')
     FileUtil.replaceFileContent(initNeutronScriptPath, '<KEYSTONE_ADMIN_PASSWORD>', keystone_admin_password)
     FileUtil.replaceFileContent(initNeutronScriptPath, '<KEYSTONE_VIP>', keystone_vip)
     FileUtil.replaceFileContent(initNeutronScriptPath, '<KEYSTONE_NEUTRON_PASSWORD>', keystone_neutron_password)
     FileUtil.replaceFileContent(initNeutronScriptPath, '<NEUTRON_VIP>', neutron_vip)
     ShellCmdExecutor.execCmd('bash %s' % initNeutronScriptPath)
     pass
コード例 #17
0
ファイル: YAMLUtil.py プロジェクト: zbwzy/fuel-python
 def setHosts():
     nodes_dict = {}
     host="127.0.0.1 localhost\n"
     nodesMap = YAMLUtil.getNodesMap()
     for node in nodesMap:
         if nodes_dict.has_key(node['ip']) == False:
             nodes_dict[node['ip']]=node['name']
             host = host + node['ip'] + " " + node['name'] + "\n"
             pass
         pass
      
     print host
     FileUtil.writeContent("/etc/hosts",host)
     pass    
コード例 #18
0
ファイル: network.py プロジェクト: zbwzy/fuel-python
 def configML2():
     if os.path.exists(Network.NEUTRON_ML2_CONF_FILE_PATH) :
         ShellCmdExecutor.execCmd("rm -rf %s" % Network.NEUTRON_ML2_CONF_FILE_PATH)
         pass
     
     ml2_template_conf_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'network', 'ml2_conf.ini') 
     ShellCmdExecutor.execCmd('cat %s > /tmp/ml2_conf.ini' % ml2_template_conf_file_path)
     ShellCmdExecutor.execCmd('mv /tmp/ml2_conf.ini /etc/neutron/plugins/ml2/')
     
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     localIP = output.strip()
     
     FileUtil.replaceFileContent(Network.NEUTRON_ML2_CONF_FILE_PATH, '<INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS>', localIP)
     pass
コード例 #19
0
ファイル: dashboard.py プロジェクト: zbwzy/fuel-python
 def configConfFile():
     '''
     LOCAL_MANAGEMENT_IP
     KEYSTONE_VIP
     '''
     localSettingsFileTemplatePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'dashboard', 'local_settings')
     dashboardConfFileDir = '/etc/openstack-dashboard/'
     
     if os.path.exists(Dashboard.DASHBOARD_CONF_FILE_PATH) :
         ShellCmdExecutor.execCmd("rm -rf %s" % Dashboard.DASHBOARD_CONF_FILE_PATH)
         pass
     else :
         ShellCmdExecutor.execCmd("sudo mkdir %s" % dashboardConfFileDir)
         pass
     
     print 'localSettingsFileTemplatePath=%s--' % localSettingsFileTemplatePath
     ShellCmdExecutor.execCmd("sudo chmod 777 %s" % dashboardConfFileDir)
     ####NEW
     ShellCmdExecutor.execCmd('cat %s > /tmp/local_settings' % localSettingsFileTemplatePath)
     ShellCmdExecutor.execCmd('cp -r /tmp/local_settings %s' % dashboardConfFileDir)
     ShellCmdExecutor.execCmd('rm -rf /tmp/local_settings')
     
     keystone_vip = JSONUtility.getValue("keystone_vip")
     print "keystone_vip=%s" % keystone_vip
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     localIP = output.strip()
     
     dashboard_ips_string = JSONUtility.getValue("dashboard_ips")
     dashboard_ip_list = dashboard_ips_string.split(',')
     memcached_service_list = []
     for ip in dashboard_ip_list:
         memcached_service_list.append(ip.strip() + ':11211')
         pass
     
     memcached_service_string = ','.join(memcached_service_list)
     print 'memcached_service_string=%s--' % memcached_service_string
     
     ShellCmdExecutor.execCmd('sudo chmod 777 %s' % Dashboard.DASHBOARD_CONF_FILE_PATH)
     FileUtil.replaceFileContent(Dashboard.DASHBOARD_CONF_FILE_PATH, '<KEYSTONE_VIP>', keystone_vip)
     FileUtil.replaceFileContent(Dashboard.DASHBOARD_CONF_FILE_PATH, '<LOCAL_MANAGEMENT_IP>', localIP)
     ShellCmdExecutor.execCmd('sudo chmod 644 %s' % Dashboard.DASHBOARD_CONF_FILE_PATH)
     
     #Assign rights: can be accessed
     DIR_PATH = '/usr/share/openstack-dashboard/openstack_dashboard/local'
     if os.path.exists(DIR_PATH) :
         ShellCmdExecutor.execCmd('sudo chmod 777 %s' % DIR_PATH)
         pass
     pass
コード例 #20
0
ファイル: rabbitmq.py プロジェクト: zbwzy/fuel-python
 def start():
     init_script_template_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'rabbitmq', 'initRabbitmqCluster.sh')
     '<RABBIT_USER_ID> <RABBIT_PASS>'
     if not os.path.exists('/opt/openstack_conf/') :
         ShellCmdExecutor.execCmd('mkdir /opt/openstack_conf')
         pass
     
     ShellCmdExecutor.execCmd('cp -r %s /opt/openstack_conf/' % init_script_template_file_path)
     
     init_script_path = '/opt/openstack_conf/initRabbitmqCluster.sh'
     rabbit_user_id = 'nova'
     rabbit_password = JSONUtility.getValue('rabbit_password')
     FileUtil.replaceFileContent(init_script_path, '<RABBIT_USER_ID>', rabbit_user_id)
     FileUtil.replaceFileContent(init_script_path, '<RABBIT_PASS>', rabbit_password)
     output,exitcode = ShellCmdExecutor.execCmd('bash %s' % init_script_path)
     pass
コード例 #21
0
ファイル: Test.py プロジェクト: zbwzy/fuel-python
    def test():
        haproxyConfFilePath = '/etc/haproxy/haproxy.cfg'
        if os.path.exists(haproxyConfFilePath) :
            output, exitcode = ShellCmdExecutor.execCmd('cat %s' % haproxyConfFilePath)
        else :
            output = '''
global
  daemon
  group haproxy
  log /dev/log local0
  maxconn 16000
  pidfile /var/run/haproxy.pid
  stats socket /var/lib/haproxy/stats
  user haproxy

defaults
  log global
  maxconn 8000
  mode http
  retries 3
  stats enable
  timeout http-request 10s
  timeout queue 1m
  timeout connect 10s
  timeout client 1m
  timeout server 1m
  timeout check 10s

            '''
            pass
        
        print 'nativecontent=%s-----' % output
        haproxyNativeContent = output.strip()
        
        haproxyContent = ''
        haproxyContent += haproxyNativeContent
        haproxyContent += '\n\n'
        
        haproxyContent += 'hello'
        haproxyContent += '\n'
        haproxyContent += 'world'
        
        FileUtil.writeContent('/tmp/haproxy.cfg', haproxyContent)
        ShellCmdExecutor.execCmd('sudo cp -rf /tmp/haproxy.cfg /etc/haproxy')
        
        ShellCmdExecutor.execCmd('sudo chmod 644 %s' % haproxyConfFilePath)
        pass
コード例 #22
0
ファイル: Test.py プロジェクト: zbwzy/fuel-python
    def test():
        haproxyConfFilePath = "/etc/haproxy/haproxy.cfg"
        if os.path.exists(haproxyConfFilePath):
            output, exitcode = ShellCmdExecutor.execCmd("cat %s" % haproxyConfFilePath)
        else:
            output = """
global
  daemon
  group haproxy
  log /dev/log local0
  maxconn 16000
  pidfile /var/run/haproxy.pid
  stats socket /var/lib/haproxy/stats
  user haproxy

defaults
  log global
  maxconn 8000
  mode http
  retries 3
  stats enable
  timeout http-request 10s
  timeout queue 1m
  timeout connect 10s
  timeout client 1m
  timeout server 1m
  timeout check 10s

            """
            pass

        print "nativecontent=%s-----" % output
        haproxyNativeContent = output.strip()

        haproxyContent = ""
        haproxyContent += haproxyNativeContent
        haproxyContent += "\n\n"

        haproxyContent += "hello"
        haproxyContent += "\n"
        haproxyContent += "world"

        FileUtil.writeContent("/tmp/haproxy.cfg", haproxyContent)
        ShellCmdExecutor.execCmd("sudo cp -rf /tmp/haproxy.cfg /etc/haproxy")

        ShellCmdExecutor.execCmd("sudo chmod 644 %s" % haproxyConfFilePath)
        pass
コード例 #23
0
    def appendBackendStringToHaproxyCfg(backendString):
        output, exitcode = ShellCmdExecutor.execCmd('cat %s' % HA.HaproxyConfFilePath)
        haproxyNativeContent = output.strip()

        haproxyContent = ''
        haproxyContent += haproxyNativeContent
        haproxyContent += '\n\n'
        haproxyContent += backendString
        FileUtil.writeContent('/tmp/haproxy.cfg', haproxyContent)
        
        if os.path.exists(HA.HaproxyConfFilePath):
            ShellCmdExecutor.execCmd("rm -rf %s" % HA.HaproxyConfFilePath)
            pass
        
        ShellCmdExecutor.execCmd('mv /tmp/haproxy.cfg /etc/haproxy/')
        ShellCmdExecutor.execCmd('sudo chmod 644 %s' % HA.HaproxyConfFilePath)
        pass
コード例 #24
0
ファイル: rabbitmq.py プロジェクト: zbwzy/fuel-python
    def config():
        rabbitmq_config_template_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'rabbitmq', 'rabbitmq.config')
        rabbitmq_env_conf_template_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'rabbitmq', 'rabbitmq-env.conf')
        
        rabbitmq_config_file_path = '/etc/rabbitmq/rabbitmq.config'
#         if os.path.exists(rabbitmq_config_file_path) :
#             os.system("rm -rf %s" % rabbitmq_config_file_path)
#             pass
        
        rabbitmq_env_conf_file_path = '/etc/rabbitmq/rabbitmq-env.conf'
#         if os.path.exists(rabbitmq_env_conf_file_path) :
#             os.system("rm -rf %s" % rabbitmq_env_conf_file_path)
#             pass
        
        ShellCmdExecutor.execCmd('cp -r %s /etc/rabbitmq/' % rabbitmq_config_template_file_path)
        ShellCmdExecutor.execCmd('cp -r %s /etc/rabbitmq/' % rabbitmq_env_conf_template_file_path)
        
        output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
        management_ip = output.strip()
        print 'management_ip=%s--' % management_ip
        print ''
        FileUtil.replaceFileContent(rabbitmq_config_file_path, '<MANAGEMENT_IP>', management_ip)
        rabbitmq_ips = JSONUtility.getValue('rabbitmq_ips')
        rabbit_at_ip_list = []
        rabbitmq_ip_list = rabbitmq_ips.split(',')
        for ip in rabbitmq_ip_list:
            rabbit_at_ip_list.append("'"+'rabbit@'+ip+"'")
            pass
         
        rabbitmq_cluster_string = ','.join(rabbit_at_ip_list)
        FileUtil.replaceFileContent(rabbitmq_config_file_path, '<RABBITMQ_CLUSTER>', rabbitmq_cluster_string)
        ShellCmdExecutor.execCmd('chown -R root:root /etc/rabbitmq')
         
        #rabbitmq cookie
        erlang_cookie_template_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'rabbitmq', 'erlang.cookie')
        erlang_cookie_dest_file_path = '/var/lib/rabbitmq/.erlang.cookie'
        if os.path.exists(erlang_cookie_dest_file_path) :
            os.system('rm -rf %s' % erlang_cookie_dest_file_path)
            pass
         
        ShellCmdExecutor.execCmd('cp -r %s /var/lib/rabbitmq/' % erlang_cookie_template_file_path)
        ShellCmdExecutor.execCmd('mv /var/lib/rabbitmq/erlang.cookie %s' % erlang_cookie_dest_file_path)
        ShellCmdExecutor.execCmd('chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/')
        ShellCmdExecutor.execCmd('chmod 400 %s' % erlang_cookie_dest_file_path)
        
        pass
コード例 #25
0
ファイル: vxlanconfig.py プロジェクト: zbwzy/fuel-python
 def reConfigureML2():
     #support vxlan network mode
     network_mode = JSONUtility.getValue('neutron_network_mode')
     network_mode = network_mode.strip()
     
     if network_mode == 'vxlan' :
         FileUtil.replaceFileContent(VXLANConfig.NEUTRON_ML2_CONF_FILE_PATH, 'type_drivers = flat,gre', 'type_drivers = vxlan,flat,gre')
         FileUtil.replaceFileContent(VXLANConfig.NEUTRON_ML2_CONF_FILE_PATH, 'tenant_network_types = gre', 'tenant_network_types = vxlan,gre')
         FileUtil.replaceFileContent(VXLANConfig.NEUTRON_ML2_CONF_FILE_PATH, '#vni_ranges = 1:1000', 'vni_ranges = 1:1000')
         FileUtil.replaceFileContent(VXLANConfig.NEUTRON_ML2_CONF_FILE_PATH, 'tunnel_types = gre', 'tunnel_types = vxlan')
         pass
     pass
コード例 #26
0
ファイル: ShellCmdExecutor.py プロジェクト: zbwzy/fuel-python
 def execCmd(cmd, ifPrint=None, exitcodeSwitch=None, timeout=None, env=None):
     if timeout == None :
         timeout = ShellCmdExecutor.DEFAULT_TIMEOUT
         pass
     
     if exitcodeSwitch == None:
         exitcodeSwitch = False
         pass
     
     if not cmd:
         return
     #write cmd to a temp file in order to support multiple shell commands execution
     msg = 'Executing cmd with timeout(timeout=%s s): %s' % (timeout, cmd)
     print(msg)
     
     strTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
     strUUID = commands.getoutput('uuidgen')
     bashFileName = "bashfile-%s-%s.sh" % (strTime, strUUID)
     if not os.path.exists(ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR) :
         os.system("mkdir -p %s" % ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR)
         pass
     bashFilePath = "%s/%s" % (ShellCmdExecutor.OPENSTACK_INSTALL_LOG_TEMP_DIR, bashFileName)
     FileUtil.writeContent(bashFilePath, cmd)
     bash_cmd = "bash %s" % bashFilePath
     output = None
     exitcode = -1
     
     try :
         output, exitcode = ShellCmdExecutor.execCmdWithKillTimeout(bash_cmd, ifPrint=ifPrint, kill_timeout=timeout, env=env)
         if exitcodeSwitch :
             if exitcode != 0 :
                 print("otuput=%s" % output)
                 print("exitcode=%s" % exitcode)
                 pass
             else :
                 print("otuput=%s" % output)
                 print("exitcode=%s" % exitcode)
                 pass
             pass
         pass
     except Exception, e:
         print("Write content exception:" + str(e))
コード例 #27
0
ファイル: neutronserver.py プロジェクト: zbwzy/fuel-python
 def getServiceTenantID():
     #install keystone client
     ShellCmdExecutor.execCmd('yum install python-keystoneclient -y')
     
     serviceTenantIDScriptPath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'neutron-server','serviceTenantID.sh')
     print 'serviceTenantIDScriptPath=%s' % serviceTenantIDScriptPath
     
     ShellCmdExecutor.execCmd('cp -r %s /opt/' % serviceTenantIDScriptPath)
     
     keystone_vip = JSONUtility.getValue("keystone_vip")
     FileUtil.replaceFileContent('/opt/serviceTenantID.sh', '<KEYSTONE_VIP>', keystone_vip)
     output, exitcode = ShellCmdExecutor.execCmd('bash /opt/serviceTenantID.sh')
     serviceTenantID = output.strip()
     if debug == True : #fake for local debug
         serviceTenantID = '112233445566'
         pass
     
     print 'serviceTenantID=%s--' % serviceTenantID
     return serviceTenantID
     pass
コード例 #28
0
ファイル: bcrdb.py プロジェクト: zbwzy/fuel-python
 def config():
     SOURCE_RDB_CONF_FILE_TEMPLATE_PATH = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'mysql', 'my.cnf')
     RDB_DEPLOY_DIR = '/opt/bcrdb'
     DEST_RDB_CONF_DIR = os.path.join(RDB_DEPLOY_DIR, 'conf')
     RDB_CONF_FILE_PATH = os.path.join(DEST_RDB_CONF_DIR, 'my.cnf')
     EXECUTE_MYSQL_PATH = os.path.join(RDB_DEPLOY_DIR, 'bin', 'mysql')
     MYSQLADMIN_BIN_PATH = os.path.join(RDB_DEPLOY_DIR, 'bin', 'mysqladmin')
     
     ShellCmdExecutor.execCmd('cp -r %s %s' % (SOURCE_RDB_CONF_FILE_TEMPLATE_PATH, DEST_RDB_CONF_DIR))
     mysql_ips = JSONUtility.getValue("mysql_ips")
     print 'mysql_ips=%s---' % mysql_ips
     mysql_ip_list = mysql_ips.strip().split(',')
     print 'mysql_ip_list=%s--' % mysql_ip_list
     output, exitcode = ShellCmdExecutor.execCmd('cat /opt/localip')
     local_management_ip = output.strip()
     
     mysql_ip_list1 = []
     for ip in mysql_ip_list :
         if ip.strip() != local_management_ip :
             mysql_ip_list1.append(ip)
             pass
         pass
     
     print 'mysql_ip_list1=%s--' % mysql_ip_list1
     mysql_ip_list_string = ','.join(mysql_ip_list1) #The rest mysql except itself
     print 'mysql_ip_list_string=%s--' % mysql_ip_list_string
     
     FileUtil.replaceFileContent(RDB_CONF_FILE_PATH, '<MYSQL_IP_LIST>', mysql_ip_list_string)
     
     #add user bcrdb
     ShellCmdExecutor.execCmd('useradd bcrdb')
     #assign rights
     ShellCmdExecutor.execCmd('chown -R bcrdb:bcrdb /opt/bcrdb')
     
     #cp mysql to /usr/bin
     ShellCmdExecutor.execCmd('cp -r %s /usr/bin/' % EXECUTE_MYSQL_PATH)
     
     ShellCmdExecutor.execCmd('cp -r %s /usr/bin/' % MYSQLADMIN_BIN_PATH)
     pass
コード例 #29
0
ファイル: mongodb.py プロジェクト: zbwzy/fuel-python
 def configConfFile():
     openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
     local_ip_file_path = PropertiesUtility.getValue(openstackConfPopertiesFilePath, 'LOCAL_IP_FILE_PATH')
     output, exitcode = ShellCmdExecutor.execCmd('cat %s' % local_ip_file_path)
     localIP = output.strip()
     print 'locaIP=%s' % localIP
     
     openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
     mongodb_conf_template_file_path = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'mongodb', 'mongodb.conf')
     print 'mongodb_conf_template_file_path=%s' % mongodb_conf_template_file_path
     
     mongodb_conf_file_path = '/etc/mongodb.conf'
     if os.path.exists(mongodb_conf_file_path) :
         ShellCmdExecutor.execCmd("rm -rf %s" % mongodb_conf_file_path)
         pass
     
     ShellCmdExecutor.execCmd('cat %s > /tmp/mongodb.conf' % mongodb_conf_template_file_path)
     ShellCmdExecutor.execCmd('mv /tmp/mongodb.conf /etc/')
     ShellCmdExecutor.execCmd("sudo chmod 777 %s" % mongodb_conf_file_path)
     FileUtil.replaceFileContent(mongodb_conf_file_path, '<LOCAL_IP>', localIP)
     ShellCmdExecutor.execCmd("sudo chmod 755 %s" % mongodb_conf_file_path)
     
     pass
コード例 #30
0
ファイル: nova.py プロジェクト: zbwzy/fuel-python
 def configureKeepalived():
     openstackConfPopertiesFilePath = PropertiesUtility.getOpenstackConfPropertiesFilePath()
     ###################configure keepalived
     glanceKeepalivedTemplateFilePath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'keepalived.conf')
     keepalivedConfFilePath = PropertiesUtility.getValue(openstackConfPopertiesFilePath, 'KEEPALIVED_CONF_FILE_PATH')
     print 'keepalivedConfFilePath=%s' % keepalivedConfFilePath
     if not os.path.exists('/etc/keepalived') :
         ShellCmdExecutor.execCmd('sudo mkdir /etc/keepalived')
         pass
     
     #configure haproxy check script in keepalived
     checkHAProxyScriptPath = os.path.join(OPENSTACK_CONF_FILE_TEMPLATE_DIR, 'check_haproxy.sh')
     print 'checkHAProxyScriptPath=%s===========================---' % checkHAProxyScriptPath
     ShellCmdExecutor.execCmd('sudo cp -r %s %s' % (checkHAProxyScriptPath, '/etc/keepalived'))
     if os.path.exists(keepalivedConfFilePath) :
         ShellCmdExecutor.execCmd("sudo rm -rf %s" % keepalivedConfFilePath)
         pass
         
     ShellCmdExecutor.execCmd('sudo cp -r %s %s' % (glanceKeepalivedTemplateFilePath, '/etc/keepalived'))
     
     ShellCmdExecutor.execCmd("sudo chmod 777 %s" % keepalivedConfFilePath)
     ##configure
     nova_vip = JSONUtility.getValue("nova_vip")
     nova_vip_interface = JSONUtility.getValue("nova_vip_interface")
     
     weight_counter = 300
     if NovaHA.isMasterNode() :
         weight_counter = 300
         state = 'MASTER'
         pass
     else :
         index = NovaHA.getIndex()  #get this host index which is indexed by the gid in /etc/astutue.yaml responding with this role
         weight_counter = 300 - index
         state = 'SLAVE' + str(index)
         pass
     
     FileUtil.replaceFileContent(keepalivedConfFilePath, '<WEIGHT>', str(weight_counter))
     FileUtil.replaceFileContent(keepalivedConfFilePath, '<STATE>', state)
     FileUtil.replaceFileContent(keepalivedConfFilePath, '<INTERFACE>', nova_vip_interface)
     FileUtil.replaceFileContent(keepalivedConfFilePath, '<VIRTURL_IPADDR>', nova_vip)
     
     ##temporary: if current user is not root
     ShellCmdExecutor.execCmd("sudo chmod 644 %s" % keepalivedConfFilePath)
     
     #If keepalived need to support more VIP: append here
     pass