Exemplo n.º 1
0
    def create_repo_file(self, component, repo_scheme, repo_dir,
                         repo_user=None, repo_pass=None,
                         repo_distro='nightly', repo_component='main'):
        cli = LinuxCLI(log_cmd=True)

        url_line = repo_scheme + "://"
        if repo_scheme == 'https':
            if repo_user is not None:
                url_line += repo_user
                if repo_pass is not None:
                    url_line += ':' + repo_pass
                url_line += '@'
        url_line += self.repo_server + '/' + repo_dir
        cli.write_to_file('/etc/apt/sources.list.d/' + component + '.list',
                          'deb ' + url_line + ' ' + repo_distro + ' ' + repo_component + '\n',
                          append=False)
        cli.cmd('curl -k ' + self.curl_server + ' | apt-key add -')
        cli.cmd('apt-get update')
Exemplo n.º 2
0
    def create_results(self, results_dir='./results', leeway=5):
        cli = LinuxCLI(priv=False)
        cli.rm(results_dir)
        for scen, res in self.result_map.iteritems():
            log_out_dir = results_dir + '/' + scen.__name__

            cli.write_to_file(wfile=log_out_dir + '/results.xml',
                              data=res.to_junit_xml())
            self.log_manager.collate_logs(log_out_dir + '/full-logs')

            for tc in res.all_tests():
                tcname = tc.id().split('.')[-1]
                cli.mkdir(log_out_dir + '/' + tcname)
                self.log_manager.slice_log_files_by_time(log_out_dir + '/' + tcname,
                                                         start_time=tc.start_time,
                                                         stop_time=tc.stop_time,
                                                         leeway=leeway,
                                                         collated_only=True)
Exemplo n.º 3
0
    def test_get_file(self):
        try:
            cli = LinuxCLI(priv=False)
            cli.write_to_file('test', 'teststr')
            cli.write_to_file('testdir/test2', 'test2str')
            fl = FileLocation('test')
            self.assertEqual('.', fl.path)
            fl.get_file(FileAccessor(), near_filename='test_copy')
            self.assertTrue(cli.exists('test_copy'))

            fl2 = FileLocation('testdir/test2')
            self.assertEqual('testdir', fl2.path)

            #fl2.get_file(SSHFileAccessor('localhost', LinuxCLI().whoami()), near_filename='test2_copy')
            #self.assertTrue(cli.exists('test2_copy'))

        finally:
            LinuxCLI().rm('test')
            LinuxCLI().rm('testdir')
            LinuxCLI().rm('test_copy')
            LinuxCLI().rm('test2_copy')
    def install_packages(self, repo, exact_version=None):
        if repo.get_type() == "rpm":
            raise ArgMismatchException("Not yet supported on Redhat!")
            # neutron_dep_packages = ['mysql', 'rabbitmq-server']
            # neutron_packages = ['openstack-neutron', 'python-neutronclient', 'openstack-neutron-ml2']

        cli = LinuxCLI(log_cmd=True)

        cli.cmd("sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password password 'cat''")
        cli.cmd("sudo debconf-set-selections <<< 'mysql-server-5.1 mysql-server/root_password_again password 'cat''")

        if not repo.is_installed("mysql-server-5.5"):
            repo.install_packages(["mysql-server-5.5", "mysql-client-5.5", "python-mysqldb"])

        cli.cmd("mysqladmin -u root password cat")
        cli.regex_file("/etc/mysql/my.cnf", "s/.*bind-address.*/bind-address = 127.0.0.1/")
        cli.regex_file("/etc/mysql/my.cnf", "s/.*max_connections.*/max_connections = 1024/")
        cli.cmd("service mysql start")

        if not repo.is_installed("rabbitmq-server"):
            repo.install_packages(["rabbitmq-server"])

        cli.cmd("rabbitmqctl change_password guest cat")
        cli.cmd("service rabbitmq-server restart")

        if not repo.is_installed("neutron-server"):
            repo.install_packages(
                [
                    "neutron-server",
                    "neutron-dhcp-agent",
                    "python-neutronclient",
                    "python-neutron-lbaas",
                    "python-mysql.connector",
                ]
            )

            cli.cmd('mysql --user=root --password=cat -e "CREATE DATABASE IF NOT EXISTS neutron"')
            cli.cmd("mysql --user=root --password=cat -e \"CREATE USER neutron@localhost IDENTIFIED BY 'cat'\"")
            cli.cmd("mysql --user=root --password=cat -e \"CREATE USER neutron@'%' IDENTIFIED BY 'cat'\"")
            cli.cmd('mysql --user=root --password=cat -e "GRANT ALL PRIVILEGES ON neutron.* TO neutron@localhost"')
            cli.cmd("mysql --user=root --password=cat -e \"GRANT ALL PRIVILEGES ON neutron.* TO neutron@'%'\"")

        version_config.get_installed_midolman_version()
        mn_api_url = version_config.ConfigMap.get_configured_parameter("param_midonet_api_url")

        cfg_file_str = (
            "[DEFAULT]\n"
            "core_plugin = midonet.neutron.plugin_v2.MidonetPluginV2\n"
            "auth_strategy = noauth\n"
            "rpc_backend = neutron.openstack.common.rpc.impl_kombu\n"
            "rabbit_host = localhost\n"
            "rabbit_userid = guest\n"
            "rabbit_password = cat\n"
            "service_plugins = lbaas\n"
            "allow_overlapping_ips = True\n"
            "router_scheduler_driver =\n"
            "\n"
            "[agent]\n"
            "root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf\n"
            "\n"
            "[database]\n"
            "connection = mysql://neutron:cat@localhost/neutron\n"
            "\n"
            "[oslo_concurrency]\n"
            "lock_path = $state_path/lock\n"
        )

        cli.write_to_file("/etc/neutron/neutron.conf", cfg_file_str)

        dhcp_ini_str = (
            "[DEFAULT]\n"
            "interface_driver = neutron.agent.linux.interface.MidonetInterfaceDriver\n"
            "dhcp_driver = midonet.neutron.agent.midonet_driver.DhcpNoOpDriver\n"
            "use_namespaces = True\n"
            "dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf\n"
            "enable_isolated_metadata = True\n"
            "\n"
            "[MIDONET]\n"
            "midonet_uri = " + mn_api_url + "\n"
            "username = admin\n"
            "password = cat\n"
            "project_id = admin\n"
            "auth_url = http://localhost:5000/v2.0\n"
        )

        cli.write_to_file("/etc/neutron/dhcp_agent.ini", dhcp_ini_str)

        lbaas_cfg_str = (
            "[service_providers]\n"
            "service_provider = LOADBALANCER:Midonet:"
            "midonet.neutron.services.loadbalancer.driver.MidonetLoadbalancerDriver:default\n"
        )

        cli.write_to_file("/etc/neutron/neutron_lbaas.conf", lbaas_cfg_str)

        mn_plugin_str = (
            "[DATABASE]\n"
            "sql_connection = mysql+mysqlconnector://neutron:cat@localhost/neutron\n"
            "sql_max_retries = 100\n"
            "[MIDONET]\n"
            "midonet_uri = " + mn_api_url + "\n"
            "username = admin\n"
            "password = cat\n"
            "project_id = admin\n"
            "auth_url = http://localhost:5000/v2.0\n"
            "provider_router_id =\n"
        )

        cli.mkdir("/etc/neutron/plugins/midonet")
        cli.write_to_file("/etc/neutron/plugins/midonet/midonet_plugin.ini", mn_plugin_str)
        cli.rm("/etc/neutron/plugin.ini")
        cli.cmd("ln -s /etc/neutron/plugins/midonet/midonet_plugin.ini /etc/neutron/plugin.ini")

        if exact_version == "kilo" or exact_version is None:
            cli.cmd(
                "neutron-db-manage --config-file /etc/neutron/neutron.conf "
                "--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"
            )
            cli.cmd("midonet-db-manage upgrade head")
        else:
            cli.cmd(
                "neutron-db-manage --config-file /etc/neutron/neutron.conf "
                "--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade " + exact_version
            )
            cli.cmd("midonet-db-manage upgrade " + exact_version)

        cli.write_to_file("/etc/default/neutron-server", 'NEUTRON_PLUGIN_CONFIG="/etc/neutron/plugin.ini"\n')

        cli.cmd("service neutron-server restart")
        cli.cmd("service neutron-dhcp-agent restart")

        repo.install_packages(
            [
                "neutron-server",
                "neutron-dhcp-agent",
                "python-neutronclient",
                "python-neutron-lbaas",
                "python-mysql.connector",
            ]
        )