Ejemplo n.º 1
0
    def _install_ovs(self, server):
        ovs_repo = self.config.get("ovs_repo", OVS_REPO)
        ovs_branch = self.config.get("ovs_branch", OVS_BRANCH)
        ovs_user = self.config.get("ovs_user", OVS_USER)
        repo_action = self.config.get("repo_action", "")

        http_proxy = self.config.get("http_proxy", None)
        https_proxy = self.config.get("https_proxy", None)

        ovs_server = get_updated_server(server, user=ovs_user)
        self._put_file(ovs_server, "install.sh")
        self._put_file(ovs_server, "ovs-sandbox.sh")

        cmds = []
        if http_proxy or https_proxy:
            cmd = '''cat > proxy_env.sh <<EOF
export http_proxy=%s
export https_proxy=%s
EOF''' % (http_proxy, https_proxy)
            cmds.append(cmd)
            cmds.append("echo 'use http proxy in proxy_env.sh'")
            cmds.append(". proxy_env.sh")

        cmd = "./install.sh %s %s %s %s" % (ovs_repo, ovs_branch, ovs_user,
                                            repo_action)
        cmds.append(cmd)
        print("install ovs:", cmds)
        ovs_server.ssh.run("\n".join(cmds),
                           stdout=sys.stdout,
                           stderr=sys.stderr)
Ejemplo n.º 2
0
    def _install_ovs(self, server):
        ovs_repo = self.config.get("ovs_repo", OVS_REPO)
        ovs_branch = self.config.get("ovs_branch", OVS_BRANCH)
        ovs_user = self.config.get("ovs_user", OVS_USER)
        repo_action = self.config.get("repo_action", "")

        http_proxy = self.config.get("http_proxy", None)
        https_proxy = self.config.get("https_proxy", None)

        ovs_server = get_updated_server(server, user=ovs_user)
        self._put_file(ovs_server, "install.sh")
        self._put_file(ovs_server, "ovs-sandbox.sh")


        cmds = []
        if http_proxy or https_proxy :
            cmd = '''cat > proxy_env.sh <<EOF
export http_proxy=%s
export https_proxy=%s
EOF''' % (http_proxy, https_proxy)
            cmds.append(cmd)
            cmds.append("echo 'use http proxy in proxy_env.sh'")
            cmds.append(". proxy_env.sh")


        cmd = "./install.sh %s %s %s %s" % (ovs_repo, ovs_branch, ovs_user, repo_action)
        cmds.append(cmd)
        print("install ovs:", cmds)
        ovs_server.ssh.run("\n".join(cmds),
                            stdout=sys.stdout, stderr=sys.stderr);
    def deploy(self):
        self.servers = self.get_provider().create_servers()

        server = self.servers[0]  # only support to deploy controller node
        # on one server

        install_method = self.config.get("install_method", "sandbox")
        LOG.info("Controller install method: %s" % install_method)
        self._deploy(server, install_method)

        deployment_name = self.deployment["name"]
        if not deployment_name:
            deployment_name = self.config.get("deployment_name", None)

        host_container = self.config.get("host_container", None)

        ovs_user = self.config.get("ovs_user", OVS_USER)
        ovs_controller_cidr = self.config.get("controller_cidr")
        net_dev = self.config.get("net_dev", "eth0")

        # start ovn controller with non-root user
        ovs_server = get_updated_server(server, user=ovs_user)

        cmd = "./ovs-sandbox.sh --controller --ovn \
                            --controller-ip %s --device %s;"                                                             % \
                        (ovs_controller_cidr, net_dev)

        if install_method == "docker":
            LOG.info("Do not run ssh; deployed by ansible-docker")
        elif install_method == "physical":
            LOG.info("Do not run ssh; deployed on physical test bed")
        elif install_method == "sandbox":
            ovs_server.ssh.run(cmd, stdout=sys.stdout, stderr=sys.stderr)
        else:
            print("Invalid install method for controller")
            exit(1)

        self.deployment.add_resource(
            provider_name="OvnSandboxControllerEngine",
            type=ResourceType.CREDENTIAL,
            info=ovs_server.get_credentials())

        self.deployment.add_resource(
            provider_name="OvnSandboxControllerEngine",
            type=ResourceType.CONTROLLER,
            info={
                "ip": ovs_controller_cidr.split('/')[0],
                "deployment_name": deployment_name,
                "host_container": host_container
            })

        return {"admin": None}
    def deploy(self):
        self.servers = self.get_provider().create_servers()

        server = self.servers[0]# only support to deploy controller node
                                # on one server

        self._deploy(server)

        deployment_name = self.deployment["name"]
        if not deployment_name:
            deployment_name = self.config.get("deployment_name", None)


        install_method = self.config.get("install_method", None)
        if not install_method:
            print "No install_method, use default"
            install_method = "sandbox"
        print "Controller install method: ", install_method

        ovs_user = self.config.get("ovs_user", OVS_USER)
        ovs_controller_cidr = self.config.get("controller_cidr")
        net_dev = self.config.get("net_dev", "eth0")

        # start ovn controller with non-root user
        ovs_server = get_updated_server(server, user=ovs_user)

        cmd = "./ovs-sandbox.sh --controller --ovn \
                            --controller-ip %s --device %s;" % \
                        (ovs_controller_cidr, net_dev)

        if install_method == "docker":
            print "Do not run ssh; deployed by ansible-docker"
        elif install_method == "sandbox":
            ovs_server.ssh.run(cmd,
                            stdout=sys.stdout, stderr=sys.stderr)
        else:
            print "Invalid install method for controller"
            exit(1)

        self.deployment.add_resource(provider_name="OvnSandboxControllerEngine",
                                 type=ResourceType.CREDENTIAL,
                                 info=ovs_server.get_credentials())

        self.deployment.add_resource(provider_name="OvnSandboxControllerEngine",
                            type=ResourceType.CONTROLLER,
                            info={
                                  "ip":ovs_controller_cidr.split('/')[0],
                                  "deployment_name":deployment_name})


        return {"admin": None}