Esempio n. 1
0
    def test_create_resource_for_sanity(self):
        '''
        Put two resource and one link...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(NETWORK)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/network/1')
        self.assertTrue('/network/1' in self.registry.get_resource_keys())

        headers = {'Content-Type': 'text/occi',
                   'Category': parser.get_category_str(NETWORKINTERFACE),
                   'X-Occi-Attribute': 'occi.core.source="/compute/1",' \
                                       ' occi.core.target="/network/1"'}
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/network/link/1')
        self.assertTrue('/network/link/1' in self.registry.get_resource_keys())
        compute = self.registry.get_resource('/compute/1')
        self.assertTrue(len(compute.links) == 1)
        heads, body = handler.get_output()
        self.assertTrue('/network/link/1' in heads['Location'])
Esempio n. 2
0
    def test_trigger_action_for_failure(self):
        '''
        Trigger an action...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/3')
        self.assertTrue('/compute/3' in self.registry.get_resource_keys())

        headers = {'Content-Type': 'text/occi', 'Category': 'blabla'}
        request = create_request('POST', headers, '', '/compute/3?action=' \
                                 'start')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/compute/3')

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(START)
        }
        request = create_request('POST', headers, '', '/compute/3?action=' \
                                 'start')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/bla"')
Esempio n. 3
0
    def test_replace_for_sanity(self):
        '''
        test update...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE),
            'X-Occi-Attribute': 'occi.compute.memory="2.0"'
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE),
            'X-Occi-Attribute': 'occi.compute.cores="2"'
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')

        compute = self.registry.get_resource('/compute/1')
        self.assertTrue('occi.compute.memory' not in compute.attributes.keys())
        self.assertTrue('occi.compute.cores' in compute.attributes.keys())

        heads, body = handler.get_output()
Esempio n. 4
0
    def test_partial_update_for_failure(self):
        '''
        test update...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'X-Occi-Attribute': 'occi.compute.cores="2"'
        }
        request = create_request('POST', headers, '')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/bla')

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        headers = {'Content-Type': 'text/occi', 'X-Occi-Attribute': 'garbage'}
        request = create_request('POST', headers, '')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/compute/1')
Esempio n. 5
0
    def test_inline_creation_for_sanity(self):
        '''
        Test creation of compute with a link to network (inline)...
        '''
        headers = {'Content-Type': 'text/occi',
                   'Category': parser.get_category_str(COMPUTE),
                   'Link': '</network/1>;' \
                   'rel="http://schemas.ogf.org/occi/infrastructure#' \
                   'network";' \
                   'category="http://schemas.ogf.org/occi/infrastructure#' \
                   'networkinterface";' \
                   'occi.networkinterface.interface="eth0";' \
                   'occi.networkinterface.mac="00:11:22:33:44:55";'}
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/2')
        self.assertTrue('/compute/2' in self.registry.get_resource_keys())
        self.assertTrue(len(self.registry.get_resources()) == 4)

        compute = self.registry.get_resource('/compute/2')
        self.assertTrue(len(compute.links) == 1)

        request = create_request('GET', {}, '')
        handler = ResourceWrapper(self.app, request)
        handler.get('/compute/2')
        heads, body = handler.get_output()
        self.assertTrue('Link: ' in body)
        self.assertTrue('self=' in body)
 def test_get_category_for_sanity(self):
     '''
     Simple sanity check...
     '''
     res = parser.get_category(parser.get_category_str(self.compute),
                               self.registry.get_categories())
     self.assertEqual(res, self.compute)
 def test_get_category_for_sanity(self):
     '''
     Simple sanity check...
     '''
     res = parser.get_category(parser.get_category_str(self.compute),
                       self.registry.get_categories())
     self.assertEqual(res, self.compute)
Esempio n. 8
0
def _from_entity(entity):
    """
    Create a HTTP data object from an entity.

    entity -- The entity to render.
    """
    data = HTTPData()

    # categories
    cat_str_list = []
    cat_str_list.append(parser.get_category_str(entity.kind))

    for category in entity.mixins:
        cat_str_list.append(parser.get_category_str(category))

    data.categories = cat_str_list

    attributes = []
    entity.attributes["occi.core.id"] = entity.identifier

    link_str_list = []
    # actions
    for action in entity.actions:
        act = "<" + entity.identifier + "?action=" + action.term + ">"
        act = act + '; rel="' + str(action) + '"'
        link_str_list.append(act)

    # links
    if isinstance(entity, Resource):
        # links
        for link in entity.links:
            link_str_list.append(parser.get_link_str(link))

    elif isinstance(entity, Link):
        entity.attributes["occi.core.source"] = entity.source.identifier
        entity.attributes["occi.core.target"] = entity.target.identifier

    data.links = link_str_list

    # attributes
    for attr in entity.attributes:
        attributes.append(attr + '="' + entity.attributes[attr] + '"')

    data.attributes = attributes

    return data
Esempio n. 9
0
def _from_entity(entity):
    '''
    Create a HTTP data object from an entity.

    entity -- The entity to render.
    '''
    data = HTTPData()

    # categories
    cat_str_list = []
    cat_str_list.append(parser.get_category_str(entity.kind))

    for category in entity.mixins:
        cat_str_list.append(parser.get_category_str(category))

    data.categories = cat_str_list

    attributes = []
    entity.attributes['occi.core.id'] = entity.identifier

    link_str_list = []
    # actions
    for action in entity.actions:
        act = '<' + entity.identifier + '?action=' + action.term + '>'
        act = act + '; rel="' + str(action) + '"'
        link_str_list.append(act)

    # links
    if isinstance(entity, Resource):
        # links
        for link in entity.links:
            link_str_list.append(parser.get_link_str(link))

    elif isinstance(entity, Link):
        entity.attributes['occi.core.source'] = entity.source.identifier
        entity.attributes['occi.core.target'] = entity.target.identifier

    data.links = link_str_list

    # attributes
    for attr in entity.attributes:
        attributes.append(attr + '="' + entity.attributes[attr] + '"')

    data.attributes = attributes

    return data
Esempio n. 10
0
    def test_create_entity_for_failure(self):
        '''
        Simple test - more complex one in TestResourceHandler...
        '''
        headers = {
            'Content-Type': 'text/xml',
            'Categories': parser.get_category_str(COMPUTE)
        }
        request = create_request('POST', headers, '')
        handler = CollectionWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/compute')

        headers = {
            'Content-Type': 'text/occi',
            'Categories': parser.get_category_str(COMPUTE)
        }
        request = create_request('POST', headers, '')
        handler = CollectionWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.post, '/compute')
Esempio n. 11
0
def _from_categories(categories):
    '''
    Create a HTTP data object from a set of categories.

    categories -- list of categories.
    '''
    data = HTTPData()

    for cat in categories:
        data.categories.append(parser.get_category_str(cat))

    return data
Esempio n. 12
0
def _from_categories(categories):
    """
    Create a HTTP data object from a set of categories.

    categories -- list of categories.
    """
    data = HTTPData()

    for cat in categories:
        data.categories.append(parser.get_category_str(cat))

    return data
Esempio n. 13
0
 def test_create_entity_for_sanity(self):
     '''
     Simple test - more complex one in TestResourceHandler...
     '''
     headers = {
         'Content-Type': 'text/occi',
         'Category': parser.get_category_str(COMPUTE)
     }
     request = create_request('POST', headers, '')
     handler = CollectionWrapper(self.app, request)
     handler.post('/compute/')
     self.assertTrue(len(self.registry.get_resources()) == 4)
Esempio n. 14
0
 def test_action_for_sanity(self):
     '''
     Tests if actions can be triggered on a resource set.
     '''
     headers = {
         'Content-Type': 'text/occi',
         'Category': parser.get_category_str(START)
     }
     request = create_request('POST', headers, '', '/compute/?action=start')
     handler = CollectionWrapper(self.app, request)
     handler.post('/compute/')
     self.assertTrue(
         self.compute.attributes['occi.compute.state'] == 'active')
Esempio n. 15
0
    def test_trigger_action_for_sanity(self):
        '''
        Trigger an action...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/3')
        self.assertTrue('/compute/3' in self.registry.get_resource_keys())

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(START)
        }
        request = create_request('POST', headers, '', '/compute/3?action' \
                                 '=start')
        handler = ResourceWrapper(self.app, request)
        handler.post('/compute/3')

        compute = self.registry.get_resource('/compute/3')
        self.assertTrue(compute.attributes['occi.compute.state'] == 'active')
Esempio n. 16
0
    def test_delete_for_sanity(self):
        '''
        Test delete...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE),
            'X-Occi-Attribute': 'occi.compute.memory="2.0"'
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        request = create_request('DELETE', {}, '')
        handler = ResourceWrapper(self.app, request)
        handler.delete('/compute/1')
        self.assertTrue('/compute/1' not in self.registry.get_resource_keys())
Esempio n. 17
0
    def test_retrieve_resource_for_sanity(self):
        '''
        test retrieval...
        '''
        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        headers = {'Accept': 'text/occi'}
        request = create_request('GET', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.get('/compute/1')
        heads, body = handler.get_output()
        self.assertTrue('"/compute/1"' in heads['X-OCCI-Attribute'])
        self.assertTrue('compute' in heads['Category'])
        self.assertTrue('text/occi' in heads['Content-Type'])
Esempio n. 18
0
    def test_delete_for_failure(self):
        '''
        Test delete...
        '''
        request = create_request('DELETE', {}, '')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.delete, '/compute/2')

        headers = {
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE),
            'X-Occi-Attribute': 'undeletable="true"'
        }
        request = create_request('PUT', headers, '')
        handler = ResourceWrapper(self.app, request)
        handler.put('/compute/1')
        self.assertTrue('/compute/1' in self.registry.get_resource_keys())

        request = create_request('DELETE', {}, '')
        handler = ResourceWrapper(self.app, request)
        self.assertRaises(HTTPError, handler.delete, '/compute/1')
Esempio n. 19
0
    def test_link_creation_for_sanity(self):
        '''
        Test creation for sanity...
        '''
        headers = {'Content-Type': 'text/plain'}
        body = 'Category: ' + parser.get_category_str(NETWORKINTERFACE) + '\n'
        body += 'X-OCCI-Attribute: occi.core.source="/compute/1"\n'
        body += 'X-OCCI-Attribute: occi.core.target="/network/1"'
        request = create_request('PUT', headers, body)
        handler = ResourceWrapper(self.app, request)
        handler.put('/link/2')
        self.assertTrue('/link/2' in self.registry.get_resource_keys())

        link = self.registry.get_resource('/link/2')
        self.assertTrue(link in link.source.links)

        request = create_request('GET', {}, '')
        handler = ResourceWrapper(self.app, request)
        handler.get('/link/2')
        heads, body = handler.get_output()
        self.assertTrue('occi.core.target' in body)
        self.assertTrue('occi.core.source' in body)
Esempio n. 20
0
    def test_retrieve_for_sanity(self):
        '''
        Test GET with uri-list
        '''
        headers = {'Accept': 'text/occi'}
        request = create_request('GET', headers, '')
        handler = CollectionWrapper(self.app, request)
        handler.get('/compute/')
        headers, body = handler.get_output()
        self.assertTrue(headers['Content-Type'] == 'text/occi')
        self.assertTrue(self.compute.identifier in headers['X-OCCI-Location'])

        # filter on category
        headers = {
            'Accept': 'text/occi',
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(self.compute.kind)
        }
        request = create_request('GET', headers, '')
        handler = CollectionWrapper(self.app, request)
        handler.get('/')
        headers, body = handler.get_output()
        self.assertTrue(headers['Content-Type'] == 'text/occi')
        self.assertTrue(self.compute.identifier in headers['X-OCCI-Location'])
        self.assertFalse(self.network.identifier in headers['X-OCCI-Location'])

        # filter on attr...
        headers = {
            'Accept': 'text/occi',
            'Content-Type': 'text/occi',
            'X-Occi-Attribute': 'foo2="bar2"'
        }
        request = create_request('GET', headers, '')
        handler = CollectionWrapper(self.app, request)
        handler.get('/')
        headers, body = handler.get_output()
        self.assertTrue(headers['Content-Type'] == 'text/occi')
        self.assertTrue(self.compute.identifier in headers['X-OCCI-Location'])
        self.assertFalse(self.network.identifier in headers['X-OCCI-Location'])
Esempio n. 21
0
    def test_retrieval_for_sanity(self):
        '''
        Test HTTP GET on QI.
        '''
        # tests if all 3 kinds can be retrieved.
        headers = {'Accept': 'text/occi'}
        request = create_request('GET', headers, '')
        handler = QueryWrapper(self.app, request)
        handler.get()
        headers, body = handler.get_output()
        self.assertTrue(len(headers['Category'].split(',')) == 3)

        # test the filtering...
        headers = {
            'Accept': 'text/occi',
            'Content-Type': 'text/occi',
            'Category': parser.get_category_str(COMPUTE)
        }
        request = create_request('GET', headers, '')
        handler = QueryWrapper(self.app, request)
        handler.get()
        headers, body = handler.get_output()
        self.assertTrue(len(headers['Category'].split(',')) == 1)