예제 #1
0
    def __create_or_lookup_cpl_object(self, prefix,
             name, type=None, create=None):
        '''
        Create or lookup a CPL object

        ** Parameters **
            prefix 
            name: name
            type: type, type can be none for lookup
            create:
                None: lookup or create
                True: create only
                False: lookup only
        '''

        if create == None:
            ret, idp = CPLDirect.cpl_lookup_or_create_object(prefix, name,
                              type)
            if ret == S_OBJECT_CREATED:
                ret = S_OK
        elif create:
            ret, idp = CPLDirect.cpl_create_object(prefix,
                        name, type)
        else:
            ret, idp = CPLDirect.cpl_lookup_object(prefix, name, type)
            if ret == E_NOT_FOUND:
                raise LookupError('Not found')
        if not CPLDirect.cpl_is_ok(ret):
            raise CPLException('Could not find or create' +
                ' provenance object: ' + CPLDirect.cpl_error_string(ret), ret)
        
        r = cpl_object(idp)
        return r
예제 #2
0
    def create_bundle(self, name, prefix):
        ret, idp = CPLDirect.cpl_create_object(prefix, name, BUNDLE)

        if not CPLDirect.cpl_is_ok(ret):
            raise CPLException('Could not create' +
                ' provenance bundle: ' + CPLDirect.cpl_error_string(ret), ret)
        
        r = cpl_object(idp)
        return r
예제 #3
0
    def __create_or_lookup_cpl_object(self,
                                      originator,
                                      name,
                                      type,
                                      create=None,
                                      container=None):
        '''
		Create or lookup a CPL object

		** Parameters **
			originator 
			name: originator-local name
			type: originator-local type
			create:
				None: lookup or create
				True: create only
				False: lookup only
			container:
				Id of container into which to place this object.
				Only applies to create
		'''
        if container is None:
            container_id = NONE
        else:
            container_id = container.id

        idp = CPLDirect.new_cpl_id_tp()
        if create == None:
            ret = CPLDirect.cpl_lookup_or_create_object(
                originator, name, type, container_id, idp)
            if ret == S_OBJECT_CREATED:
                ret = S_OK
        elif create:
            ret = CPLDirect.cpl_create_object(originator, name, type,
                                              container_id, idp)
        else:
            ret = CPLDirect.cpl_lookup_object(originator, name, type, idp)

        if ret == E_NOT_FOUND:
            CPLDirect.delete_cpl_id_tp(idp)
            raise LookupError('Not found')
        if not CPLDirect.cpl_is_ok(ret):
            CPLDirect.delete_cpl_id_tp(idp)
            raise Exception('Could not find or create' +
                            ' provenance object: ' +
                            CPLDirect.cpl_error_string(ret))

        r = cpl_object(idp)

        CPLDirect.delete_cpl_id_tp(idp)
        return r
	def __create_or_lookup_cpl_object(self, originator,
		     name, type, create=None, container=None):
		'''
		Create or lookup a CPL object

		** Parameters **
			originator 
			name: originator-local name
			type: originator-local type
			create:
				None: lookup or create
				True: create only
				False: lookup only
			container:
				Id of container into which to place this object.
				Only applies to create
		'''
		if container is None:
			container_id = NONE
		else:
			container_id = container.id

		idp = CPLDirect.new_cpl_id_tp()
		if create == None:
			ret = CPLDirect.cpl_lookup_or_create_object(originator, name,
							  type, container_id, idp)
			if ret == S_OBJECT_CREATED:
				ret = S_OK
		elif create:
			ret = CPLDirect.cpl_create_object(originator,
						name, type, container_id, idp)
		else:
			ret = CPLDirect.cpl_lookup_object(originator, name, type, idp)

		if ret == E_NOT_FOUND:
			CPLDirect.delete_cpl_id_tp(idp)
			raise LookupError('Not found')
		if not CPLDirect.cpl_is_ok(ret):
			CPLDirect.delete_cpl_id_tp(idp)
			raise Exception('Could not find or create' +
			    ' provenance object: ' + CPLDirect.cpl_error_string(ret))
			
		r = cpl_object(idp)

		CPLDirect.delete_cpl_id_tp(idp)
		return r
예제 #5
0
    def __create_or_lookup_cpl_object(self, prefix,
             name, type=None, create=None, bundle=None):
        '''
        Create or lookup a CPL object

        ** Parameters **
            prefix 
            name: name
            type: type, type can be none for lookup
            create:
                None: lookup or create
                True: create only
                False: lookup only
            bundle:
                Id of bundle into which to place this object, can be none
        '''
        if bundle == None:
            bundle_id = NONE
        else:
            bundle_id = bundle.id

        if create == None:
            ret, idp = CPLDirect.cpl_lookup_or_create_object(prefix, name,
                              type, bundle_id)
            if ret == S_OBJECT_CREATED:
                ret = S_OK
        elif create:
            ret, idp = CPLDirect.cpl_create_object(prefix,
                        name, type, bundle_id)
        else:
            ret, idp = CPLDirect.cpl_lookup_object(prefix, name, type, bundle_id)
            if ret == E_NOT_FOUND:
                raise LookupError('Not found')
        if not CPLDirect.cpl_is_ok(ret):
            raise CPLException('Could not find or create' +
                ' provenance object: ' + CPLDirect.cpl_error_string(ret), ret)
        
        r = cpl_object(idp)
        return r