Ejemplo n.º 1
0
    def delete(self, classname, oid):

        url = '%s/%s/%s' % (self.base, classname, oid)

        headers = {'Accept': 'application/json'}
        if self.token:
            headers['Authorization'] = self.token

        params = {'allowFullTableScan': True}
        if not classname:
            raise exceptions.InvalidParameters('classname cannot be null')

        if not oid:
            raise exceptions.InvalidParameters('oid cannot be null')

        result = self._delete(url, params, headers)
        if result:
            r = json.loads(result)
            return r.get("status").get("msg")
        else:
            raise AttributeError("Error in delete:" + str(result))
Ejemplo n.º 2
0
    def create(self, classname, payload, parent_obj=None, parent_ref=None):

        url = '%s/%s' % (self.base, classname)

        headers = {'Accept': 'application/json'}
        if self.token:
            headers['Authorization'] = self.token

        params = {'allowFullTableScan': True}
        if not classname:
            raise exceptions.InvalidParameters('classname cannot be null')
        if not payload:
            raise exceptions.InvalidParameters('payload cannot be null')

        if parent_obj:
            path = parent_obj._type + "!" + parent_obj._oid + "!" + parent_ref
            url = url + "?path=" + path

        result = self._post(url, params, headers, payload)
        if result:
            oid = json.loads(result).get('result')[0]
            return oid
Ejemplo n.º 3
0
    def __init__(self,
                 service,
                 repo,
                 token=None,
                 branch='main',
                 filename=None):

        if not service:
            raise exceptions.InvalidParameters('Missing Service')
        self.service = service

        if not token or token == '':
            self.token = None
        else:
            self.token = token

        self.branch = branch

        if not repo or repo == '':
            raise exceptions.InvalidParameters('Missing Repository')
        self.repo = repo

        self.base = 'http://%s/cms/repositories/%s/branches/%s' % (
            service, repo, branch)

        if not filename:
            uri = 'http://%s/cms/repositories/%s/metadata' % (service,
                                                              self.repo)
        else:
            uri = 'file:%s' % filename

        # This will work as long as the number of classes is not too big
        self.classes = {}
        self.managers = {}
        self.inbound = {}
        self.metadata = self._load_metadata(uri)

        self._generate()
Ejemplo n.º 4
0
    def _load_metadata(self, uri):

        parsed_uri = urlparse(uri)
        if not parsed_uri or parsed_uri.scheme not in ['http', 'file']:
            raise exceptions.InvalidParameters('Invalid Metadata URI')

        m = None
        if parsed_uri.scheme == 'file':
            with open(parsed_uri.path) as f:
                m = json.load(f)
        else:
            result = self._get(uri, {}, {'Accept': 'application/json'})
            m = json.loads(result)

        if not m:
            return None
        status = m.get('status', {})
        if status.get('code', '') == '200':
            return {k['name']: k for k in m.get('result', [])}
        else:
            return None
Ejemplo n.º 5
0
    def find(self, query, limit=100, offset=0):

        url = '%s/query' % self.base

        headers = {'Accept': 'application/json'}
        if self.token:
            headers['Authorization'] = self.token

        params = {'limit': limit, 'skip': offset, 'allowFullTableScan': True}
        if not query:
            raise exceptions.InvalidParameters('query cannot be null')

        result = self._post(url, params, headers, query)
        if result:
            r = json.loads(result)
            hasmore = r.get('hasmore', False)
            if r.get('count') == 0:
                return None
            return (hasmore, (self._object_factory(o)
                              for o in r.get('result', [])))

        return None