Ejemplo n.º 1
0
    def __pre_check(self):
        # Check if the name of the new node is given
        if not self.source:
            emsg = "Missing name of the virtual source node."
            self.logger.error("[localhost] Ping: %s" % (emsg))
            self.exit()

        # Check if the source node exists.
        if not self._nodeExists(self.source):
            emsg = "virtual source node %s does not exist." % (self.source)
            self.logger.error("[%s] Ping: %s" % (self.source, emsg))
            self.exit()

        # Check if the ping destination is given.
        if not self.destination:
            emsg = "Missing destination for ping."
            self.logger.error("[localhost] Ping: %s" % (emsg))
            self.exit()

        # Check if the destination node exists.
        if not IP.isIpAddress(self.destination) and not self._nodeExists(
                self.destination):
            emsg = "virtual destination node %s does not exist." % (
                self.destination)
            self.logger.error("[%s] Ping: %s" % (self.source, emsg))
            self.exit()

        if self.count is not None and self.count.isdigit():
            self.count = int(float(self.count))
        else:
            self.count = 1
Ejemplo n.º 2
0
    def __pre_check(self):
        # Check if the name of the new node is given
        if not self.source:
            emsg = "Missing name of the virtual source node."
            self.logger.error("[localhost] Traceroute: %s" % (emsg))
            self.exit()

        # Check if the source node exists.
        if not self._nodeExists(self.source):
            emsg = "virtual source node %s does not exist." % (self.source)
            self.logger.error("[%s] Traceroute: %s" % (self.source, emsg))
            self.exit()

        # Check if the traceroute destination is given.
        if not self.destination:
            emsg = "Missing destination for traceroute."
            self.logger.error("[localhost] Traceroute: %s" % (emsg))
            self.exit()

        # Check if the destination node exists.
        if not IP.isIpAddress(self.destination) and not self._nodeExists(
                self.destination):
            emsg = "virtual destination node %s does not exist." % (
                self.destination)
            self.logger.error("[%s] Traceroute: %s" % (self.source, emsg))
            self.exit()
Ejemplo n.º 3
0
    def run(self):
        self.__pre_check()

        self.__get_addresses()

        if self.addresses == {}:
            emsg = "No address to ping at " + str(self.destination) + "."
            self.logger.warning("[%s] Ping: %s" % (self.source, emsg))
            print hyellow(emsg)
            return ReturnMsg(100, self.addresses)

        for addr in self.addresses.keys():
            out, err = self.__ping_on_address(addr)
            self.__parse_output(addr, out, err)

        self.__post_check()

        for addr in self.addresses.keys():
            if IP.isIpAddress(self.destination):
                self.logger.info("ping from " + self.source + " to address " +
                                 addr + " -> " + str(self.addresses[addr]) +
                                 "% packet loss")
            else:
                self.logger.info("ping from " + self.source + " to " +
                                 self.destination + " on address " + addr +
                                 " -> " + str(self.addresses[addr]) +
                                 "% packet loss")

        return ReturnMsg(self.ret, self.addresses)
Ejemplo n.º 4
0
    def __get_addresses(self):
        self.addresses = {}

        if IP.isIpAddress(self.destination):
            self.addresses[self.destination] = None
            return

        if self._nodeExists(self.destination):
            node_addresses = self.getNodeAddresses(self.destination)

            for addr in node_addresses:
                self.addresses[addr] = {}
    def __pre_check(self):
        # Check if the name of the new network is given
        if not self.network_id:
            emsg = "Missing name of the virtual network that should be configured with a route."
            self.logger.error("[localhost] WeaveNetworkGateway: %s" % (emsg))
            self.exit()

        # Check if the name of new network is not a duplicate (that it does not already exists).
        if not self._networkExists():
            emsg = "virtual network %s does not exist." % (self.network_id)
            self.logger.error("[%s] WeaveNetworkGateway: %s" %
                              (self.network_id, emsg))
            self.exit()

        if not self.delete:
            self.add = True

        self.fabric_id = self.getFabricId()

        if not self.fabric_id:
            emsg = "weave fabric id is unknown."
            self.logger.error("[%s] WeaveNetworkGateway: %s" %
                              (self.network_id, emsg))
            self.exit()

        self.global_prefix = self.getWeaveGlobalPrefix(self.fabric_id)

        if not self.global_prefix:
            emsg = "weave fabric prefix is unknown."
            self.logger.error("[%s] WeaveNetworkGateway: %s" %
                              (self.network_id, emsg))
            self.exit()

        # Check if 'gateway' is given
        if not self.gateway:
            emsg = "Missing gateway address for weave fabric."
            self.logger.error("[%s] WeaveNetworkGateway: %s" %
                              (self.network_id, emsg))
            self.exit()

        if not self._nodeExists(self.gateway):
            emsg = "Proposed gateway node %s does not exist." % (self.gateway)
            self.logger.error("[%s] WeaveNetworkGateway: %s" %
                              (self.network_id, emsg))
            self.exit()

        if IP.isIpAddress(self.gateway):
            self.gateway = IP.paddingZeros(self.gateway)

        self.to = IP.paddingZeros(self.global_prefix)
Ejemplo n.º 6
0
    def __pre_check(self):
        # Check if the name of the new node is given
        if not self.node_id:
            emsg = "Missing name of the new virtual node that IP routes should be managed."
            self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
            self.exit()

        # Check if the name of new node is not a duplicate (that it does not already exists).
        if not self._nodeExists():
            emsg = "virtual node %s does not exist." % (self.node_id)
            self.logger.warning("[%s] HappyNodeRoute: %s" % (self.node_id, emsg))

        if not self.delete:
            self.add = True

        # Check if address is given
        if not self.to:
            emsg = "Missing address for virtual node destination (to)."
            self.logger.error("[%s] HappyNodeRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check if address is given
        if not self.via:
            emsg = "Missing address for virtual gateway (via)."
            self.logger.error("[%s] HappyNodeRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check for mix IP addresses
        if IP.isIpAddress(self.to) and IP.isIpAddress(self.via) and IP.isIpv6(self.to) != IP.isIpv6(self.via):
            emsg = "Mixing addresses %s and %s." % (self.to, self.via)
            self.logger.error("[%s] HappyNodeRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check if destination is a node
        if self.to != "default" and not IP.isIpAddress(self.to):
            if not self._nodeExists(self.to):
                emsg = "Don't know what %s to-address is. If it is a node, it can't be found." % (self.to)
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()
            else:
                # 'to' is a node
                emsg = "Destination address must be 'default' or a IP address."
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

        if IP.isIpAddress(self.to):
            self.to = IP.paddingZeros(self.to)

        # Check if gateway is a node
        if IP.isIpAddress(self.via):
            self.via_address = self.via
            self.via_address = IP.paddingZeros(self.via_address)
            return

        if self._nodeInterfaceExists(self.via):
            self.via_device = self.via
            return

        if not self._nodeExists(self.via):
            emsg = "Don't know what %s via-address is. If it is a node, it can't be found." % (self.to)
            self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
            self.exit()

        this_node_networks = self.getNodeNetworkIds(self.node_id)
        gateway_networks = self.getNodeNetworkIds(self.via)
        common_networks = list(set(this_node_networks).intersection(gateway_networks))

        if len(common_networks) == 0:
            emsg = "Node %s and gateway node %s are not on the same network." % \
                (self.node_id, self.via)
            self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
            self.exit()

        if len(common_networks) > 1 and not self.prefix:
            emsg = "Node %s and gateway %s share more than one network. Need gateway prefix to disambiguate." % \
                (self.node_id, self.via)
            self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
            self.exit()

        if not self.prefix:

            gateway_addresses = self.getNodeAddressesOnNetwork(common_networks[0], self.via)

            if len(gateway_addresses) == 0:
                emsg = "Gateway node (via) %s does not have any IP addresses." % \
                    (self.via)
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

            if len(gateway_addresses) > 1 and self.prefix is None:
                emsg = "Node %s has more than one IP address. Need gateway prefix to disambiguate." % \
                    (self.via)
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

            # We find gateway address without using prefix.
            self.via_address = gateway_addresses[0]
            return

        else:
            if not IP.isIpAddress(self.prefix):
                emsg = "Prefix %s is not a valid IP address."
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

            self.ip_prefix, self.ip_mask = IP.splitAddressMask(self.prefix)
            self.prefix = IP.getPrefix(self.ip_prefix, self.ip_mask)

            gateway_addresses = self.getNodeAddressesOnNetworkOnPrefix(common_networks[0], self.prefix, self.via)

            if len(gateway_addresses) == 0:
                emsg = "Cannot find any IP address on %s with prefix %s." % (self.via, self.prefix)
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

            if len(gateway_addresses) > 1:
                emsg = "Found more than one IP address on %s with prefix %s. (%s)" % \
                  (self.via, self.prefix, ",".join(gateway_addresses))
                self.logger.error("[localhost] HappyNodeRoute: %s" % (emsg))
                self.exit()

            self.via_address = gateway_addresses[0]
Ejemplo n.º 7
0
    def __pre_check(self):
        # clear network info
        self.clients_info = []
        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveBle: %s" % (emsg))
            sys.exit(1)

        for client in self.clients:
            client_node_id = None

            # Check if Weave Ble client node is given.
            if client == None:
                emsg = "Missing name or address of the Weave Ble client node."
                self.logger.error("[localhost] WeaveBle: %s" % (emsg))
                sys.exit(1)

            # Check if Weave Ble client node exists.
            if self._nodeExists(client):
                client_node_id = client

            # Check if client is provided in a form of IP address
            if IP.isIpAddress(client):
                client_node_id = self.getNodeIdFromAddress(client)

            if client_node_id == None:
                emsg = "Unknown identity of the client node."
                self.logger.error("[localhost] WeaveBle: %s" % (emsg))
                sys.exit(1)

            if self.getNodeType(client_node_id) == "service":
                client_ip = self.getServiceWeaveIPAddress(
                    self.endpoint, client_node_id)
                client_weave_id = self.getServiceWeaveID(
                    self.endpoint, client_node_id)
            else:
                client_ip = self.getNodeWeaveIPAddress(client_node_id)
                client_weave_id = self.getWeaveNodeID(client_node_id)

            if client_ip == None:
                emsg = "Could not find IP address of the client node."
                self.logger.error("[localhost] WeaveBle: %s" % (emsg))
                sys.exit(1)

            if client_weave_id == None:
                emsg = "Could not find Weave node ID of the client node."
                self.logger.error("[localhost] WeaveBle: %s" % (emsg))
                sys.exit(1)

            self.clients_info.append({
                'client':
                client,
                'client_node_id':
                client_node_id,
                'client_ip':
                client_ip,
                'client_weave_id':
                client_weave_id,
                'client_process_tag':
                client + "_" + self.client_process_tag + client
            })

        # Check if Weave Ble server node is given.
        if self.server == None:
            emsg = "Missing name or address of the Weave Ble server node."
            self.logger.error("[localhost] WeaveBle: %s" % (emsg))
            sys.exit(1)

        # Check if Weave Ble server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.no_service = True
            self.server_ip = self.server
            self.server_weave_id = self.IPv6toWeaveId(self.server)
        elif IP.isDomainName(self.server) or self.server == "service":
            self.no_service = True
            self.server_ip = self.getServiceWeaveIPAddress(self.endpoint)
            self.server_weave_id = self.IPv6toWeaveId(self.server_ip)
        else:
            # Check if server is a true clound service instance
            if self.getNodeType(self.server) == self.node_type_service:
                self.no_service = True

        if not self.no_service and self.server_node_id == None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveBle: %s" % (emsg))
            sys.exit(1)

        if self.getNodeType(self.server_node_id) == "service":
            self.server_ip = self.getServiceWeaveIPAddress(
                self.endpoint, self.server_node_id)
            self.server_weave_id = self.getServiceWeaveID(
                self.endpoint, self.server_node_id)
        else:
            if not self.no_service:
                self.server_ip = self.getNodeWeaveIPAddress(
                    self.server_node_id)
                self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        # Check if all unknowns were found

        if self.server_ip == None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveBle: %s" % (emsg))
            sys.exit(1)

        if not self.no_service and self.server_weave_id == None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveBle: %s" % (emsg))
            sys.exit(1)
Ejemplo n.º 8
0
    def __pre_check(self):
        # Check if Weave Ping client node is given.
        if self.client == None:
            emsg = "Missing name or address of the Weave Ping client node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        # Check if Weave Ping server node is given.
        if self.server == None:
            emsg = "Missing name or address of the Weave Ping server node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if self.count != None and self.count.isdigit():
            self.count = int(float(self.count))
        else:
            self.count = 1

        # Check if Weave Ping client node exists.
        if self._nodeExists(self.client):
            self.client_node_id = self.client

        # Check if Weave Ping server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server

        # Check if client is provided in a form of IP address
        if IP.isIpAddress(self.client):
            self.client_node_id = self.getNodeIdFromAddress(self.client)

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.no_service = True
            self.server_ip = self.server
            self.server_weave_id = self.IPv6toWeaveId(self.server)
        else:
            # Check if server is a true clound service instance
            if self.getNodeType(self.server) == self.node_type_service:
                self.no_service = True

        if self.client_node_id == None:
            emsg = "Unknown identity of the client node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if not self.no_service and self.server_node_id == None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if self.getNodeType(self.client_node_id) == "service":
            self.client_ip = self.getServiceWeaveIPAddress(
                "Echo", self.client_node_id)
            self.client_weave_id = self.getServiceWeaveID(
                "Echo", self.client_node_id)
        else:
            self.client_ip = self.getNodeWeaveIPAddress(self.client_node_id)
            self.client_weave_id = self.getWeaveNodeID(self.client_node_id)

        if self.getNodeType(self.server_node_id) == "service":
            self.server_ip = self.getServiceWeaveIPAddress(
                "Echo", self.server_node_id)
            self.server_weave_id = self.getServiceWeaveID(
                "Echo", self.server_node_id)
        else:
            if not self.no_service:
                self.server_ip = self.getNodeWeaveIPAddress(
                    self.server_node_id)
                self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        # Check if all unknowns were found

        if self.client_ip == None:
            emsg = "Could not find IP address of the client node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if self.server_ip == None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if self.client_weave_id == None:
            emsg = "Could not find Weave node ID of the client node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        if not self.no_service and self.server_weave_id == None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)

        num_security_modes = 0
        if self.case == True:
            num_security_modes += 1
        if self.pase == True:
            num_security_modes += 1
        if self.group_key == True:
            num_security_modes += 1

        if num_security_modes > 1:
            emsg = "Only one security mode can be enabled."
            self.logger.error("[localhost] WeaveSecurityPing: %s" % (emsg))
            sys.exit(1)
Ejemplo n.º 9
0
    def __pre_check(self):
        # Check if Weave BDX client node is given.
        if self.client == None:
            emsg = "Missing name or address of the Weave BDX client node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Check if Weave BDX server node is given.
        if self.server == None:
            emsg = "Missing name or address of the Weave BDX server node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Check if Weave BDX server version is correct.
        if self.server_version != 0 and self.server_version != 1:
            emsg = "BDX server version is not correct."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Check if Weave BDX client version is correct.
        if self.client_version != 0 and self.client_version != 1:
            emsg = "BDX client version is not correct."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Check if Weave BDX client node exists.
        if self._nodeExists(self.client):
            self.client_node_id = self.client

        # Check if Weave BDX server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server

        # Check if client is provided in a form of IP address
        if IP.isIpAddress(self.client):
            self.client_node_id = self.getNodeIdFromAddress(self.client)

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.server_node_id = self.getNodeIdFromAddress(self.server)
        elif self.server == "service":
            if self.download is not None:
                self.server_ip = self.getServiceWeaveIPAddress("FileDownload")
            elif self.upload is not None:
                self.server_ip = self.getServiceWeaveIPAddress("LogUpload")
            self.server_weave_id = self.IPv6toWeaveId(self.server_ip)
            self.server_node_id = "service"

        if self.client_node_id == None:
            emsg = "Unknown identity of the client node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if self.server_node_id == None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        self.client_ip = self.getNodeWeaveIPAddress(self.client_node_id)
        self.client_weave_id = self.getWeaveNodeID(self.client_node_id)
        if self.server is not "service":
            self.server_ip = self.getNodeWeaveIPAddress(self.server_node_id)
            self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        # Check if all unknowns were found

        if self.client_ip == None:
            emsg = "Could not find IP address of the client node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if self.server_ip == None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if self.client_weave_id == None:
            emsg = "Could not find Weave node ID of the client node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if self.server_weave_id == None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        # Check tmp, upload, download, receive paths
        if self.server is not "service":
            if self.tmp == None:
                emsg = "Missing path to a temporaty directory that is used by BDX server."
                self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
                sys.exit(1)

            if not os.path.isdir(self.tmp):
                emsg = "The server BDX temp %s is not a directory." % (
                    self.tmp)
                self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
                sys.exit(1)

        if self.receive == None:
            emsg = "Missing path to receiving directory."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if not os.path.isdir(self.receive):
            emsg = "The receiving path %s is not a directory." % (self.receive)
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if (self.download == None and self.upload == None) or \
            (self.download != None and self.upload != None):
            emsg = "Either download or upload path must be specified."
            self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
            sys.exit(1)

        if self.offset != None:
            self.offset = str(self.offset)
            if not self.offset.isdigit():
                emsg = "File offset must be a number, not %s." % (self.offset)
                self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
                sys.exit(1)

        if self.length != None:
            self.length = str(self.length)
            if not self.length.isdigit():
                emsg = "File length must be a number, not %s." % (self.length)
                self.logger.error("[localhost] WeaveBDX: %s" % (emsg))
                sys.exit(1)
Ejemplo n.º 10
0
    def __pre_check(self):
        # Check if the name of the new network is given
        if not self.network_id:
            emsg = "Missing name of the virtual network that should be configured with a route."
            self.logger.error("[localhost] HappyNetworkRoute: %s" % (emsg))
            self.exit()

        # Check if the name of new network is not a duplicate (that it does not already exists).
        if not self._networkExists():
            emsg = "virtual network %s does not exist." % (self.network_id)
            self.logger.error("[%s] HappyNetworkRoute: %s" % (self.network_id, emsg))
            self.exit()

        if not self.delete:
            self.add = True

        # Check if 'to' is given
        if not self.to:
            emsg = "Missing destination address for virtual network (to)."
            self.logger.error("[%s] HappyNetworkRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check if 'via' is given
        if not self.via:
            emsg = "Missing gateway address for virtual network (via)."
            self.logger.error("[%s] HappyNetworkRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check for mix IP addresses
        if IP.isIpAddress(self.to) and IP.isIpAddress(self.via) and IP.isIpv6(self.to) != IP.isIpv6(self.via):
            emsg = "Mixing addresses %s and %s." % (self.to, self.via)
            self.logger.error("[%s] HappyNetworkRoute: %s" % (self.node_id, emsg))
            self.exit()

        # Check if destination is a node
        if self.to != "default" and not IP.isIpAddress(self.to):
            if not self._nodeExists(self.to):
                emsg = "Don't know what %s to-address is. If it is a node, it can't be found." % (self.to)
                self.logger.error("[localhost] HappyNetworkRoute: %s" % (emsg))
                self.exit()
            else:
                # 'to' is a node
                emsg = "Destination address must be 'default' or a IP address."
                self.logger.error("[localhost] HappyNetworkRoute: %s" % (emsg))
                self.exit()

        if IP.isIpAddress(self.to):
            self.to = IP.paddingZeros(self.to)

        # Check if gateway is an address or a node
        if IP.isIpAddress(self.via):
            self.via = IP.paddingZeros(self.via)
            self.via_node = self.getNodeIdFromAddress(self.via)

            if self.via_node is None or not self._nodeExists(self.via_node):
                emsg = "Cannot find a node that would match %s." % (self.via)
                self.logger.error("[localhost] HappyNetworkRoute: %s" % (emsg))
                self.exit()

            return

        if self._nodeExists(self.via):
            self.via_node = self.via
Ejemplo n.º 11
0
    def __pre_check(self):
        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveWdmNext: %s" % (emsg))
            sys.exit(1)

        # Check if Weave WDM server node is given.
        if self.server == None:
            emsg = "Missing name or address of the WeaveWdmNext server node."
            self.logger.error("[localhost] WeaveWdmNext: %s" % (emsg))
            sys.exit(1)

        # Check if WeaveWdmNext server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server
            self.server_process_tag = self.server_node_id + "_" + self.server_process_tag

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.no_service = True
            self.server_ip = self.server
            self.server_weave_id = self.IPv6toWeaveId(self.server)
        elif IP.isDomainName(self.server) or self.server == "service":
            self.no_service = True
            self.server_ip = self.getServiceWeaveIPAddress("DataManagement")
            self.server_weave_id = self.IPv6toWeaveId(self.server_ip)
        else:
            # Check if server is a true cloud service instance
            if self.getNodeType(self.server) == self.node_type_service:
                self.no_service = True

        if not self.no_service and self.server_node_id is None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
            sys.exit(1)

        if self.getNodeType(self.server_node_id) == "service":
            self.server_ip = self.getServiceWeaveIPAddress(
                "WeaveWdmNext", self.server_node_id)
            self.server_weave_id = self.getServiceWeaveID(
                "WeaveWdmNext", self.server_node_id)
        else:
            if not self.no_service:
                self.server_ip = self.getNodeWeaveIPAddress(
                    self.server_node_id)
                self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        if self.server_ip is None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
            sys.exit(1)

        if not self.no_service and self.server_weave_id is None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
            sys.exit(1)

        for client in self.clients:
            client_node_id = None
            client_ip = None
            client_weave_id = None
            # Check if Weave Wdm Next client node is given.
            if client == None:
                emsg = "Missing name or address of the WeaveWdmNext client node."
                self.logger.error("[localhost] WeaveWdmNext: %s" % (emsg))
                sys.exit(1)

            # Check if WeaveWdmNext client node exists.
            if self._nodeExists(client):
                client_node_id = client

            # Check if client is provided in a form of IP address
            if IP.isIpAddress(client):
                client_node_id = self.getNodeIdFromAddress(client)

            if client_node_id is None:
                emsg = "Unknown identity of the client node."
                self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
                sys.exit(1)

            if self.getNodeType(client_node_id) == "service":
                client_ip = self.getServiceWeaveIPAddress(
                    "WeaveWdmNext", client_node_id)
                client_weave_id = self.getServiceWeaveID(
                    "WeaveWdmNext", client_node_id)
            else:
                client_ip = self.getNodeWeaveIPAddress(client_node_id)
                client_weave_id = self.getWeaveNodeID(client_node_id)

            if client_ip is None:
                emsg = "Could not find IP address of the client node."
                self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
                sys.exit(1)

            if client_weave_id is None:
                emsg = "Could not find Weave node ID of the client node."
                self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
                sys.exit(1)
            self.clients_info.append({
                "client":
                client,
                "client_node_id":
                client_node_id,
                "client_ip":
                client_ip,
                "client_weave_id":
                client_weave_id,
                "client_process_tag":
                client + "_" + self.client_process_tag
            })

        if self.wdm_option == "view":
            self.wdm_client_option = " --wdm-simple-view-client"
            self.wdm_server_option = " --wdm-simple-view-server"
            print("view disabled")
            sys.exit(1)
        elif self.wdm_option == "one_way_subscribe":
            self.wdm_client_option = " --wdm-one-way-sub-client"
            self.wdm_server_option = " --wdm-one-way-sub-publisher"
        elif self.wdm_option == "mutual_subscribe":
            self.wdm_client_option = " --wdm-init-mutual-sub"
            self.wdm_server_option = " --wdm-resp-mutual-sub"
        elif self.wdm_option == "subless_notify":
            self.wdm_client_option = " --wdm-simple-subless-notify-client"
            self.wdm_server_option = " --wdm-simple-subless-notify-server"
        else:
            emsg = "NOT SUPPORTED WDM OPTION"
            self.logger.error("[localhost] WeaveWdmNext: %s" % emsg)
            sys.exit(1)
Ejemplo n.º 12
0
    def __pre_check(self):
        device_node_id = None
        # Set the produce resource that mock-device is paired to
        resourceDictionaries = self.getResourceIds()
        resourceIndexList = os.environ.get("RESOURCE_IDS", "thd1").split(" ")
        self.resources = [
            resourceDictionaries[resourceIndex]
            for resourceIndex in resourceIndexList
        ]
        # Check if Weave Pairing device node is given.
        if self.devices is None:
            emsg = "Missing name or address of the Weave Pairing device node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        # Check if Weave Pairing mobile node is given.
        if self.mobile is None:
            emsg = "Missing name or address of the Weave Pairing mobile node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        # Check if Weave Pairing server info is given.
        if self.server is None:
            emsg = "Missing name or address of the Weave Pairing server node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        # Check if Weave Pairing mobile node exists.
        if self._nodeExists(self.mobile):
            self.mobile_node_id = self.mobile

        # Check if mobile is provided in a form of IP address
        if IP.isIpAddress(self.mobile):
            self.mobile_node_id = self.getNodeIdFromAddress(self.mobile)

        if self.mobile_node_id is None:
            emsg = "Unknown identity of the mobile node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        # Find out whether to use a local mock server or a server
        # reachable over the internet
        if self._nodeExists(self.server):
            self.server_node_id = self.server
            self.server_ip = self.getNodeWeaveIPAddress(self.server_node_id)
            self.server_weave_id = self.getWeaveNodeID(self.server_node_id)
        elif IP.isIpAddress(self.server):
            self.server_ip = self.server
            self.server_weave_id = self.IPv6toWeaveId(self.server)
        elif IP.isDomainName(self.server) or self.server == "service":
            self.server_ip = self.getServiceWeaveIPAddress(
                "ServiceProvisioning")
            self.server_weave_id = self.IPv6toWeaveId(self.server_ip)

        self.mobile_ip = self.getNodeWeaveIPAddress(self.mobile_node_id)

        self.mobile_weave_id = self.getWeaveNodeID(self.mobile_node_id)

        for device, resource in zip(self.devices, self.resources):
            # Check if Weave Pairing device node exists.
            if self._nodeExists(device):
                device_node_id = device
            # Check if device is provided in a form of IP address
            if IP.isIpAddress(device):
                device_node_id = self.getNodeIdFromAddress(device)

            if device_node_id is None:
                emsg = "Unknown identity of the device node."
                self.logger.error("[localhost] WeavePairing: %s" % (emsg))
                sys.exit(1)

            device_ip = self.getNodeWeaveIPAddress(device_node_id)
            if device_ip is None:
                emsg = "Could not find IP address of the device node."
                self.logger.error("[localhost] WeavePairing: %s" % (emsg))
                sys.exit(1)

            device_weave_id = self.getWeaveNodeID(device_node_id)
            if device_weave_id is None:
                emsg = "Could not find Weave node ID of the device node."
                self.logger.error("[localhost] WeavePairing: %s" % (emsg))
                sys.exit(1)

            device_serial_num = self.getSerialNum(device_node_id)
            if device_serial_num is None:
                emsg = "Could not find serial number of the device node."
                self.logger.error("[localhost] WeavePairing: %s" % (emsg))
                sys.exit(1)

            self.devices_info.append({
                'device':
                device,
                'device_node_id':
                device_node_id,
                'device_ip':
                device_ip,
                'device_weave_id':
                device_weave_id,
                'device_serial_num':
                device_serial_num,
                'device_process_tag':
                device + "_" + self.device_process_tag,
                'resource':
                resource
            })

        if self.mobile_ip is None:
            emsg = "Could not find IP address of the mobile node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        if self.mobile_weave_id is None:
            emsg = "Could not find Weave node ID of the mobile node."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        if self.server_ip is None:
            emsg = "Could not find IP address of the server."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)

        if self.server_weave_id is None:
            emsg = "Could not find Weave node ID of the server."
            self.logger.error("[localhost] WeavePairing: %s" % (emsg))
            sys.exit(1)
Ejemplo n.º 13
0
    def __pre_check(self):
        # Check if Weave SWU client node is given.
        if self.client == None:
            emsg = "Missing name or address of the Weave SWU client node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        # Check if Weave SWU server node is given.
        if self.server == None:
            emsg = "Missing name or address of the Weave SWU server node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        # Check if Weave SWU client node exists.
        if self._nodeExists(self.client):
            self.client_node_id = self.client

        # Check if Weave SWU server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server

        # Check if client is provided in a form of IP address
        if IP.isIpAddress(self.client):
            self.client_node_id = self.getNodeIdFromAddress(self.client)

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.server_node_id = self.getNodeIdFromAddress(self.server)

        if self.client_node_id == None:
            emsg = "Unknown identity of the client node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.server_node_id == None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        self.client_ip = self.getNodeWeaveIPAddress(self.client_node_id)
        self.server_ip = self.getNodeWeaveIPAddress(self.server_node_id)
        self.client_weave_id = self.getWeaveNodeID(self.client_node_id)
        self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        # Check if all unknowns were found

        if self.client_ip == None:
            emsg = "Could not find IP address of the client node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.server_ip == None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.client_weave_id == None:
            emsg = "Could not find Weave node ID of the client node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.server_weave_id == None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        # Check file_designator,update_scheme,integrity_type

        if self.integrity_type == None:
            emsg = "Missing integrity type that is used by SWU server."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.update_scheme == None:
            emsg = "Missing update scheme that is used by SWU server."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.file_designator == None:
            emsg = "Missing path to a temporaty directory that is used by SWU server."
            self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
            sys.exit(1)

        if self.integrity_type != None:
            self.integrity_type = str(self.integrity_type)
            if not self.integrity_type.isdigit():
                emsg = "File integrity type must be a number, not %s." % (self.integrity_type)
                self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
                if int(self.integrity_type) not in [0, 1, 2]:
                    emsg = "File integrity type must be 0, or 1, or 2, not %s." % (self.integrity_type)
                    self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
                sys.exit(1)

        if self.update_scheme != None:
            self.update_scheme = str(self.update_scheme)
            if not self.update_scheme.isdigit():
                emsg = "File update scheme must be a number, not %s." % (self.update_scheme)
                self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
                if int(self.update_scheme) not in [0, 1, 2, 3]:
                    emsg = "File update scheme must be 0, or 1, or 2, or 3 not %s." % (self.update_scheme)
                    self.logger.error("[localhost] WeaveSWU: %s" % (emsg))
                sys.exit(1)
Ejemplo n.º 14
0
    def __pre_check(self):
        # Check if Weave DEVICE-DESCRIPTION client node is given.
        if self.client == None:
            emsg = "Missing name or address of the Weave DEVICE-DESCRIPTION client node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        # Check if Weave DEVICE-DESCRIPTION server node is given.
        if self.server == None:
            emsg = "Missing name or address of the Weave DEVICE-DESCRIPTION server node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        # Make sure that fabric was created
        if self.getFabricId() == None:
            emsg = "Weave Fabric has not been created yet."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        # Check if Weave DEVICE-DESCRIPTION client node exists.
        if self._nodeExists(self.client):
            self.client_node_id = self.client

        # Check if Weave DEVICE-DESCRIPTION server node exists.
        if self._nodeExists(self.server):
            self.server_node_id = self.server

        # Check if client is provided in a form of IP address
        if IP.isIpAddress(self.client):
            self.client_node_id = self.getNodeIdFromAddress(self.client)

        # Check if server is provided in a form of IP address
        if IP.isIpAddress(self.server):
            self.server_node_id = self.getNodeIdFromAddress(self.server)

        if self.client_node_id == None:
            emsg = "Unknown identity of the client node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        if self.server_node_id == None:
            emsg = "Unknown identity of the server node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        self.client_ip = self.getNodeWeaveIPAddress(self.client_node_id)
        self.server_ip = self.getNodeWeaveIPAddress(self.server_node_id)
        self.client_weave_id = self.getWeaveNodeID(self.client_node_id)
        self.server_weave_id = self.getWeaveNodeID(self.server_node_id)

        # Check if all unknowns were found

        if self.client_ip == None:
            emsg = "Could not find IP address of the client node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        if self.server_ip == None:
            emsg = "Could not find IP address of the server node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        if self.client_weave_id == None:
            emsg = "Could not find Weave node ID of the client node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)

        if self.server_weave_id == None:
            emsg = "Could not find Weave node ID of the server node."
            self.logger.error("[localhost] WeaveDeviceDescription: %s" %
                              (emsg))
            sys.exit(1)
Ejemplo n.º 15
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()
Ejemplo n.º 16
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()