Example #1
0
    def __pre_check(self):
        if self.border_gateway:
            if self.border_gateway != self.getTunnelGatewayNodeId():
                emsg = "Incorrect border-gateway node id. Entered %s vs %s on the record." % \
                    (self.border_gateway, self.getTunnelGatewayNodeId())
                self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
                self.exit()
        else:
            self.border_gateway = self.getTunnelGatewayNodeId()

        # Check if border-gateway node was given
        if not self.border_gateway:
            emsg = "Border-gateway node id not specified and there is none on the record."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        if not self._nodeExists(self.border_gateway):
            emsg = "Border-gateway node %s does not exist." % (
                self.border_gateway)
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        # Check if service node was given in the environment
        if not self.service:
            self.service = self.getTunnelServiceNodeId()

        if not self.service and self.service_dir:
            if self.service_dir_server:
                self.skip_service_end = True
                self.logger.debug(
                    "[localhost] WeaveTunnelStart against tier %s." %
                    self.service_dir_server)
            else:
                self.service_dir_server = self.getTunnelServiceDir()
                if not self.service_dir_server:
                    # Check if service node was given
                    emsg = "Service node id (or IP address or service directory) not specified."
                    self.logger.error("[localhost] WeaveTunnelStart: %s" %
                                      (emsg))
                    self.exit()
                else:
                    self.skip_service_end = True
                    self.logger.debug(
                        "[localhost] WeaveTunnelStart against tier %s." %
                        self.service_dir_server)

        if self.service:
            # If service is a domain name, convert it to IP
            if IP.isDomainName(self.service):
                ip = IP.getHostByName(self.service)
                self.service = ip

            if not IP.isIpAddress(self.service):
                if self.service:
                    if self.service != self.getTunnelServiceNodeId():
                        emsg = "Incorrect service node id. Entered %s vs %s on the record." % \
                        (self.service, self.getTunnelServiceNodeId())
                        self.logger.error("[localhost] WeaveTunnelStart: %s" %
                                          (emsg))
                        self.exit()

            if not IP.isIpAddress(self.service) and not self._nodeExists(
                    self.service):
                emsg = "Service node %s does not exist." % (self.service)
                self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
                self.exit()

            if IP.isIpAddress(self.service):
                self.skip_service_end = True

        # Check if there is no fabric
        if not self.getFabricId():
            emsg = "There is not Weave fabric."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        # Check if there is a tunnel
        if not self.getTunnelServiceNodeId() and not self.getTunnelServiceDir(
        ):
            emsg = "There is no Weave tunnel on the record."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()
Example #2
0
    def __pre_check(self):
        # Check if border-gateway node was given
        if not self.border_gateway:
            emsg = "Border-gateway node id not specified."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        if not self._nodeExists(self.border_gateway):
            emsg = "Border-gateway node %s does not exist." % (
                self.border_gateway)
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        # Check if service node was given in the environment
        if not self.service and not self.service_dir:
            if "weave_service_address" in os.environ.keys():
                self.service = os.environ['weave_service_address']
                emsg = "Found weave_service_address %s." % (self.service)
                self.logger.debug("[localhost] Weave: %s" % (emsg))

        if not self.service and self.service_dir:
            if self.service_dir_server:
                self.skip_service_end = True
                self.logger.debug(
                    "[localhost] WeaveTunnelStart against tier %s." %
                    self.service_dir_server)
            else:
                if "weave_service_address" in os.environ.keys():
                    self.skip_service_end = True
                    self.service_dir_server = os.environ[
                        'weave_service_address']
                    self.logger.debug(
                        "[localhost] WeaveTunnelStart against tier %s." %
                        self.service_dir_server)
                else:
                    # Check if service node was given
                    emsg = "Service node id (or IP address or service directory) not specified."
                    self.logger.error("[localhost] WeaveTunnelStart: %s" %
                                      (emsg))
                    self.exit()

        if self.service and not self.use_lwip:
            # If service is a domain name, convert it to IP
            if IP.isDomainName(self.service):
                ip = IP.getHostByName(self.service)
                self.service = ip

            if not IP.isIpAddress(self.service) and not self._nodeExists(
                    self.service):
                emsg = "Service node %s does not exist." % (self.service)
                self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
                self.exit()

            if IP.isIpAddress(self.service):
                self.service_ipv4_addr = self.service
                self.skip_service_end = True
            else:
                self.service_ipv4_addr = self.getNodePublicIPv4Address(
                    self.service)

            if self.service_ipv4_addr == None:
                emsg = "Could not find IP address of the service node."
                self.logger.error("[localhost] WeaveTunnel: %s" % (emsg))
                self.exit()

        self.fabric_id = self.getFabricId()

        # Check if there is no fabric
        if self.fabric_id == None:
            emsg = "There is not Weave fabric."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.exit()

        # Check if there is a tunnel
        if self.getTunnelServiceNodeId() or self.getTunnelServiceDir():
            emsg = "There already exist a Weave tunnel."
            self.logger.error("[localhost] WeaveTunnelStart: %s" % (emsg))
            self.__stopExistingTunnel()

        self.service_weave_id = self.getServiceWeaveID("Tunnel")
        self.gateway_weave_id = self.getWeaveNodeID(self.border_gateway)

        if self.service_weave_id == None:
            emsg = "Could not find Weave node ID of the service node."
            self.logger.error("[localhost] WeaveTunnel: %s" % (emsg))
            self.exit()

        if self.gateway_weave_id == None:
            emsg = "Could not find Weave node ID of the border-gateway node."
            self.logger.error("[localhost] WeaveTunnel: %s" % (emsg))
            self.exit()