Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions zaza/openstack/charm_tests/policyd/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import zipfile

from octaviaclient.api.v2 import octavia as octaviaclient
import barbicanclient.exceptions
import cinderclient.exceptions
import heatclient.exc
import glanceclient.common.exceptions
Expand Down Expand Up @@ -715,3 +716,33 @@ def get_client_and_attempt_operation(self, ip):
except (octaviaclient.OctaviaClientException,
keystoneauth1.exceptions.http.Forbidden):
raise PolicydOperationFailedException()


class BarbicanTests(BasePolicydSpecialization):
"""Test the policyd override using the barbican client."""

_rule = {'rule.yaml': "{'secrets:get': '!'}"}

@classmethod
def setUpClass(cls, application_name=None):
"""Run class setup for running BarbicanTests charm operation tests."""
super(BarbicanTests, cls).setUpClass(application_name="barbican")
cls.application_name = "barbican"

def get_client_and_attempt_operation(self, ip):
"""Attempt to list secrets as a policyd override.

This operation should pass normally, and fail when
the rule has been overriden (see the `rule` class variable).

:param ip: the IP address to get the session against.
:type ip: str
:raises: PolicydOperationFailedException if operation fails.
"""
barbican = openstack_utils.get_barbican_session_client(
self.get_keystone_session_admin_user(ip))
try:
barbican.secrets.list()
except (barbicanclient.exceptions.HTTPClientError,
keystoneauth1.exceptions.http.Forbidden):
raise PolicydOperationFailedException()
12 changes: 12 additions & 0 deletions zaza/openstack/utilities/openstack.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
from openstack import connection

from aodhclient.v2 import client as aodh_client
from barbicanclient import client as barbicanclient
from cinderclient import client as cinderclient
from heatclient import client as heatclient
from magnumclient import client as magnumclient
Expand Down Expand Up @@ -450,6 +451,17 @@ def get_octavia_session_client(session, service_type='load-balancer',
endpoint=endpoint.url)


def get_barbican_session_client(session):
"""Return barbicanclient authenticated by keystone session.

:param session: Keystone session object
:type session: keystoneauth1.session.Session object
:returns: Authenticated barbicanclient
:rtype: barbicanclient.client.Client object
"""
return barbicanclient.Client(session=session)


def get_heat_session_client(session, version=1):
"""Return heatclient authenticated by keystone session.

Expand Down
Loading