Commit e3753606 authored by Łukasz Nowak's avatar Łukasz Nowak

Rebrand HTTP interface to SlapOS namespace.

parent aed88aa5
slapos_category slapos_category
slapos_cloud slapos_cloud
slapos_slap_tool slapos_slap_tool
slapos_cache slapos_cache
\ No newline at end of file slapos_rest_api_v1
\ No newline at end of file
25 26
\ No newline at end of file \ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>vifib_rest_api_preference</string> </value> <value> <string>slapos_rest_api_preference</string> </value>
</item> </item>
<item> <item>
<key> <string>permissions</string> </key> <key> <string>permissions</string> </key>
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string>Vifib Rest API</string> </value> <value> <string>SlapOS Rest API</string> </value>
</item> </item>
<item> <item>
<key> <string>visible</string> </key> <key> <string>visible</string> </key>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>text</string> </key> <key> <string>text</string> </key>
<value> <string>string:${object_url}/SystemPreference_viewVifibRestAPI</string> </value> <value> <string>string:${object_url}/SystemPreference_viewSlapOSRestAPI</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>VifibRestAPISystemPreference</string> </value> <value> <string>SlapOSRestAPISystemPreference</string> </value>
</item> </item>
<item> <item>
<key> <string>portal_type</string> </key> <key> <string>portal_type</string> </key>
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>vifib_slapos_rest_api</string> </value> <value> <string>slapos_rest_api</string> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>SystemPreference_viewVifibRestAPI</string> </value> <value> <string>SystemPreference_viewSlapOSRestAPI</string> </value>
</item> </item>
<item> <item>
<key> <string>method</string> </key> <key> <string>method</string> </key>
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
</item> </item>
<item> <item>
<key> <string>name</string> </key> <key> <string>name</string> </key>
<value> <string>SystemPreference_viewVifibRestAPI</string> </value> <value> <string>SystemPreference_viewSlapOSRestAPI</string> </value>
</item> </item>
<item> <item>
<key> <string>pt</string> </key> <key> <string>pt</string> </key>
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string>Vifib Rest API</string> </value> <value> <string>SlapOS Rest API</string> </value>
</item> </item>
<item> <item>
<key> <string>unicode_mode</string> </key> <key> <string>unicode_mode</string> </key>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<ZopeData> <ZopeData>
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<global name="Vifib Rest API Tool" module="erp5.portal_type"/> <global name="SlapOS Rest API Tool" module="erp5.portal_type"/>
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>portal_vifib_rest_api</string> </value> <value> <string>portal_slapos_rest_api</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
2012 Nexedi S.A.
\ No newline at end of file
slapos_cloud
slapos_rest_api_tool_portal_type
\ No newline at end of file
System Preference | slapos_rest_api_preference
\ No newline at end of file
SlapOSRestAPISystemPreference
\ No newline at end of file
slapos_rest_api
\ No newline at end of file
portal_slapos_rest_api
\ No newline at end of file
slapos_rest_api
\ No newline at end of file
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>Vifib Rest API Tool</string> </value> <value> <string>SlapOS Rest API Tool</string> </value>
</item> </item>
<item> <item>
<key> <string>init_script</string> </key> <key> <string>init_script</string> </key>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</item> </item>
<item> <item>
<key> <string>type_class</string> </key> <key> <string>type_class</string> </key>
<value> <string>VifibRestApiTool</string> </value> <value> <string>SlapOSRestAPITool</string> </value>
</item> </item>
<item> <item>
<key> <string>type_interface</string> </key> <key> <string>type_interface</string> </key>
......
2012 Nexedi S.A.
\ No newline at end of file
slapos_rest_api_tool_portal_type
\ No newline at end of file
...@@ -226,7 +226,7 @@ def responseSupport(anonymous=False): ...@@ -226,7 +226,7 @@ def responseSupport(anonymous=False):
str(user_name)) str(user_name))
if len(user_document) != 1: if len(user_document) != 1:
transaction.abort() transaction.abort()
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Currenty logged in user %r wrong document list %r.'% 'Currenty logged in user %r wrong document list %r.'%
(user_name, user_document)) (user_name, user_document))
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
...@@ -256,13 +256,13 @@ def extractDocument(portal_type): ...@@ -256,13 +256,13 @@ def extractDocument(portal_type):
portal_type))) portal_type)))
self.document_url = document.getRelativeUrl() self.document_url = document.getRelativeUrl()
except WrongRequest: except WrongRequest:
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to find document:', error=True) 'Problem while trying to find document:', error=True)
self.REQUEST.response.setStatus(404) self.REQUEST.response.setStatus(404)
except (Unauthorized, KeyError): except (Unauthorized, KeyError):
self.REQUEST.response.setStatus(404) self.REQUEST.response.setStatus(404)
except Exception: except Exception:
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to find instance:', error=True) 'Problem while trying to find instance:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -318,7 +318,7 @@ class InstancePublisher(GenericPublisher): ...@@ -318,7 +318,7 @@ class InstancePublisher(GenericPublisher):
self.REQUEST.response.setStatus(200) self.REQUEST.response.setStatus(200)
except Exception: except Exception:
transaction.abort() transaction.abort()
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while modifying:', error=True) 'Problem while modifying:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -336,7 +336,7 @@ class InstancePublisher(GenericPublisher): ...@@ -336,7 +336,7 @@ class InstancePublisher(GenericPublisher):
self.restrictedTraverse(self.document_url self.restrictedTraverse(self.document_url
).bang(bang_tree=True, comment=self.jbody['log']) ).bang(bang_tree=True, comment=self.jbody['log'])
except Exception: except Exception:
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to generate instance dict:', error=True) 'Problem while trying to generate instance dict:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -378,7 +378,7 @@ class InstancePublisher(GenericPublisher): ...@@ -378,7 +378,7 @@ class InstancePublisher(GenericPublisher):
).requestSoftwareInstance(**request_dict) ).requestSoftwareInstance(**request_dict)
except Exception: except Exception:
transaction.abort() transaction.abort()
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem with person.requestSoftwareInstance:', error=True) 'Problem with person.requestSoftwareInstance:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -416,7 +416,7 @@ class InstancePublisher(GenericPublisher): ...@@ -416,7 +416,7 @@ class InstancePublisher(GenericPublisher):
test_mode=True) test_mode=True)
except Exception: except Exception:
transaction.abort() transaction.abort()
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem with person.allocable:', error=True) 'Problem with person.allocable:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -462,7 +462,7 @@ class InstancePublisher(GenericPublisher): ...@@ -462,7 +462,7 @@ class InstancePublisher(GenericPublisher):
} }
} }
except Exception: except Exception:
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to generate instance dict:', error=True) 'Problem while trying to generate instance dict:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -571,7 +571,7 @@ class ComputerPublisher(GenericPublisher): ...@@ -571,7 +571,7 @@ class ComputerPublisher(GenericPublisher):
computer.Computer_updateFromJson(self.jbody) computer.Computer_updateFromJson(self.jbody)
except Exception: except Exception:
transaction.abort() transaction.abort()
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to update computer:', error=True) 'Problem while trying to update computer:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -636,7 +636,7 @@ class StatusPublisher(GenericPublisher): ...@@ -636,7 +636,7 @@ class StatusPublisher(GenericPublisher):
else: else:
d = json.loads(d) d = json.loads(d)
except Exception: except Exception:
LOG('VifibRestApiV1', ERROR, LOG('SlapOSRestApiV1', ERROR,
'Problem while trying to generate status information:', error=True) 'Problem while trying to generate status information:', error=True)
self.REQUEST.response.setStatus(500) self.REQUEST.response.setStatus(500)
self.REQUEST.response.setBody(jsonify({'error': self.REQUEST.response.setBody(jsonify({'error':
...@@ -649,7 +649,7 @@ class StatusPublisher(GenericPublisher): ...@@ -649,7 +649,7 @@ class StatusPublisher(GenericPublisher):
self.REQUEST.response.setBody(jsonify(d)) self.REQUEST.response.setBody(jsonify(d))
return self.REQUEST.response return self.REQUEST.response
class VifibRestAPIV1(Implicit): class SlapOSRestAPIV1(Implicit):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declarePublic('instance') security.declarePublic('instance')
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</item> </item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>VifibRestAPIV1</string> </value> <value> <string>SlapOSRestAPIV1</string> </value>
</item> </item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>VifibRestAPIV1</string> </value> <value> <string>SlapOSRestAPIV1</string> </value>
</item> </item>
<item> <item>
<key> <string>portal_type</string> </key> <key> <string>portal_type</string> </key>
......
# Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved. # Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved.
from Products.Vifib.tests.testVifibSlapWebService import \ from Products.SlapOS.tests.testSlapOSMixin import \
TestVifibSlapWebServiceMixin testSlapOSMixin
from Products.ERP5Type.Base import WorkflowMethod from Products.ERP5Type.Base import WorkflowMethod
import transaction import transaction
import httplib import httplib
...@@ -65,7 +65,7 @@ class CustomHeaderHTTPConnection(httplib.HTTPConnection): ...@@ -65,7 +65,7 @@ class CustomHeaderHTTPConnection(httplib.HTTPConnection):
kwargs['headers'] = headers kwargs['headers'] = headers
return httplib.HTTPConnection.request(self, *args, **kwargs) return httplib.HTTPConnection.request(self, *args, **kwargs)
def VifibSlaposRestAPIV1MixinBase_afterSetUp(self): def SlapOSRestAPIV1MixinBase_afterSetUp(self):
# self.setupVifibMachineAuthenticationPlugin() # self.setupVifibMachineAuthenticationPlugin()
self.test_random_id = self.generateNewId() self.test_random_id = self.generateNewId()
self.access_control_allow_headers = 'some, funny, headers, ' \ self.access_control_allow_headers = 'some, funny, headers, ' \
...@@ -74,7 +74,7 @@ def VifibSlaposRestAPIV1MixinBase_afterSetUp(self): ...@@ -74,7 +74,7 @@ def VifibSlaposRestAPIV1MixinBase_afterSetUp(self):
self.document_list = [] self.document_list = []
self.portal = self.getPortalObject() self.portal = self.getPortalObject()
self.api_url = self.portal.portal_vifib_rest_api.v1.getAPIRoot() self.api_url = self.portal.portal_slapos_rest_api.v1.getAPIRoot()
self.api_scheme, self.api_netloc, self.api_path, self.api_query, \ self.api_scheme, self.api_netloc, self.api_path, self.api_query, \
self.api_fragment = urlparse.urlsplit(self.api_url) self.api_fragment = urlparse.urlsplit(self.api_url)
...@@ -84,7 +84,7 @@ def VifibSlaposRestAPIV1MixinBase_afterSetUp(self): ...@@ -84,7 +84,7 @@ def VifibSlaposRestAPIV1MixinBase_afterSetUp(self):
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}) })
class VifibSlaposRestAPIV1MixinBase(TestVifibSlapWebServiceMixin): class SlapOSRestAPIV1MixinBase(testSlapOSMixin):
def generateNewId(self): def generateNewId(self):
return str(self.getPortalObject().portal_ids.generateNewId( return str(self.getPortalObject().portal_ids.generateNewId(
id_group=('slapos_rest_api_v1_test'))) id_group=('slapos_rest_api_v1_test')))
...@@ -98,7 +98,7 @@ class VifibSlaposRestAPIV1MixinBase(TestVifibSlapWebServiceMixin): ...@@ -98,7 +98,7 @@ class VifibSlaposRestAPIV1MixinBase(TestVifibSlapWebServiceMixin):
self.response.getheader('Cache-Control')) self.response.getheader('Cache-Control'))
def afterSetUp(self): def afterSetUp(self):
VifibSlaposRestAPIV1MixinBase_afterSetUp(self) SlapOSRestAPIV1MixinBase_afterSetUp(self)
def beforeTearDown(self): def beforeTearDown(self):
pass pass
...@@ -127,8 +127,8 @@ class VifibSlaposRestAPIV1MixinBase(TestVifibSlapWebServiceMixin): ...@@ -127,8 +127,8 @@ class VifibSlaposRestAPIV1MixinBase(TestVifibSlapWebServiceMixin):
def assertResponseNoContentType(self): def assertResponseNoContentType(self):
self.assertEqual(self.response.getheader('Content-Type'), None) self.assertEqual(self.response.getheader('Content-Type'), None)
def VifibSlaposRestAPIV1Mixin_afterSetUp(self): def SlapOSRestAPIV1Mixin_afterSetUp(self):
VifibSlaposRestAPIV1MixinBase_afterSetUp(self) SlapOSRestAPIV1MixinBase_afterSetUp(self)
# self.setupVifibMachineAuthenticationPlugin() # self.setupVifibMachineAuthenticationPlugin()
self.person_request_simulator = tempfile.mkstemp()[1] self.person_request_simulator = tempfile.mkstemp()[1]
...@@ -137,11 +137,11 @@ def VifibSlaposRestAPIV1Mixin_afterSetUp(self): ...@@ -137,11 +137,11 @@ def VifibSlaposRestAPIV1Mixin_afterSetUp(self):
'requestSoftwareInstance') 'requestSoftwareInstance')
transaction.commit() transaction.commit()
def VifibSlaposRestAPIV1Mixin_beforeTearDown(self): def SlapOSRestAPIV1Mixin_beforeTearDown(self):
if os.path.exists(self.person_request_simulator): if os.path.exists(self.person_request_simulator):
os.unlink(self.person_request_simulator) os.unlink(self.person_request_simulator)
class VifibSlaposRestAPIV1Mixin(VifibSlaposRestAPIV1MixinBase): class SlapOSRestAPIV1Mixin(SlapOSRestAPIV1MixinBase):
def createPerson(self): def createPerson(self):
customer = self.cloneByPath('person_module/template_member') customer = self.cloneByPath('person_module/template_member')
customer_reference = 'P' + self.generateNewId() customer_reference = 'P' + self.generateNewId()
...@@ -160,10 +160,10 @@ class VifibSlaposRestAPIV1Mixin(VifibSlaposRestAPIV1MixinBase): ...@@ -160,10 +160,10 @@ class VifibSlaposRestAPIV1Mixin(VifibSlaposRestAPIV1MixinBase):
return customer, customer_reference return customer, customer_reference
def afterSetUp(self): def afterSetUp(self):
VifibSlaposRestAPIV1Mixin_afterSetUp(self) SlapOSRestAPIV1Mixin_afterSetUp(self)
def beforeTearDown(self): def beforeTearDown(self):
VifibSlaposRestAPIV1Mixin_beforeTearDown(self) SlapOSRestAPIV1Mixin_beforeTearDown(self)
def assertPersonRequestSimulatorEmpty(self): def assertPersonRequestSimulatorEmpty(self):
self.assertEqual(open(self.person_request_simulator).read(), '') self.assertEqual(open(self.person_request_simulator).read(), '')
...@@ -196,7 +196,7 @@ class VifibSlaposRestAPIV1Mixin(VifibSlaposRestAPIV1MixinBase): ...@@ -196,7 +196,7 @@ class VifibSlaposRestAPIV1Mixin(VifibSlaposRestAPIV1MixinBase):
) )
@skip('Undecided.') @skip('Undecided.')
class TestInstanceRequest(VifibSlaposRestAPIV1Mixin): class TestInstanceRequest(SlapOSRestAPIV1Mixin):
def test_not_logged_in(self): def test_not_logged_in(self):
self.connection.request(method='POST', self.connection.request(method='POST',
url='/'.join([self.api_path, 'instance'])) url='/'.join([self.api_path, 'instance']))
...@@ -484,7 +484,7 @@ class TestInstanceRequest(VifibSlaposRestAPIV1Mixin): ...@@ -484,7 +484,7 @@ class TestInstanceRequest(VifibSlaposRestAPIV1Mixin):
# and with correct ones are set by default # and with correct ones are set by default
@skip('Undecided.') @skip('Undecided.')
class TestInstanceOPTIONS(VifibSlaposRestAPIV1Mixin): class TestInstanceOPTIONS(SlapOSRestAPIV1Mixin):
def test_OPTIONS_not_logged_in(self): def test_OPTIONS_not_logged_in(self):
self.connection = CustomHeaderHTTPConnection(host=self.api_netloc, self.connection = CustomHeaderHTTPConnection(host=self.api_netloc,
custom_header={ custom_header={
...@@ -498,13 +498,13 @@ class TestInstanceOPTIONS(VifibSlaposRestAPIV1Mixin): ...@@ -498,13 +498,13 @@ class TestInstanceOPTIONS(VifibSlaposRestAPIV1Mixin):
self.assertResponseNoContentType() self.assertResponseNoContentType()
self.assertPersonRequestSimulatorEmpty() self.assertPersonRequestSimulatorEmpty()
def VifibSlaposRestAPIV1InstanceMixin_afterSetUp(self): def SlapOSRestAPIV1InstanceMixin_afterSetUp(self):
VifibSlaposRestAPIV1Mixin_afterSetUp(self) SlapOSRestAPIV1Mixin_afterSetUp(self)
self.software_instance = self.createSoftwareInstance(self.customer) self.software_instance = self.createSoftwareInstance(self.customer)
class VifibSlaposRestAPIV1InstanceMixin(VifibSlaposRestAPIV1Mixin): class SlapOSRestAPIV1InstanceMixin(SlapOSRestAPIV1Mixin):
def afterSetUp(self): def afterSetUp(self):
VifibSlaposRestAPIV1InstanceMixin_afterSetUp(self) SlapOSRestAPIV1InstanceMixin_afterSetUp(self)
def assertLastModifiedHeader(self): def assertLastModifiedHeader(self):
calculated = rfc1123_date(self.software_instance.getModificationDate()) calculated = rfc1123_date(self.software_instance.getModificationDate())
...@@ -547,7 +547,7 @@ class VifibSlaposRestAPIV1InstanceMixin(VifibSlaposRestAPIV1Mixin): ...@@ -547,7 +547,7 @@ class VifibSlaposRestAPIV1InstanceMixin(VifibSlaposRestAPIV1Mixin):
transaction.commit() transaction.commit()
@skip('Undecided.') @skip('Undecided.')
class TestInstanceGET(VifibSlaposRestAPIV1InstanceMixin): class TestInstanceGET(SlapOSRestAPIV1InstanceMixin):
def test_non_existing(self): def test_non_existing(self):
non_existing = 'software_instance_module/' + self.generateNewId() non_existing = 'software_instance_module/' + self.generateNewId()
try: try:
...@@ -756,7 +756,7 @@ class TestInstanceGET(VifibSlaposRestAPIV1InstanceMixin): ...@@ -756,7 +756,7 @@ class TestInstanceGET(VifibSlaposRestAPIV1InstanceMixin):
self.assertResponseCode(404) self.assertResponseCode(404)
@skip('Undecided.') @skip('Undecided.')
class TestInstanceGETcertificate(VifibSlaposRestAPIV1InstanceMixin): class TestInstanceGETcertificate(SlapOSRestAPIV1InstanceMixin):
def test(self): def test(self):
self.connection.request(method='GET', self.connection.request(method='GET',
url='/'.join([self.api_path, 'instance', url='/'.join([self.api_path, 'instance',
...@@ -826,7 +826,7 @@ class TestInstanceGETcertificate(VifibSlaposRestAPIV1InstanceMixin): ...@@ -826,7 +826,7 @@ class TestInstanceGETcertificate(VifibSlaposRestAPIV1InstanceMixin):
self.assertBasicResponse() self.assertBasicResponse()
self.assertResponseCode(404) self.assertResponseCode(404)
class TestInstanceAllocableGET(VifibSlaposRestAPIV1InstanceMixin): class TestInstanceAllocableGET(SlapOSRestAPIV1InstanceMixin):
def test_not_logged_in(self): def test_not_logged_in(self):
self.connection.request(method='GET', self.connection.request(method='GET',
url='/'.join([self.api_path, 'instance', 'request'])) url='/'.join([self.api_path, 'instance', 'request']))
...@@ -998,24 +998,24 @@ class TestInstanceAllocableGET(VifibSlaposRestAPIV1InstanceMixin): ...@@ -998,24 +998,24 @@ class TestInstanceAllocableGET(VifibSlaposRestAPIV1InstanceMixin):
# self.json_response) # self.json_response)
# # and with correct ones are set by default # # and with correct ones are set by default
def VifibSlaposRestAPIV1BangMixin_afterSetUp(self): def SlapOSRestAPIV1BangMixin_afterSetUp(self):
VifibSlaposRestAPIV1BangMixin_afterSetUp(self) SlapOSRestAPIV1BangMixin_afterSetUp(self)
self.instance_bang_simulator = tempfile.mkstemp()[1] self.instance_bang_simulator = tempfile.mkstemp()[1]
self.software_instance.bang = Simulator( self.software_instance.bang = Simulator(
self.instance_bang_simulator, 'bang') self.instance_bang_simulator, 'bang')
transaction.commit() transaction.commit()
def VifibSlaposRestAPIV1BangMixin_beforeTearDown(self): def SlapOSRestAPIV1BangMixin_beforeTearDown(self):
VifibSlaposRestAPIV1BangMixin_beforeTearDown() SlapOSRestAPIV1BangMixin_beforeTearDown()
if os.path.exists(self.instance_bang_simulator): if os.path.exists(self.instance_bang_simulator):
os.unlink(self.instance_bang_simulator) os.unlink(self.instance_bang_simulator)
class VifibSlaposRestAPIV1BangMixin(VifibSlaposRestAPIV1InstanceMixin): class SlapOSRestAPIV1BangMixin(SlapOSRestAPIV1InstanceMixin):
def afterSetUp(self): def afterSetUp(self):
VifibSlaposRestAPIV1BangMixin_afterSetUp(self) SlapOSRestAPIV1BangMixin_afterSetUp(self)
def beforeTearDown(self): def beforeTearDown(self):
VifibSlaposRestAPIV1BangMixin_beforeTearDown(self) SlapOSRestAPIV1BangMixin_beforeTearDown(self)
def assertInstanceBangSimulatorEmpty(self): def assertInstanceBangSimulatorEmpty(self):
self.assertEqual(open(self.instance_bang_simulator).read(), '') self.assertEqual(open(self.instance_bang_simulator).read(), '')
...@@ -1029,7 +1029,7 @@ class VifibSlaposRestAPIV1BangMixin(VifibSlaposRestAPIV1InstanceMixin): ...@@ -1029,7 +1029,7 @@ class VifibSlaposRestAPIV1BangMixin(VifibSlaposRestAPIV1InstanceMixin):
'recmethod': 'bang'}]) 'recmethod': 'bang'}])
@skip('Undecided.') @skip('Undecided.')
class TestInstancePOSTbang(VifibSlaposRestAPIV1BangMixin): class TestInstancePOSTbang(SlapOSRestAPIV1BangMixin):
def test(self): def test(self):
kwargs = {'log': 'This is cool log!', 'bang_tree': True} kwargs = {'log': 'This is cool log!', 'bang_tree': True}
self.connection.request(method='POST', self.connection.request(method='POST',
...@@ -1188,7 +1188,7 @@ class TestInstancePOSTbang(VifibSlaposRestAPIV1BangMixin): ...@@ -1188,7 +1188,7 @@ class TestInstancePOSTbang(VifibSlaposRestAPIV1BangMixin):
self.assertInstanceBangSimulatorEmpty() self.assertInstanceBangSimulatorEmpty()
@skip('Undecided.') @skip('Undecided.')
class TestInstancePUT(VifibSlaposRestAPIV1InstanceMixin): class TestInstancePUT(SlapOSRestAPIV1InstanceMixin):
def afterSetUp(self): def afterSetUp(self):
super(TestInstancePUT, self).afterSetUp() super(TestInstancePUT, self).afterSetUp()
self.instance_put_simulator = tempfile.mkstemp()[1] self.instance_put_simulator = tempfile.mkstemp()[1]
...@@ -1356,7 +1356,7 @@ class TestInstancePUT(VifibSlaposRestAPIV1InstanceMixin): ...@@ -1356,7 +1356,7 @@ class TestInstancePUT(VifibSlaposRestAPIV1InstanceMixin):
self.assertInstancePUTSimulatorEmpty() self.assertInstancePUTSimulatorEmpty()
@skip('Undecided.') @skip('Undecided.')
class TestInstanceGETlist(VifibSlaposRestAPIV1InstanceMixin): class TestInstanceGETlist(SlapOSRestAPIV1InstanceMixin):
def assertLastModifiedHeader(self): def assertLastModifiedHeader(self):
calculated = rfc1123_date(self.portal.software_instance_module\ calculated = rfc1123_date(self.portal.software_instance_module\
.bobobase_modification_time()) .bobobase_modification_time())
...@@ -1500,7 +1500,7 @@ class TestInstanceGETlist(VifibSlaposRestAPIV1InstanceMixin): ...@@ -1500,7 +1500,7 @@ class TestInstanceGETlist(VifibSlaposRestAPIV1InstanceMixin):
self.assertPersonRequestSimulatorEmpty() self.assertPersonRequestSimulatorEmpty()
@skip('Undecided.') @skip('Undecided.')
class TestComputerPUT(VifibSlaposRestAPIV1MixinBase): class TestComputerPUT(SlapOSRestAPIV1MixinBase):
def createComputer(self): def createComputer(self):
computer = self.cloneByPath( computer = self.cloneByPath(
'computer_module/template_computer') 'computer_module/template_computer')
...@@ -1799,9 +1799,9 @@ class TestComputerPUT(VifibSlaposRestAPIV1MixinBase): ...@@ -1799,9 +1799,9 @@ class TestComputerPUT(VifibSlaposRestAPIV1MixinBase):
self.json_response) self.json_response)
self.assertComputerPUTSimulatorEmpty() self.assertComputerPUTSimulatorEmpty()
class TestStatusGET(VifibSlaposRestAPIV1InstanceMixin): class TestStatusGET(SlapOSRestAPIV1InstanceMixin):
def afterSetUp(self): def afterSetUp(self):
VifibSlaposRestAPIV1Mixin_afterSetUp(self) SlapOSRestAPIV1Mixin_afterSetUp(self)
def createComputer(self): def createComputer(self):
computer = self.cloneByPath( computer = self.cloneByPath(
......
2012 Nexedi S.A.
\ No newline at end of file
slapos_rest_api
\ No newline at end of file
28
\ No newline at end of file
SlapOSRestAPIV1
\ No newline at end of file
testSlapOSRestAPIV1
\ No newline at end of file
slapos_rest_api_v1
\ No newline at end of file
...@@ -22,7 +22,7 @@ vifib_payzen ...@@ -22,7 +22,7 @@ vifib_payzen
vifib_slap vifib_slap
vifib_slapos_accounting vifib_slapos_accounting
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api_v1 slapos_rest_api_v1
vifib_software_pdm vifib_software_pdm
vifib_upgrader vifib_upgrader
vifib_web vifib_web
......
532 533
\ No newline at end of file \ No newline at end of file
slapos_cloud
vifib_slapos_rest_api_tool_portal_type
System Preference | vifib_rest_api_preference
\ No newline at end of file
VifibRestAPISystemPreference
\ No newline at end of file
vifib_slapos_rest_api
\ No newline at end of file
portal_vifib_rest_api
\ No newline at end of file
vifib_slapos_rest_api
\ No newline at end of file
vifib_slapos_rest_api_tool_portal_type
\ No newline at end of file
vifib_slapos_rest_api
\ No newline at end of file
vifib_slapos_rest_api_v1
\ No newline at end of file
vifib_slapos_rest_api_v1
vifib_erp5
\ No newline at end of file
Restful API V1 for Vifib
\ No newline at end of file
testVifibSlaposRestAPIV1
\ No newline at end of file
vifib_slapos_rest_api_v1_test
\ No newline at end of file
...@@ -100,6 +100,7 @@ REQUIRED_BT5_ID_LIST = (\n ...@@ -100,6 +100,7 @@ REQUIRED_BT5_ID_LIST = (\n
\'erp5_project\',\n \'erp5_project\',\n
\'erp5_credential_oauth2\',\n \'erp5_credential_oauth2\',\n
# vifib\n # vifib\n
\'vifib_mysql_innodb_catalog\',\n
\'vifib_base\',\n \'vifib_base\',\n
\'vifib_core\',\n \'vifib_core\',\n
\'vifib_data_category\',\n \'vifib_data_category\',\n
...@@ -114,9 +115,9 @@ REQUIRED_BT5_ID_LIST = (\n ...@@ -114,9 +115,9 @@ REQUIRED_BT5_ID_LIST = (\n
\'slapos_cloud\',\n \'slapos_cloud\',\n
\'vifib_slapos_accounting\',\n \'vifib_slapos_accounting\',\n
\'vifib_slapos_capacity\',\n \'vifib_slapos_capacity\',\n
\'vifib_slapos_rest_api_tool_portal_type\',\n \'slapos_rest_api_tool_portal_type\',\n
\'vifib_slapos_rest_api\',\n \'slapos_rest_api\',\n
\'vifib_slapos_rest_api_v1\',\n \'slapos_rest_api_v1\',\n
\'vifib_erp5\',\n \'vifib_erp5\',\n
\'vifib_data\',\n \'vifib_data\',\n
\'vifib_data_web\',\n \'vifib_data_web\',\n
......
157 158
\ No newline at end of file \ No newline at end of file
...@@ -34,15 +34,15 @@ from Products.ERP5Type.Globals import InitializeClass ...@@ -34,15 +34,15 @@ from Products.ERP5Type.Globals import InitializeClass
from Products.ERP5Type import Permissions from Products.ERP5Type import Permissions
from ComputedAttribute import ComputedAttribute from ComputedAttribute import ComputedAttribute
class VifibRestApiTool(BaseTool): class SlapOSRestAPITool(BaseTool):
"""SlapOS REST API Tool """SlapOS REST API Tool
This is container for multiple versions of API. This is container for multiple versions of API.
""" """
id = 'portal_vifib_rest_api' id = 'portal_slapos_rest_api'
meta_type = 'ERP5 Vifib Rest API Tool' meta_type = 'ERP5 SlapOS Rest API Tool'
portal_type = 'Vifib Rest API Tool' portal_type = 'SlapOS Rest API Tool'
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
allowed_types = () allowed_types = ()
...@@ -52,8 +52,8 @@ class VifibRestApiTool(BaseTool): ...@@ -52,8 +52,8 @@ class VifibRestApiTool(BaseTool):
def v1(self): def v1(self):
"""API hooked""" """API hooked"""
# XXX: It could be done better (more dynamic, configurable from UI) # XXX: It could be done better (more dynamic, configurable from UI)
from erp5.component.document.VifibRestAPIV1 import VifibRestAPIV1 from erp5.component.document.SlapOSRestAPIV1 import SlapOSRestAPIV1
return VifibRestAPIV1().__of__(self) return SlapOSRestAPIV1().__of__(self)
security.declarePrivate('manage_afterAdd') security.declarePrivate('manage_afterAdd')
def manage_afterAdd(self, item, container) : def manage_afterAdd(self, item, container) :
...@@ -72,4 +72,4 @@ class VifibRestApiTool(BaseTool): ...@@ -72,4 +72,4 @@ class VifibRestApiTool(BaseTool):
['Manager',]) ['Manager',])
BaseTool.inheritedAttribute('manage_afterAdd')(self, item, container) BaseTool.inheritedAttribute('manage_afterAdd')(self, item, container)
InitializeClass(VifibRestApiTool) InitializeClass(SlapOSRestAPITool)
...@@ -35,7 +35,8 @@ document_classes = updateGlobals(this_module, globals(), ...@@ -35,7 +35,8 @@ document_classes = updateGlobals(this_module, globals(),
object_classes = () object_classes = ()
content_classes = () content_classes = ()
content_constructors = () content_constructors = ()
portal_tools = () from Tool import SlapOSRestAPITool
portal_tools = (SlapOSRestAPITool.SlapOSRestAPITool, )
from Products.PluggableAuthService.PluggableAuthService import registerMultiPlugin from Products.PluggableAuthService.PluggableAuthService import registerMultiPlugin
import SlapOSMachineAuthenticationPlugin import SlapOSMachineAuthenticationPlugin
......
...@@ -134,6 +134,9 @@ class testSlapOSMixin(Products.Vifib.tests.VifibMixin.testVifibMixin): ...@@ -134,6 +134,9 @@ class testSlapOSMixin(Products.Vifib.tests.VifibMixin.testVifibMixin):
'slapos_cloud', 'slapos_cloud',
'slapos_slap_tool', 'slapos_slap_tool',
'slapos_category', 'slapos_category',
'slapos_rest_api_tool_portal_type',
'slapos_rest_api',
'slapos_rest_api_v1',
'slapos_erp5', 'slapos_erp5',
] ]
return result return result
......
...@@ -37,8 +37,8 @@ document_classes = updateGlobals(this_module, globals(), ...@@ -37,8 +37,8 @@ document_classes = updateGlobals(this_module, globals(),
object_classes = () object_classes = ()
content_classes = () content_classes = ()
content_constructors = () content_constructors = ()
from Tool import SlapTool, VifibRestApiTool from Tool import SlapTool
portal_tools = ( SlapTool.SlapTool, VifibRestApiTool.VifibRestApiTool) portal_tools = ( SlapTool.SlapTool, )
from Products.PluggableAuthService.PluggableAuthService import registerMultiPlugin from Products.PluggableAuthService.PluggableAuthService import registerMultiPlugin
import VifibCookieHashExtractionPlugin import VifibCookieHashExtractionPlugin
......
...@@ -98,7 +98,7 @@ class testVifibMixin(ERP5TypeTestCase): ...@@ -98,7 +98,7 @@ class testVifibMixin(ERP5TypeTestCase):
'erp5_workflow', 'erp5_workflow',
'erp5_web_shadir', 'erp5_web_shadir',
'vifib_slap', 'vifib_slap',
'vifib_slapos_rest_api_tool_portal_type', 'slapos_rest_api_tool_portal_type',
'erp5_configurator', 'erp5_configurator',
'slapos_cache', 'slapos_cache',
'slapos_slap_tool', 'slapos_slap_tool',
...@@ -106,14 +106,14 @@ class testVifibMixin(ERP5TypeTestCase): ...@@ -106,14 +106,14 @@ class testVifibMixin(ERP5TypeTestCase):
'vifib_payzen', 'vifib_payzen',
'vifib_software_pdm', 'vifib_software_pdm',
'erp5_upgrader', 'erp5_upgrader',
'vifib_slapos_rest_api', 'slapos_rest_api',
'vifib_data', 'vifib_data',
'slapos_configurator', 'slapos_configurator',
'erp5_ui_test_core', 'erp5_ui_test_core',
'slapos_rest_api_v1',
'slapos_erp5', 'slapos_erp5',
'vifib_web', 'vifib_web',
'vifib_upgrader', 'vifib_upgrader',
'vifib_slapos_rest_api_v1',
'vifib_slapos_capacity', 'vifib_slapos_capacity',
'vifib_slapos_accounting', 'vifib_slapos_accounting',
'vifib_data_web', 'vifib_data_web',
...@@ -129,7 +129,6 @@ class testVifibMixin(ERP5TypeTestCase): ...@@ -129,7 +129,6 @@ class testVifibMixin(ERP5TypeTestCase):
# in order to check this list. # in order to check this list.
'vifib_erp5', 'vifib_erp5',
'vifib_test', 'vifib_test',
'vifib_slapos_rest_api_v1_test',
'vifib_web_ui_test', 'vifib_web_ui_test',
] ]
return result return result
......
...@@ -114,6 +114,7 @@ custom ...@@ -114,6 +114,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_cash vifib_cash
...@@ -126,7 +127,6 @@ vifib_promise ...@@ -126,7 +127,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web vifib_web
...@@ -222,6 +222,7 @@ vifib_upgrader ...@@ -222,6 +222,7 @@ vifib_upgrader
vifib_hosting vifib_hosting
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -234,7 +235,6 @@ vifib_promise ...@@ -234,7 +235,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web vifib_web
...@@ -329,6 +329,7 @@ custom ...@@ -329,6 +329,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -338,7 +339,6 @@ vifib_promise ...@@ -338,7 +339,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -430,6 +430,7 @@ custom ...@@ -430,6 +430,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -439,7 +440,6 @@ vifib_promise ...@@ -439,7 +440,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -531,6 +531,7 @@ custom ...@@ -531,6 +531,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -540,7 +541,6 @@ vifib_promise ...@@ -540,7 +541,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web vifib_web
...@@ -635,6 +635,7 @@ custom ...@@ -635,6 +635,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -644,7 +645,6 @@ vifib_promise ...@@ -644,7 +645,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -739,6 +739,7 @@ custom ...@@ -739,6 +739,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -748,7 +749,6 @@ vifib_promise ...@@ -748,7 +749,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -840,6 +840,7 @@ custom ...@@ -840,6 +840,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -849,7 +850,6 @@ vifib_promise ...@@ -849,7 +850,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -940,6 +940,7 @@ custom ...@@ -940,6 +940,7 @@ custom
vifib_upgrader vifib_upgrader
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -949,7 +950,6 @@ vifib_promise ...@@ -949,7 +950,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
...@@ -1043,6 +1043,7 @@ vifib_upgrader_before_201208 ...@@ -1043,6 +1043,7 @@ vifib_upgrader_before_201208
vifib_upgrader_before_201209 vifib_upgrader_before_201209
slapos_cloud slapos_cloud
slapos_core slapos_core
slapos_rest_api
vifib_agent vifib_agent
vifib_base vifib_base
vifib_core vifib_core
...@@ -1052,7 +1053,6 @@ vifib_promise ...@@ -1052,7 +1053,6 @@ vifib_promise
vifib_simulation vifib_simulation
vifib_slap vifib_slap
vifib_slapos_capacity vifib_slapos_capacity
vifib_slapos_rest_api
vifib_software_pdm vifib_software_pdm
vifib_test vifib_test
vifib_web_ui_test vifib_web_ui_test
......
...@@ -5,10 +5,9 @@ class VIFIB(SavedTestSuite, ProjectTestSuite): ...@@ -5,10 +5,9 @@ class VIFIB(SavedTestSuite, ProjectTestSuite):
_saved_test_id = 'Products.Vifib.tests.VifibMixin.testVifibMixin' _saved_test_id = 'Products.Vifib.tests.VifibMixin.testVifibMixin'
_bt_list = [ _bt_list = [
'slapos_cloud', 'slapos_cloud',
'vifib_slapos_rest_api', 'slapos_rest_api',
'vifib_slapos_rest_api_v1', 'slapos_rest_api_v1',
'vifib_slapos_rest_api_tool_portal_type', 'slapos_rest_api_tool_portal_type',
'vifib_slapos_rest_api_v1_test',
'vifib_base', 'vifib_base',
'vifib_data', 'vifib_data',
'slapos_category', 'slapos_category',
...@@ -25,4 +24,7 @@ class VIFIB(SavedTestSuite, ProjectTestSuite): ...@@ -25,4 +24,7 @@ class VIFIB(SavedTestSuite, ProjectTestSuite):
class SlapOSCloud(SavedTestSuite, ProjectTestSuite): class SlapOSCloud(SavedTestSuite, ProjectTestSuite):
_product_list = ['SlapOS'] _product_list = ['SlapOS']
_saved_test_id = 'Products.SlapOS.tests.testSlapOSMixin.testSlapOSMixin' _saved_test_id = 'Products.SlapOS.tests.testSlapOSMixin.testSlapOSMixin'
_bt_list = ['slapos_cloud'] _bt_list = [
'slapos_cloud',
'slapos_rest_api_v1',
]
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment