Example #1
0
def remove_git_code():
    full_args = "rpm -qa|grep networking-zte|xargs rpm -e"
    api.print_log("%s" % full_args)
    api.excute_command(full_args)

    full_args = "rm -rf /usr/lib/python2.7/site-packages/networking_zte/"
    api.excute_command(full_args)
Example #2
0
def update_openvswitch():
    full_args = 'rm -fr /usr/lib/python2.7/site-packages/neutron/plugins'\
        '/ml2/drivers/mech_agent.py'
    status, output = api.excute_command(full_args)
    full_args = 'cp mech_agent.py /usr/lib/python2.7/site-packages'\
        '/neutron/plugins/ml2/drivers/'
    status, output = api.excute_command(full_args)
Example #3
0
def check_service_plugins(action):
    full_args = "grep ^service_plugins /etc/neutron/neutron.conf"
    api.print_log("%s" % full_args)
    status, output = api.excute_command(full_args)
    api.print_log("action:%s,service plugins:%s" % (action, output))
    full_args = "grep ^mechanism_drivers /etc/neutron/plugin.ini"
    api.print_log("%s" % full_args)
    status, output = api.excute_command(full_args)
    api.print_log("action:%s,mechanism_drivers:%s" % (action, output))
Example #4
0
def install_plugin(kwargs, configs):
    check_service_plugins("install")
    full_args = "rpm -ivh networking-zte-*"
    api.print_log("%s" % full_args)
    api.excute_command(full_args)
    #api.append_files(copy_files)
    ret = append_config(kwargs, configs)
    if not ret:
        return ret
    return post_install(kwargs["op_version"])
Example #5
0
def handle_manual_op_version(op_version, configs):
    if not l3_scheduler_patch(op_version):
        return False
    full_args = "sed -i '/^mechanism_drivers/s/zte_ml2driver,//' " \
                "/etc/neutron/plugin.ini"
    api.excute_command(full_args)
    config = configs["config_plugin"]
    mechanism_drivers = config['ml2']['mechanism_drivers']
    api.print_log("patched mechanism_drivers is %s" % mechanism_drivers)
    return restart_neutron_server()
Example #6
0
def remove_openvswitch(configs):
    config = configs["config_plugin"]
    if check_op_version(config):
        op_version = config["RESTPROXY"]["op_version"]
        if op_version == "bigcloud_K":
            full_args = 'rm -fr /usr/lib/python2.7/site-packages/neutron'\
                '/plugins/ml2/drivers/mech_agent.py'
            status, output = api.excute_command(full_args)
            full_args = 'mv /usr/lib/python2.7/site-packages/neutron/plugins'\
                '/ml2/drivers/mech_agent.py_ovs /usr/lib/python2.7/'\
                'site-packages/neutron/plugins/ml2/drivers/mech_agent.py'
            status, output = api.excute_command(full_args)
Example #7
0
def update_plugin(kwargs, configs):
    """update code"""
    check_service_plugins("update")
    remove_rpm_folder()
    recover_old_version()
    recover_config(configs)
    full_args = "rpm -Uvh networking-zte-*"
    api.print_log("%s" % full_args)
    api.excute_command(full_args)
    #api.append_files(copy_files)
    ret = append_config(kwargs, configs)
    if not ret:
        return ret
    return post_install(kwargs["op_version"])
Example #8
0
def do_tecs_patch():
    try:
        import py_compile
        full_args = 'rm -f /usr/lib/python2.7/site-packages/neutron/plugins' \
                    '/proxydriver/common/rest/znic_l2/config.py'
        status, output = api.excute_command(full_args)
        api.print_log(output)
        full_args = 'cp -af config.py ' \
                    '/usr/lib/python2.7/site-packages/neutron/plugins' \
                    '/proxydriver/common/rest/znic_l2/config.py '
        status, output = api.excute_command(full_args)
        api.print_log(output)
        py_compile.compile('/usr/lib/python2.7/site-packages/neutron/plugins/'
                           'proxydriver/common/rest/znic_l2/config.py')
        return status
    except Exception as e:
        api.print_log("The reason for the failure of patch is %s!" % e)
Example #9
0
def install_openvswitch():
    if api.check_if_file_exist('/usr/lib/python2.7'
                               '/site-packages/neutron/plugins/ml2/drivers/'
                               'mech_agent.py'):
        full_args = 'mv /usr/lib/python2.7/site-packages/neutron/' \
                 'plugins/ml2/drivers/mech_agent.py /usr/lib/python2.7/' \
                 'site-packages/neutron/plugins/ml2/drivers/mech_agent.py_ovs'
        status, output = api.excute_command(full_args)
    update_openvswitch()
Example #10
0
def do_patch(op_patch):
    try:
        full_args = 'patch /usr/lib/python2.7/site-packages/neutron/' \
                    'services/l3_router/l3_router_plugin.py ' \
                    '<%s' % op_patch
        status, output = api.excute_command(full_args)
        api.print_log(output)
        return status
    except Exception as e:
        api.print_log("The reason for the failure of patch is %s!" % e)
Example #11
0
def zenic_plugin_auto_install(auto_install, configs):
    action = auto_install
    if action == 'uninstall':
        if not remove_plugin(configs):
            return 1
        else:
            return 0

    # auto install must have plugin config in plugin.ini
    if not check_zenic_para(configs):
        api.print_log("Can not find sdn plugin config in plugin.ini!")
        return 1
    # get op_version and do patch files and restart neutron-server first
    config_plugin = configs["config_plugin"]
    if check_op_version(config_plugin):
        op_version = config_plugin["RESTPROXY"]["op_version"]
        if not handle_auto_op_version(op_version):
            return 1
    else:
        api.print_log("Sorry this plugin version does not support auto "
                      "install, please use manual install instead!")
        return 1
    # auto-install only deal with rpm package
    check_service_plugins(action)
    remove_rpm_folder()
    remove_git_code()
    if action == 'install':
        full_args = "rpm -ivh networking-zte-*"
    if action == 'update':
        full_args = "rpm -Uvh networking-zte-*"
    api.print_log("%s" % full_args)
    api.excute_command(full_args)

    if not post_install(op_version):
        api.print_log("\33[30mzenic plugin %s failed, please "
                      "fix and try again!!\33[0m" % action)
        return 1
    else:
        api.print_log("\33[36mzenic plugin %s success!\33[0m" % action)
        return 0
Example #12
0
def check_ml2driver_if_install(configs):
    config = configs["config_plugin"]
    drivers = config['ml2']['mechanism_drivers']
    if 'zte_ml2driver' in drivers or 'proxydriver' in drivers:
        return True
    if api.check_if_file_exist('/usr/lib/python2.7'
                               '/site-packages/networking_zte'):
        return True
    full_args = "ls /usr/lib/python2.7/site-packages/ | grep networking_zte-"
    status, output = api.excute_command(full_args)
    if "egg-info" in output:
        return True
    return False
Example #13
0
def recover_old_version():
    # /usr/lib/python2.7/site-packages/
    # neutron-2015.1.1-py2.7.egg-info/entry_points.txt
    full_args = "find /usr/lib -name entry_points.txt | grep neutron-"
    status, output = api.excute_command(full_args)

    full_args = "sed -i '/^proxydriver/d' %s" % output
    api.excute_command(full_args)

    full_args = "sed -i '/^zte_firewall/d' %s" % output
    api.excute_command(full_args)

    full_args = "sed -i '/^zte_qos/d' %s" % output
    api.excute_command(full_args)

    full_args = "sed -i '/^mechanism_drivers/s/,proxydriver//' " \
                "/etc/neutron/plugin.ini"
    api.excute_command(full_args)

    remove_git_code()

    api.remove_files(copy_files)
Example #14
0
def recover_config(configs):

    # /etc/neutron/neutron.conf
    config_neutron = configs["config_neutron"]
    config_neutron['DEFAULT']['router_scheduler_driver'] = \
        'neutron.scheduler.l3_agent_scheduler.ChanceScheduler'
    #trunk
    try:
        del config_neutron['vlan_trunk']['trunk_drivers']
    except Exception as e:
        api.print_log("There is no key of %s in the neutron.conf" % e)
    config_neutron.write()

    # /etc/neutron/plugin.ini
    # taas
    config_plugin = configs["config_plugin"]
    taas_function = get_taas_para(config_plugin)
    api.save_log("get_taas_para taas_function = %s" % taas_function)
    if taas_function == 'tecs2.0':
        reset_taas_config("/etc/neutron/taas_plugin.conf")
    elif taas_function == 'tecs6.0':
        reset_taas_config("/etc/neutron/plugin.ini")
    elif taas_function == 'tecs3.0':
        reset_taas_config("/etc/neutron/plugin.ini")
    elif taas_function == 'openstack':
        reset_taas_config("/etc/neutron/taas_plugin.ini")
    else:
        api.save_log("recover config can not find taas function!")

    if check_op_version(config_plugin):
        op_version = config_plugin["RESTPROXY"]["op_version"]
    else:
        op_version = "False"
    if op_version != "bigcloud_K":
        # security_group_api
        config_nova = configs["config_nova"]
        config_nova['DEFAULT']['security_group_api'] = 'nova'
        config_nova.write()

    full_args = "sed -i '/^\[RESTPROXY/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^enable_qos/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^enable_M_qos/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^enable_bandwidth/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^enable_hierarchical_port/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^op_version/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^server_timeout/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^servers/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^server_auth/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^server_ssl/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^no_ssl_validation/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^enable_pre_commit/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^taas_function/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "grep ^mechanism_drivers[[:space:]]*=.*," \
                "[[:space:]]*zte_ml2driver /etc/neutron/plugin.ini"
    status, output = api.excute_command(full_args)
    if output != '':
        full_args = "sed -i '/^mechanism_drivers/s/," \
                    "[[:space:]]*zte_ml2driver//' /etc/neutron/plugin.ini"
        api.excute_command(full_args)
    full_args = "grep ^mechanism_drivers[[:space:]]*=.*zte_ml2driver" \
                "[[:space:]]*, /etc/neutron/plugin.ini"
    status, output = api.excute_command(full_args)
    if output != '':
        full_args = "sed -i '/^mechanism_drivers/s/zte_ml2driver" \
                    "[[:space:]]*,//' /etc/neutron/plugin.ini"
        api.excute_command(full_args)

    # remove l3 router_no_schedule
    full_args = "sed -i '/^\[L3\]/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '/^router_no_schedule/d' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "grep ^service_plugins[[:space:]]*=.*,[[:space:]]*zte_qos " \
                "/etc/neutron/neutron.conf"
    api.print_log("%s" % full_args)
    status, output = api.excute_command(full_args)
    if output != '':
        full_args = "sed -i '/^service_plugins/s/,[[:space:]]*zte_qos//' " \
                    "/etc/neutron/neutron.conf"
        api.print_log("%s" % full_args)
        api.excute_command(full_args)
        full_args = "sed -i '/^service_plugins/s/$/,qos/' " \
                    "/etc/neutron/neutron.conf"
        api.print_log("%s" % full_args)
        api.excute_command(full_args)

    full_args = "grep ^service_plugins[[:space:]]*=.*zte_qos[[:space:]]*, " \
                "/etc/neutron/neutron.conf"
    api.print_log("%s" % full_args)
    status, output = api.excute_command(full_args)
    if output != '':
        full_args = "sed -i '/^service_plugins/s/zte_qos[[:space:]]*,//' " \
                    "/etc/neutron/neutron.conf"
        api.print_log("%s" % full_args)
        api.excute_command(full_args)
        full_args = "sed -i '/^service_plugins/s/$/,qos/' " \
                    "/etc/neutron/neutron.conf"
        api.print_log("%s" % full_args)
        api.excute_command(full_args)
Example #15
0
def patch_k_qos(qos_patch):
    full_args = 'patch /usr/lib/python2.7/site-packages/networking_zte/qos/' \
                'zenic_qos_plugin.py <%s' % qos_patch
    status, output = api.excute_command(full_args)
    api.print_log(output)
    return status
Example #16
0
def append_config(kwargs, configs):
    config_neutron = ConfigObj('/etc/neutron/neutron.conf', encoding='UTF8')
    config_neutron['DEFAULT']['router_scheduler_driver'] = \
        'neutron.scheduler.l3_agent_scheduler.ChanceScheduler'

    # trunk
    if 'vlan_trunk' in config_neutron.keys():
        config_neutron['vlan_trunk']['trunk_drivers'] = 'networking_zte.' \
                                                        'trunk.driver'
    else:
        config_neutron['vlan_trunk'] = {}
        config_neutron['vlan_trunk']['trunk_drivers'] = 'networking_zte.' \
                                                        'trunk.driver'
    config_neutron.write()
    #taas
    if kwargs["taas_function"] == 'tecs2.0':
        if not set_taas_config("/etc/neutron/taas_plugin.conf"):
            return False
    elif kwargs["taas_function"] == 'tecs6.0':
        if not set_taas_config("/etc/neutron/plugin.ini"):
            return False
    elif kwargs["taas_function"] == 'tecs3.0':
        if not set_taas_config("/etc/neutron/plugin.ini"):
            return False
    elif kwargs["taas_function"] == 'openstack':
        if not api.check_if_file_exist('/etc/neutron/taas_plugin.ini'):
            api.print_log("use taas funtion of openstack while taas_plugin.ini"
                          " does not exist!")
            remove_git_code()
            return False
        if not set_taas_config("/etc/neutron/taas_plugin.ini"):
            return False
    else:
        api.save_log("append_config can not find taas function!")

    # plugin.ini
    full_args = "sed -i '$a \[RESTPROXY]' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '$a \enable_qos=%s' %s" % (kwargs["enable_qos"],
                                                   "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \enable_M_qos=%s' %s" % (kwargs["enable_M_qos"],
                                                     "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \op_version=%s' %s" % (kwargs["op_version"],
                                                   "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \enable_bandwidth=%s' %s" % (
        kwargs["enable_bandwidth"], "/etc/neutron/plugin.ini")
    if kwargs["enable_bandwidth"] is not None:
        api.excute_command(full_args)

    full_args = "sed -i '$a \enable_hierarchical_port=%s' %s" % (
        kwargs["enable_hierarchical_port"], "/etc/neutron/plugin.ini")
    if kwargs["enable_hierarchical_port"] is not None:
        api.excute_command(full_args)

    full_args = "sed -i '$a \server_timeout=100' %s" % (
        "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \servers=%s' %s" % (kwargs["servers"],
                                                "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \server_auth=%s' %s" % (kwargs["server_auth"],
                                                    "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \server_ssl=%s' %s" % (kwargs["ssl"],
                                                   "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \\no_ssl_validation=%s' %s" % (
        kwargs["ssl_validation"], "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \\enable_pre_commit=%s' %s" % (
        kwargs["pre_commit"], "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i '$a \\taas_function=%s' %s" % (
        kwargs["taas_function"], "/etc/neutron/plugin.ini")
    api.excute_command(full_args)

    full_args = "sed -i 's/^mechanism_drivers *=/mechanism_drivers " \
                "=zte_ml2driver,/g' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    # add l3 router_no_schedule
    full_args = "sed -i '$a \[L3\]' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    full_args = "sed -i '$a router_no_schedule=True' /etc/neutron/plugin.ini"
    api.excute_command(full_args)

    # full_args = "sed -i '/^service_plugins/s/$/,zte_firewall/'
    #/etc/neutron/neutron.conf"
    # api.excute_command(full_args)

    if kwargs["enable_M_qos"] == "True":
        api.save_log("using M qos!")
        full_args = "grep ^service_plugins[[:space:]]*=.*,[[:space:]]*qos " \
                    "/etc/neutron/neutron.conf"
        status, output = api.excute_command(full_args)
        if output != '':
            full_args = "sed -i '/^service_plugins/s/,[[:space:]]*qos//' " \
                        "/etc/neutron/neutron.conf"
            api.excute_command(full_args)
        full_args = "grep ^service_plugins[[:space:]]*=.*qos[[:space:]]*, " \
                    "/etc/neutron/neutron.conf"
        status, output = api.excute_command(full_args)
        if output != '':
            full_args = "sed -i '/^service_plugins/s/qos[[:space:]]*,//' " \
                        "/etc/neutron/neutron.conf"
            api.excute_command(full_args)

        full_args = "sed -i '/^service_plugins/s/$/,zte_qos/' " \
                    "/etc/neutron/neutron.conf"
        api.excute_command(full_args)

    if kwargs["op_version"] != "bigcloud_K":
        # security_group_api
        config_nova = configs["config_nova"]
        config_nova['DEFAULT']['security_group_api'] = 'neutron'
        config_nova.write()

    return True
Example #17
0
def remove_rpm_folder():
    full_args = "rm -fr /usr/lib/python2.7/site-packages" \
                "/networking_zte-*.egg-info"
    api.print_log("%s" % full_args)
    api.excute_command(full_args)