Beispiel #1
0
        def __set_uri(self, uri):
                if uri is None:
                        raise api_errors.BadRepositoryURI(uri)

                # Decompose URI to verify attributes.
                scheme, netloc, path, params, query = \
                    urlparse.urlsplit(uri, allow_fragments=0)

                # The set of currently supported protocol schemes.
                if scheme.lower() not in SUPPORTED_SCHEMES:
                        raise api_errors.UnsupportedRepositoryURI(uri)

                # XXX valid_pub_url's check isn't quite right and could prevent
                # usage of IDNs (international domain names).
                if not netloc or not misc.valid_pub_url(uri):
                        raise api_errors.BadRepositoryURI(uri)

                # Normalize URI scheme.
                uri = uri.replace(scheme, scheme.lower(), 1)

                if self.__trailing_slash:
                        uri = misc.url_affix_trailing_slash(uri)

                if scheme.lower() not in SSL_SCHEMES:
                        self.__ssl_cert = None
                        self.__ssl_key = None

                self.__uri = uri
Beispiel #2
0
    def __set_uri(self, uri):
        if uri is None:
            raise api_errors.BadRepositoryURI(uri)

        # Decompose URI to verify attributes.
        scheme, netloc, path, params, query = \
            urlparse.urlsplit(uri, allow_fragments=0)

        # The set of currently supported protocol schemes.
        if scheme.lower() not in SUPPORTED_SCHEMES:
            raise api_errors.UnsupportedRepositoryURI(uri)

        # XXX valid_pub_url's check isn't quite right and could prevent
        # usage of IDNs (international domain names).
        if not netloc or not misc.valid_pub_url(uri):
            raise api_errors.BadRepositoryURI(uri)

        # Normalize URI scheme.
        uri = uri.replace(scheme, scheme.lower(), 1)

        if self.__trailing_slash:
            uri = misc.url_affix_trailing_slash(uri)

        if scheme.lower() not in SSL_SCHEMES:
            self.__ssl_cert = None
            self.__ssl_key = None

        self.__uri = uri
Beispiel #3
0
    def has_origin(self, origin):
        """Returns a boolean value indicating whether a matching
                'origin' exists for the repository.

                'origin' can be a RepositoryURI object or a URI string."""

        if not isinstance(origin, RepositoryURI):
            origin = misc.url_affix_trailing_slash(origin)
        return origin in self.origins
Beispiel #4
0
    def has_mirror(self, mirror):
        """Returns a boolean value indicating whether a matching
                'mirror' exists for the repository.

                'mirror' can be a RepositoryURI object or a URI string."""

        if not isinstance(mirror, RepositoryURI):
            mirror = misc.url_affix_trailing_slash(mirror)
        return mirror in self.mirrors
Beispiel #5
0
        def has_origin(self, origin):
                """Returns a boolean value indicating whether a matching
                'origin' exists for the repository.

                'origin' can be a RepositoryURI object or a URI string."""

                if not isinstance(origin, RepositoryURI):
                        origin = misc.url_affix_trailing_slash(origin)
                return origin in self.origins
Beispiel #6
0
        def has_mirror(self, mirror):
                """Returns a boolean value indicating whether a matching
                'mirror' exists for the repository.

                'mirror' can be a RepositoryURI object or a URI string."""

                if not isinstance(mirror, RepositoryURI):
                        mirror = misc.url_affix_trailing_slash(mirror)
                return mirror in self.mirrors
Beispiel #7
0
    def get_origin(self, origin):
        """Returns a RepositoryURI object representing the origin
                that matches 'origin'.

                'origin' can be a RepositoryURI object or a URI string."""

        if not isinstance(origin, RepositoryURI):
            origin = misc.url_affix_trailing_slash(origin)
        for o in self.origins:
            if origin == o.uri:
                return o
        raise api_errors.UnknownRepositoryOrigin(origin)
Beispiel #8
0
    def get_mirror(self, mirror):
        """Returns a RepositoryURI object representing the mirror
                that matches 'mirror'.

                'mirror' can be a RepositoryURI object or a URI string."""

        if not isinstance(mirror, RepositoryURI):
            mirror = misc.url_affix_trailing_slash(mirror)
        for m in self.mirrors:
            if mirror == m.uri:
                return m
        raise api_errors.UnknownRepositoryMirror(mirror)
Beispiel #9
0
        def get_origin(self, origin):
                """Returns a RepositoryURI object representing the origin
                that matches 'origin'.

                'origin' can be a RepositoryURI object or a URI string."""

                if not isinstance(origin, RepositoryURI):
                        origin = misc.url_affix_trailing_slash(origin)
                for o in self.origins:
                        if origin == o.uri:
                                return o
                raise api_errors.UnknownRepositoryOrigin(origin)
Beispiel #10
0
        def get_mirror(self, mirror):
                """Returns a RepositoryURI object representing the mirror
                that matches 'mirror'.

                'mirror' can be a RepositoryURI object or a URI string."""

                if not isinstance(mirror, RepositoryURI):
                        mirror = misc.url_affix_trailing_slash(mirror)
                for m in self.mirrors:
                        if mirror == m.uri:
                                return m
                raise api_errors.UnknownRepositoryMirror(mirror)
Beispiel #11
0
    def remove_origin(self, origin):
        """Removes the origin matching 'origin' from the repository.

                'origin' can be a RepositoryURI object or a URI string."""

        if not isinstance(origin, RepositoryURI):
            origin = misc.url_affix_trailing_slash(origin)
        for i, o in enumerate(self.origins):
            if origin == o.uri:
                # Immediate return as the index into the array
                # changes with each removal.
                del self.origins[i]
                return
        raise api_errors.UnknownRepositoryOrigin(origin)
Beispiel #12
0
    def remove_mirror(self, mirror):
        """Removes the mirror matching 'mirror' from the repository.

                'mirror' can be a RepositoryURI object or a URI string."""

        if not isinstance(mirror, RepositoryURI):
            mirror = misc.url_affix_trailing_slash(mirror)
        for i, m in enumerate(self.mirrors):
            if mirror == m.uri:
                # Immediate return as the index into the array
                # changes with each removal.
                del self.mirrors[i]
                return
        raise api_errors.UnknownRepositoryMirror(mirror)
Beispiel #13
0
 def __replace_uris(self, attr, value, trailing_slash=True):
     if value is None:
         value = []
     if not isinstance(value, list):
         raise api_errors.BadRepositoryAttributeValue(attr, value=value)
     uris = []
     for u in value:
         if not isinstance(u, RepositoryURI):
             u = RepositoryURI(u, trailing_slash=trailing_slash)
         elif trailing_slash:
             u.uri = misc.url_affix_trailing_slash(u.uri)
         uris.append(u)
     uris.sort(key=URI_SORT_POLICIES[self.__sort_policy])
     return uris
Beispiel #14
0
        def remove_origin(self, origin):
                """Removes the origin matching 'origin' from the repository.

                'origin' can be a RepositoryURI object or a URI string."""

                if not isinstance(origin, RepositoryURI):
                        origin = misc.url_affix_trailing_slash(origin)
                for i, o in enumerate(self.origins):
                        if origin == o.uri:
                                # Immediate return as the index into the array
                                # changes with each removal.
                                del self.origins[i]
                                return
                raise api_errors.UnknownRepositoryOrigin(origin)
Beispiel #15
0
        def remove_mirror(self, mirror):
                """Removes the mirror matching 'mirror' from the repository.

                'mirror' can be a RepositoryURI object or a URI string."""

                if not isinstance(mirror, RepositoryURI):
                        mirror = misc.url_affix_trailing_slash(mirror)
                for i, m in enumerate(self.mirrors):
                        if mirror == m.uri:
                                # Immediate return as the index into the array
                                # changes with each removal.
                                del self.mirrors[i]
                                return
                raise api_errors.UnknownRepositoryMirror(mirror)
Beispiel #16
0
 def __replace_uris(self, attr, value, trailing_slash=True):
         if value is None:
                 value = []
         if not isinstance(value, list):
                 raise api_errors.BadRepositoryAttributeValue(attr,
                     value=value)
         uris = []
         for u in value:
                 if not isinstance(u, RepositoryURI):
                         u = RepositoryURI(u,
                             trailing_slash=trailing_slash)
                 elif trailing_slash:
                         u.uri = misc.url_affix_trailing_slash(u.uri)
                 uris.append(u)
         uris.sort(key=URI_SORT_POLICIES[self.__sort_policy])
         return uris