diff --git a/systest/lib/openstack/__init__.py b/systest/lib/openstack/__init__.py
new file mode 100644
index 0000000..2bf7fed
--- /dev/null
+++ b/systest/lib/openstack/__init__.py
@@ -0,0 +1,15 @@
+# Copyright 2017 Sandvine
+#
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
diff --git a/systest/lib/openstack/fixtures.py b/systest/lib/openstack/fixtures.py
new file mode 100644
index 0000000..7c1ec7f
--- /dev/null
+++ b/systest/lib/openstack/fixtures.py
@@ -0,0 +1,38 @@
+# Copyright 2017 Sandvine
+#
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+import pytest
+import json
+
+
+def openstack_add_options(parser):
+    parser.addoption("--os-url", default="", help="openstack identity url")
+    parser.addoption("--os-username", default="", help="openstack username")
+    parser.addoption("--os-password", default="", help="openstack password")
+    parser.addoption("--os-project-name", default="", help="openstack project name")
+
+@pytest.fixture
+def openstack(request):
+    from lib.openstack import openstack
+    access = {}
+    access['os-url'] = request.config.getoption("--os-url")
+    access['os-username'] = request.config.getoption("--os-username")
+    access['os-password'] = request.config.getoption("--os-password")
+    access['os-project-name'] = request.config.getoption("--os-project-name")
+    access['vim-type'] = 'openstack'
+    access['description'] = 'pytest system test'
+
+    return openstack.Openstack(access)
diff --git a/systest/lib/openstack/openstack.py b/systest/lib/openstack/openstack.py
new file mode 100644
index 0000000..9f5c304
--- /dev/null
+++ b/systest/lib/openstack/openstack.py
@@ -0,0 +1,23 @@
+# Copyright 2017 Sandvine
+#
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+
+class Openstack():
+    def __init__(self,access):
+        self._os_access = access
+
+    def get_access(self):
+        return self._os_access
