def test_execution_action(self):
        metadata = {'testkey1': 'value3'}
        res = {'meta': {'testkey1': 'value3'}}
        server = self._create_test_server()
        congress_client = self.admin_manager.congress_client
        servers_client = self.admin_manager.servers_client
        policy = self._create_random_policy()
        service = 'nova'
        action = 'servers.set_meta'
        action_args = {'args': {'positional': [],
                                'named': {'server': server['id'],
                                          'metadata': metadata}}}
        body = action_args

        f = lambda: servers_client.show_server_metadata_item(server['id'],
                                                             'testkey1')
        # execute via datasource api
        body.update({'name': action})
        congress_client.execute_datasource_action(service, "execute", body)
        helper.retry_check_function_return_value(f, res)

        # execute via policy api
        body.update({'name': service + ':' + action})
        congress_client.execute_policy_action(policy, "execute", False,
                                              False, body)
        helper.retry_check_function_return_value(f, res)
Esempio n. 2
0
    def test_execution_action(self):
        metadata = {'testkey1': 'value3'}
        res = {'meta': {'testkey1': 'value3'}}
        server = self._create_test_server()
        congress_client = self.admin_manager.congress_client
        servers_client = self.admin_manager.servers_client
        policy = self._create_random_policy()
        service = 'nova'
        action = 'servers.set_meta'
        action_args = {
            'args': {
                'positional': [],
                'named': {
                    'server': server['id'],
                    'metadata': metadata
                }
            }
        }
        body = action_args

        f = lambda: servers_client.show_server_metadata_item(
            server['id'], 'testkey1')
        # execute via datasource api
        body.update({'name': action})
        congress_client.execute_datasource_action(service, "execute", body)
        helper.retry_check_function_return_value(f, res)

        # execute via policy api
        body.update({'name': service + ':' + action})
        congress_client.execute_policy_action(policy, "execute", False, False,
                                              body)
        helper.retry_check_function_return_value(f, res)
    def test_reactive_enforcement(self):
        servers_client = self.admin_manager.servers_client
        server_name = 'server_under_test'
        server = self._create_test_server(name=server_name)
        policy_name = self._create_random_policy()
        meta_key = 'meta_test_key1'
        meta_val = 'value1'
        meta_data = {'meta': {meta_key: meta_val}}
        rules = [
            'execute[nova:servers_set_meta(id, "%s", "%s")] :- '
            'test_servers(id)' % (meta_key, meta_val),
            'test_servers(id) :- '
            'nova:servers(id, name, host_id, status, tenant_id,'
            'user_id, image_id, flavor_id, zone, host_name),'
            'equal(name, "%s")' % server_name]

        for rule in rules:
            self._create_policy_rule(policy_name, rule)
        f = lambda: servers_client.show_server_metadata_item(server['id'],
                                                             meta_key)
        helper.retry_check_function_return_value(f, meta_data)