Commit 25f65d09 authored by Gabriel Monnerat's avatar Gabriel Monnerat

Merge branch 'master', remote branch 'origin' into slave_instance

parents 0c1aafc0 b03de839
0.9 (not yet released)
0.10 (unreleased)
=================
* No changes yet.
0.9 (2011-07-11)
================
* slapformat: Fix issue of bridge not connected with real interface on
Linux >= 2.6.39 [Arnaud Fontaine]
* slapconsole: Simplify usage and use configuration file. You can now
* slapconsole: Simplify usage and use configuration file. You can now
just run slapconsole and type things like "request(kvm, 'mykvm')".
[Cedric de Saint Martin]
* slapformat: Fix issue of bridge not connected with real interface on
Linux >= 2.6.39 [Arnaud Fontaine]
* slapformat: Allow to have IPv6 only interface, with bridge still supporting
local IPv4 stack. [Łukasz Nowak]
0.8 (2011-06-27)
================
......
......@@ -82,7 +82,9 @@ class TestVifibConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
'vifib_web',
'vifib_open_trade',
'vifib_l10n_fr',
'vifib_datas',
'vifib_data',
'vifib_data_category',
'vifib_data_web',
'vifib_erp5')
def getBusinessTemplateList(self):
......@@ -119,10 +121,16 @@ class TestVifibConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
self.setBusinessConfigurationWorkflow(business_configuration,
"workflow_module/vifib_configuration_workflow")
def stepCheckVifibObjectList(self, sequence=None, sequence_list=None, **kw):
""" Check if objects are placed into the appropriate state """
self.assertNotEquals(None, getattr(self.portal,
"portal_certificate_authority", None))
def stepCheckMaxmaDemoSampleObjectList(self, sequence=None, sequence_list=None, **kw):
""" Check if objects are placed into the appropriate state """
self.assertNotEquals(None, getattr(self.portal, "portal_slap", None))
# Verify if acl_user is appropriatted configured.
# XXX Not implemented yet
# Check Gadgets
for gadget in self.portal.portal_gadgets.searchFolder():
......@@ -148,6 +156,7 @@ class TestVifibConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
stepStartConfigurationInstallation
stepTic
stepCheckInstanceIsConfigured%(country)s
stepCheckVifibObjectList
"""
def test_vifib_workflow(self):
......
......@@ -635,7 +635,7 @@ Vifib Cloud is a distributed cloud around the world.<br />Just fill the email fi
</item>
<item>
<key> <string>last_id</string> </key>
<value> <string>4</string> </value>
<value> <string>5</string> </value>
</item>
<item>
<key> <string>layout_additional_css</string> </key>
......
......@@ -60,20 +60,38 @@
</value>
</item>
<item>
<key> <string>_identity_criterion</string> </key>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<key> <string>_identity_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
<item>
<key> <string>custom_render_method_id</string> </key>
<value> <string>ERP5Site_viewNewPersonCredentialUpdateDialog</string> </value>
<value> <string>WebSection_viewMyAccountRender</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -89,6 +107,10 @@
<none/>
</value>
</item>
<item>
<key> <string>last_id</string> </key>
<value> <string>2</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Section</string> </value>
......@@ -111,6 +133,12 @@
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -125,7 +153,15 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -140,4 +176,12 @@
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Section" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_identity_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>container_layout</string> </key>
<value> <string>vifib_hosting_order_layout</string> </value>
</item>
<item>
<key> <string>custom_render_method_id</string> </key>
<value> <string>WebSection_viewCertificateRequestDialog</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>request-a-certificate</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Section</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Request a certificate</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Section" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>__translation_dict</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>_identity_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>container_layout</string> </key>
<value> <string>vifib_hosting_order_layout</string> </value>
</item>
<item>
<key> <string>custom_render_method_id</string> </key>
<value> <string>WebSection_revokeCertificate</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>revoke-a-certificate</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Section</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Revoke SSL Certificate</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
78
\ No newline at end of file
79
\ No newline at end of file
......@@ -98,6 +98,7 @@
<value>
<list>
<string>my_title</string>
<string>my_reference</string>
<string>listbox</string>
</list>
</value>
......
......@@ -10,14 +10,14 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>enabled</string>
<string>editable</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>listbox</string> </value>
<value> <string>my_reference</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -73,12 +73,12 @@
<value>
<dictionary>
<item>
<key> <string>enabled</string> </key>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_list_mode_listbox</string> </value>
<value> <string>my_title</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
......@@ -90,7 +90,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Bills</string> </value>
<value> <string>Reference</string> </value>
</item>
</dictionary>
</value>
......
......@@ -94,6 +94,7 @@
<value>
<list>
<string>my_title</string>
<string>my_reference</string>
<string>your_computer_url</string>
<string>your_certificate</string>
<string>your_key</string>
......
......@@ -10,14 +10,14 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>enabled</string>
<string>editable</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>message_listbox</string> </value>
<value> <string>my_reference</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -73,12 +73,12 @@
<value>
<dictionary>
<item>
<key> <string>enabled</string> </key>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_rss_mode_listbox</string> </value>
<value> <string>my_title</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
......@@ -90,7 +90,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Last Messages</string> </value>
<value> <string>Reference</string> </value>
</item>
</dictionary>
</value>
......
......@@ -79,6 +79,7 @@ params = portal.portal_selections.getSelectionParamsFor(\'vifib_session_id\')\n
params["instance_software_product_uid"] = uids[0]\n
params["service_title"] = service_title\n
params["instance_xml"] = instance_xml\n
params["computer"] = computer\n
portal.portal_selections.setSelectionParamsFor(\'vifib_session_id\', params)\n
\n
if kw.has_key(\'came_from\'):\n
......@@ -92,7 +93,7 @@ context.WebSection_viewNextStep()\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>dialog_id, service_title, instance_xml, uids=[], quantity = 1, reset_shopping_cart=True, **kw</string> </value>
<value> <string>dialog_id, service_title, instance_xml, computer=\'\', uids=[], quantity = 1, reset_shopping_cart=True, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>person = context.ERP5Site_getAuthenticatedMemberPersonValue()\n
request = context.REQUEST\n
#try:\n
# certificate = person.getCertificate()\n
# request.set(\'portal_status_message\', context.Base_translateString(\'Certificate created.\'))\n
#except ValueError:\n
# certificate = {\'certificate\': \'\', \'key\': \'\'}\n
# request.set(\'portal_status_message\', context.Base_translateString(\'Certificate was already requested, please revoke existing one.\'))\n
certificate = {}\n
certificate[\'key\'] = """-----BEGIN PRIVATE KEY-----\n
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn5ArY6o1jSkTD\n
y/De6SW5oD6BzOVJgmZBa5Xjf3rwFVcvD2MeXyv34eh5Btsiu1dkVHk6G7vfPnxL\n
zjeCnRHemjQEfP1cEdLmTZiaAqoYlNq/rOLHMdX71DC8BENTNiP2mmgbUa6EXWML\n
pGSUmXZwPNZt7PsgtfANdiWQqMzMq0NXUbNfZ5eku6bMWWxljgBmnaD5CXA5AuXd\n
tUeJ39WCgfp86pXVIEZtL0e2Hw+TOTA79QM3q29tYF3+ZR/Gi2koiu4PsdgOHhhI\n
C/hrx3mk99tOBSika7654sNjMDDTib2FjDN7ofXuHB6uNXf2sZuaRHaQrDN04rLa\n
xW4yTjkjAgMBAAECggEAPYtCzrFskvEus/eWnKAqzBkJ0NsjUgcTJPgjQfoBPvET\n
vJSPaRrKK1wMtBDnU5wJNSYiKkLwY62sMr2ta5vYaRlt6BdJaO6/uNzJC+veHpSy\n
e4EMwKhsIJxwIPwPEfnOxR9k+l6+8papMCNbG34GBK7IjBNLG3qWPNkKfDTknkGx\n
d4ibnNEBQ/yyr1gGkb7NNBwIZz6egmkmnH1sglfrGyc1wMRfQszDkR9xKCDoPZqp\n
8kQkY9mL5y+UZjENZkonQVpnjGsCoUBgFI3BRz9nJaaQFiyCGL8I301Brc2ygZos\n
dFC0USX8svzIolYjDV67Xi3VNQDiB4iv8szhXCONgQKBgQDbhGPCWro25aWcOSps\n
BvKBQrr+L0lSlrAmmVYrFVK0OUn7oPCNo1WQ60wpy/6Euo3mJFNpYgUndY2Bq+zH\n
7mwt+HDYyGhwsTj/exHSIMu53jCbM+/3echlyYLfQzqUIWMvIk/wNGx/EUP/MnJI\n
aPEi1JeoBJC3UdQL7aQWK/tQKwKBgQDDyyZXmWLOaFNDekMkaR713BfeK8vRlPFi\n
B+M8K4ggqBM+dGCrn7gOnThBYeDxgDxi7qW1B18EMCKzK8tr+EPp/o4YnZ2jln2X\n
bURA1kWBfdSSvfdEYGrlXDu8SAhdBeZMw0FJI/oRv4DKVHnmdW/nitdPPd62nNkJ\n
WcUldjPG6QKBgQCnFlJIsX5kItC35NthdrhHo19p8txAvOo/tx9bk9Nr0t95ZLs1\n
VEnhEPjcJ6YHqWgw8R18bVu2+UdImHCWjehR5XUfzQuSG5NjA25BHy1ywKkGubXC\n
DTR4JbYz8pw3/GHekqN+Fqku3xl+ugs7CoXhGSiGf1MX9nUMz0nChp+4GQKBgHqZ\n
YXfmvvz6THDrRNGu1UkkOPnQOL8SYZd90uchZwrz06D+5G1zBKB6B/jA3ka6gpV8\n
U9yoMfIAZioFGUqRWY1S7Q0y3LvLhvbj36ItybYM4afFNejl6umVuH3sKPh+sjeM\n
5/txgKvOW0nWXcJV9O1qfenLlwKH8kstoAoWGtPJAoGAJJvG554vX5QczlVT1ppo\n
s05D3ZqVuaqnV7lC5jpN4ajI3bBzL1jIzpLo2DvwE2oBaiU0NObLKQIufq+M45TQ\n
odunD1bfVZgrjBwmpGQs2O1TNAf1b4lD3RKOxwcAn4rE2U6ruJ0Yu/ASkrqnZaxl\n
6GCTkojhLUOrEpkVEN6k310=\n
-----END PRIVATE KEY-----"""\n
certificate[\'certificate\'] = """Certificate:\n
Data:\n
Version: 3 (0x2)\n
Serial Number: 12 (0xc)\n
Signature Algorithm: sha1WithRSAEncryption\n
Issuer: C=XX, ST=State, L=City, O=Company, CN=Automatic Certificate Authority/emailAddress=xx@example.com\n
Validity\n
Not Before: Jul 12 12:07:50 2011 GMT\n
Not After : Jul 9 12:07:50 2021 GMT\n
Subject: C=XX, ST=State, O=Company, CN=test_vifib_customer/emailAddress=xx@example.com\n
Subject Public Key Info:\n
Public Key Algorithm: rsaEncryption\n
Public-Key: (2048 bit)\n
Modulus:\n
00:a7:e4:0a:d8:ea:8d:63:4a:44:c3:cb:f0:de:e9:\n
25:b9:a0:3e:81:cc:e5:49:82:66:41:6b:95:e3:7f:\n
7a:f0:15:57:2f:0f:63:1e:5f:2b:f7:e1:e8:79:06:\n
db:22:bb:57:64:54:79:3a:1b:bb:df:3e:7c:4b:ce:\n
37:82:9d:11:de:9a:34:04:7c:fd:5c:11:d2:e6:4d:\n
98:9a:02:aa:18:94:da:bf:ac:e2:c7:31:d5:fb:d4:\n
30:bc:04:43:53:36:23:f6:9a:68:1b:51:ae:84:5d:\n
63:0b:a4:64:94:99:76:70:3c:d6:6d:ec:fb:20:b5:\n
f0:0d:76:25:90:a8:cc:cc:ab:43:57:51:b3:5f:67:\n
97:a4:bb:a6:cc:59:6c:65:8e:00:66:9d:a0:f9:09:\n
70:39:02:e5:dd:b5:47:89:df:d5:82:81:fa:7c:ea:\n
95:d5:20:46:6d:2f:47:b6:1f:0f:93:39:30:3b:f5:\n
03:37:ab:6f:6d:60:5d:fe:65:1f:c6:8b:69:28:8a:\n
ee:0f:b1:d8:0e:1e:18:48:0b:f8:6b:c7:79:a4:f7:\n
db:4e:05:28:a4:6b:be:b9:e2:c3:63:30:30:d3:89:\n
bd:85:8c:33:7b:a1:f5:ee:1c:1e:ae:35:77:f6:b1:\n
9b:9a:44:76:90:ac:33:74:e2:b2:da:c5:6e:32:4e:\n
39:23\n
Exponent: 65537 (0x10001)\n
X509v3 extensions:\n
X509v3 Basic Constraints:\n
CA:FALSE\n
Netscape Comment:\n
OpenSSL Generated Certificate\n
X509v3 Subject Key Identifier:\n
2F:12:E1:CF:0C:6D:E5:93:92:EC:10:DD:33:3A:03:0D:5A:4A:65:04\n
X509v3 Authority Key Identifier:\n
keyid:93:30:A5:99:77:10:DF:05:13:21:3E:8D:40:D1:6B:FD:61:80:51:50\n
\n
Signature Algorithm: sha1WithRSAEncryption\n
34:d3:e0:7f:87:87:2a:17:b6:5f:c4:72:cf:b9:8a:fd:d5:3c:\n
ba:a1:2d:6d:95:11:b6:18:cc:67:c3:80:f5:d2:ae:ed:a2:6b:\n
7b:d9:51:43:56:84:17:80:f3:ec:c3:c9:e0:88:63:26:56:02:\n
82:8d:4a:04:c3:a3:7c:99:bb:4c:fa:b7:eb:10:8d:e2:86:31:\n
42:dc:f8:3d:b1:e9:91:8c:87:88:fe:ba:40:6a:64:45:16:0f:\n
0a:4e:72:ea:91:37:62:93:1a:f7:77:29:90:0c:60:0f:be:50:\n
c3:c9:e9:40:bd:bb:8c:22:0c:54:d8:fb:f7:62:df:83:0f:01:\n
54:f0:c0:03:59:5b:56:c7:09:8d:f5:64:12:53:e1:2e:31:f6:\n
36:25:6f:8d:87:5c:ab:b0:f3:f5:41:d3:17:38:88:f2:7d:15:\n
90:cd:7f:92:89:24:05:cf:32:85:c1:8f:f8:aa:6a:b5:2e:48:\n
65:29:35:05:eb:ed:7e:32:35:88:d7:0d:39:4a:28:8e:d1:16:\n
99:f9:0e:2a:7a:1f:6f:c0:3d:79:26:9a:57:05:90:1c:01:31:\n
df:b2:e1:b7:ba:f8:81:d2:9f:e4:42:34:50:6b:b4:c2:5b:fb:\n
92:12:5c:f6:5d:89:ab:36:e5:dc:d0:c3:8b:42:87:f9:ae:cf:\n
95:65:8d:52\n
-----BEGIN CERTIFICATE-----\n
MIID6jCCAtKgAwIBAgIBDDANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMCWFgx\n
DjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRAwDgYDVQQKDAdDb21wYW55\n
MSgwJgYDVQQDDB9BdXRvbWF0aWMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR0wGwYJ\n
KoZIhvcNAQkBFg54eEBleGFtcGxlLmNvbTAeFw0xMTA3MTIxMjA3NTBaFw0yMTA3\n
MDkxMjA3NTBaMGwxCzAJBgNVBAYTAlhYMQ4wDAYDVQQIDAVTdGF0ZTEQMA4GA1UE\n
CgwHQ29tcGFueTEcMBoGA1UEAwwTdGVzdF92aWZpYl9jdXN0b21lcjEdMBsGCSqG\n
SIb3DQEJARYOeHhAZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n
ggEKAoIBAQCn5ArY6o1jSkTDy/De6SW5oD6BzOVJgmZBa5Xjf3rwFVcvD2MeXyv3\n
4eh5Btsiu1dkVHk6G7vfPnxLzjeCnRHemjQEfP1cEdLmTZiaAqoYlNq/rOLHMdX7\n
1DC8BENTNiP2mmgbUa6EXWMLpGSUmXZwPNZt7PsgtfANdiWQqMzMq0NXUbNfZ5ek\n
u6bMWWxljgBmnaD5CXA5AuXdtUeJ39WCgfp86pXVIEZtL0e2Hw+TOTA79QM3q29t\n
YF3+ZR/Gi2koiu4PsdgOHhhIC/hrx3mk99tOBSika7654sNjMDDTib2FjDN7ofXu\n
HB6uNXf2sZuaRHaQrDN04rLaxW4yTjkjAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ\n
YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud\n
DgQWBBQvEuHPDG3lk5LsEN0zOgMNWkplBDAfBgNVHSMEGDAWgBSTMKWZdxDfBRMh\n
Po1A0Wv9YYBRUDANBgkqhkiG9w0BAQUFAAOCAQEANNPgf4eHKhe2X8Ryz7mK/dU8\n
uqEtbZURthjMZ8OA9dKu7aJre9lRQ1aEF4Dz7MPJ4IhjJlYCgo1KBMOjfJm7TPq3\n
6xCN4oYxQtz4PbHpkYyHiP66QGpkRRYPCk5y6pE3YpMa93cpkAxgD75Qw8npQL27\n
jCIMVNj792Lfgw8BVPDAA1lbVscJjfVkElPhLjH2NiVvjYdcq7Dz9UHTFziI8n0V\n
kM1/kokkBc8yhcGP+KpqtS5IZSk1BevtfjI1iNcNOUoojtEWmfkOKnofb8A9eSaa\n
VwWQHAEx37Lht7r4gdKf5EI0UGu0wlv7khJc9l2Jqzbl3NDDi0KH+a7PlWWNUg==\n
-----END CERTIFICATE-----"""\n
request.set(\'your_certificate\', certificate[\'certificate\'])\n
request.set(\'your_key\', certificate[\'key\'])\n
\n
return context.WebSection_viewCertificateAsWeb()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>form_id, *args, **kwargs</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSection_requestNewCertificate</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>person = context.ERP5Site_getAuthenticatedMemberPersonValue()\n
try:\n
person.revokeCertificate()\n
message = context.Base_translateString(\'Certificate revoked.\')\n
except ValueError:\n
message = context.Base_translateString(\'No certificate found.\')\n
\n
return context.getWebSiteValue().Base_redirect(keep_items=dict(portal_status_message=message))\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>*args, **kwargs</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSection_revokeCertificate</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,7 +50,9 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""Update customer informations"""\n
<value> <string encoding="cdata"><![CDATA[
"""Update customer informations"""\n
portal = context.getPortalObject()\n
\n
person = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
......@@ -71,17 +73,30 @@ params = portal.portal_selections.getSelectionParamsFor(\'vifib_session_id\')\n
instance_software_release_uid = params[\'instance_software_release_uid\']\n
service_title = params[\'service_title\']\n
instance_xml = params[\'instance_xml\']\n
computer = params[\'computer\']\n
software_release = portal.portal_catalog.getResultValue(uid=instance_software_release_uid)\n
\n
person.requestSoftwareInstance(\n
request_kw = {}\n
request_kw.update(\n
software_release=software_release.getUrlString(),\n
software_title=service_title,\n
instance_xml=instance_xml,\n
)\n
\n
if computer:\n
computer = context.restrictedTraverse(computer)\n
request_kw[\'sla_xml\'] = """<?xml version=\'1.0\' encoding=\'utf-8\'?>\n
<instance>\n
<parameter id="computer_guid">%s</parameter>\n
</instance>""" % computer.getReference()\n
\n
person.requestSoftwareInstance(**request_kw)\n
\n
message = context.Base_translateString("Your instance is under creation. Thank you for using ViFiB!")\n
return context.getWebSiteValue().Base_redirect(keep_items={\'portal_status_message\': message})\n
</string> </value>
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>normal</string>
<string>left</string>
<string>right</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>normal</string> </key>
<value>
<list>
<string>your_information</string>
<string>your_key</string>
<string>your_certificate</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSection_viewCertificateAsWeb</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSection_viewCertificateAsWeb</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view_editable</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Your SSL Certificate</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>WebSection_requestNewCertificate</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>normal</string>
<string>left</string>
<string>right</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>normal</string> </key>
<value>
<list>
<string>your_description</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSection_viewCertificateRequestDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSection_viewCertificateRequestDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Request SSL Certificate</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -80,43 +80,29 @@
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>your_first_name</string>
<string>your_last_name</string>
<string>your_career_subordination_title</string>
<string>your_default_telephone_text</string>
</list>
<list/>
</value>
</item>
<item>
<key> <string>normal</string> </key>
<value>
<list>
<string>my_section_title</string>
<string>my_translated_description</string>
<string>my_informations_subsection_title</string>
<string>my_certificate_request_button</string>
<string>my_certificate_revoke_button</string>
<string>my_update_credential_button</string>
</list>
</value>
</item>
<item>
<key> <string>normal width100</string> </key>
<value>
<list>
<string>my_bill_subsection_title</string>
<string>listbox</string>
<string>message_listbox</string>
</list>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list>
<string>your_default_address_street_address</string>
<string>your_default_address_zip_code</string>
<string>your_default_address_city</string>
<string>update_information_button</string>
</list>
<list/>
</value>
</item>
</dictionary>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>enabled</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_bill_subsection_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_subsection_title</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Bills</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -10,16 +10,17 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>display_width</string>
<string>required</string>
<string>enabled</string>
<string>href</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_default_address_zip_code</string> </value>
<value> <string>my_certificate_request_button</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -55,16 +56,20 @@
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
......@@ -74,7 +79,7 @@
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<key> <string>href</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -92,25 +97,29 @@
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>nolabel validate alignr</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
<value> <string>Request SSL certificate</string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_integer_field</string> </value>
<value> <string>my_hyperlink</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>1</int> </value>
<key> <string>href</string> </key>
<value> <string>./request-a-certificate</string> </value>
</item>
<item>
<key> <string>target</string> </key>
......@@ -118,7 +127,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Postal Code</string> </value>
<value> <string>Request SSL certificate</string> </value>
</item>
</dictionary>
</value>
......@@ -128,16 +137,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
<value> <string>python: context.getPortalObject().Base_checkPermission(\'software_instance_module\', \'Add portal content\')</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -10,16 +10,17 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>display_width</string>
<string>editable</string>
<string>enabled</string>
<string>href</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_last_name</string> </value>
<value> <string>my_certificate_revoke_button</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -56,18 +57,18 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
......@@ -77,6 +78,10 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>href</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
......@@ -93,32 +98,36 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
<key> <string>css_class</string> </key>
<value> <string>nolabel validate alignr</string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
<key> <string>default</string> </key>
<value> <string>Revoke SSL certificate</string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_string_field</string> </value>
<value> <string>my_hyperlink</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>href</string> </key>
<value> <string>./revoke-a-certificate</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Last Name</string> </value>
<value> <string>Revoke SSL certificate</string> </value>
</item>
</dictionary>
</value>
......@@ -128,16 +137,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
<value> <string>python: context.getPortalObject().Base_checkPermission(\'software_instance_module\', \'Add portal content\')</string> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_informations_subsection_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_subsection_title</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Personal Information</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_section_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_section_title</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_translated_description</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_translated_description</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -10,16 +10,17 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>display_width</string>
<string>editable</string>
<string>enabled</string>
<string>href</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_first_name</string> </value>
<value> <string>my_update_credential_button</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -56,18 +57,18 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
......@@ -77,6 +78,10 @@
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>href</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
......@@ -93,32 +98,36 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
<key> <string>css_class</string> </key>
<value> <string>nolabel validate alignr</string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
<key> <string>default</string> </key>
<value> <string>Update credential</string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_string_field</string> </value>
<value> <string>my_hyperlink</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>href</string> </key>
<value> <string>ERP5Site_viewNewPersonCredentialUpdateDialog</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>First Name</string> </value>
<value> <string>Update credential</string> </value>
</item>
</dictionary>
</value>
......@@ -128,16 +137,13 @@
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
<value> <string>python: context.getPortalObject().Base_checkPermission(\'software_instance_module\', \'Add portal content\')</string> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>name</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>update_information_button</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>nolabel validate</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string>Update</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_input_button_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSection_updateUserPersonalInformation:action</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Update</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>display_width</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_career_subordination_title</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_string_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Organisation</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>required</string>
<string>title</string>
<string>width</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_default_address_street_address</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_text_area_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Address</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>30</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>display_width</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_default_telephone_text</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_string_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Telephone</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:here.ERP5Site_getPropertyFromAuthenticatedMemberPersonValue(property_name=field.getId().replace(\'your_\', \'\'))</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -101,6 +101,7 @@
<string>my_description</string>
<string>your_service_title</string>
<string>your_instance_xml</string>
<string>your_computer</string>
</list>
</value>
</item>
......
292
\ No newline at end of file
296
\ No newline at end of file
......@@ -224,7 +224,7 @@ class CertificateAuthorityTool(BaseTool):
new_id = open(self.crl, 'r').read().strip().lower()
crl_path = os.path.join(self.certificate_authority_path, 'crl')
crl = os.path.join(crl_path, new_id + '.crl')
cert = os.path.join(self.certificate_authority_path, 'certs', serial + '.crt')
cert = os.path.join(self.certificate_authority_path, 'certs', serial.lower() + '.crt')
if not os.path.exists(cert):
raise ValueError('Certificate with serial %r does not exists' % serial)
try:
......
......@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
import glob
import os
version = '0.8'
version = '0.10-dev'
name = 'slapos.core'
long_description = open("README.txt").read() + "\n" + \
open("CHANGES.txt").read() + "\n"
......
......@@ -38,9 +38,9 @@ alias = kvm https://svn.erp5.org/repos/vifib/public/trunk/software_release/kvm/s
respest https://www.tiolive.com/vifib/P-OSOE.Respest.BENHAMED/Base_download
erp5scalabilitytestbed http://git.erp5.org/gitweb/slapos.git/blob_plain/erp5scalabilitytestbed:/software/erp5scalabilitytestbed/software.cfg
zabbixagent http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/tags/slapos-0.5:/software/zabbix-agent/software.cfg
mysql-5.1 http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/mysql-5.1/software.cfg
mariadb http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/mariadb/software.cfg
memcached http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/memcached/software.cfg
kumofs http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/kumofs/software.cfg
mysql-5.1 http://git.erp5.org/gitweb/slapos.git/blob_plain/ee6caee6215a00b92aa6016d46ff291dbc4d4e2c:/software/mysql-5.1/software.cfg
mariadb-5.2 http://git.erp5.org/gitweb/slapos.git/blob_plain/ee6caee6215a00b92aa6016d46ff291dbc4d4e2c:/software/mariadb/software.cfg
memcached http://git.erp5.org/gitweb/slapos.git/blob_plain/ee6caee6215a00b92aa6016d46ff291dbc4d4e2c:/software/memcached/software.cfg
kumofs http://git.erp5.org/gitweb/slapos.git/blob_plain/ee6caee6215a00b92aa6016d46ff291dbc4d4e2c:/software/kumofs/software.cfg
erp5 http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/erp5/software.cfg
erp5_branch http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/heads/erp5:/software/erp5/software.cfg
\ No newline at end of file
erp5_branch http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/heads/erp5:/software/erp5/software.cfg
......@@ -91,22 +91,24 @@ class Config:
configuration_parser = ConfigParser.SafeConfigParser()
configuration_parser.read(configuration_file_path)
# Merges the arguments and configuration
for section in ('slapos', 'slapconsole'):
try:
configuration_dict = dict(configuration_parser.items(section))
except ConfigParser.NoSectionError:
pass
else:
for key in configuration_dict:
try:
configuration_dict = dict(configuration_parser.items("slapconsole"))
except ConfigParser.NoSectionError:
pass
else:
for key in configuration_dict:
if not getattr(self, key, None):
setattr(self, key, configuration_dict[key])
master_url = getattr(self, 'master_url', None)
configuration_dict = dict(configuration_parser.items('slapos'))
master_url = configuration_dict.get('master_url', None)
if not master_url:
raise ValueError("No option 'master_url'")
elif master_url.startswith('https') and \
not getattr(self, 'key_file', None) and \
not getattr(self, 'cert_file', None):
raise ValueError("No option 'key_file' and/or 'cert_file'")
else:
setattr(self, 'master_url', master_url)
def init(config):
......
......@@ -170,7 +170,8 @@ class AddressGenerationError(Error):
class Computer:
"Object representing the computer"
def __init__(self, reference, bridge=None, addr = None, netmask = None):
def __init__(self, reference, bridge=None, addr = None, netmask = None,
ipv6_interface=None):
"""
Attributes:
reference: String, the reference of the computer.
......@@ -181,6 +182,7 @@ class Computer:
self.partition_list = []
self.address = addr
self.netmask = netmask
self.ipv6_interface = ipv6_interface
def __getinitargs__(self):
return (self.reference, self.bridge)
......@@ -244,7 +246,7 @@ class Computer:
output_file.close()
@classmethod
def load(cls, path_to_xml, reference):
def load(cls, path_to_xml, reference, ipv6_interface):
"""
Create a computer object from a valid xml file.
......@@ -264,6 +266,7 @@ class Computer:
reference = reference,
addr = dumped_dict['address'],
netmask = dumped_dict['netmask'],
ipv6_interface=ipv6_interface,
)
for partition_dict in dumped_dict['partition_list']:
......@@ -369,7 +372,7 @@ class Computer:
else:
raise ValueError('Address %r is incorrect' % address['addr'])
finally:
if self.bridge.attach_to_tap:
if alter_network and self.bridge.attach_to_tap:
try:
self.partition_list[0].tap.detach()
except IndexError:
......@@ -577,7 +580,7 @@ class Tap:
class Bridge:
"Bridge represent a bridge on the system"
def __init__(self, name, ipv4_local_network):
def __init__(self, name, ipv4_local_network, ipv6_interface):
"""
Attributes:
name: String, the name of the bridge
......@@ -585,6 +588,7 @@ class Bridge:
self.name = str(name)
self.ipv4_local_network = ipv4_local_network
self.ipv6_interface = ipv6_interface
# Attach to TAP network interface, only if the bridge interface does not
# report carrier
......@@ -605,12 +609,16 @@ class Bridge:
def getGlobalScopeAddressList(self):
"""Returns currently configured global scope IPv6 addresses"""
if self.ipv6_interface:
interface_name = self.ipv6_interface
else:
interface_name = self.name
try:
address_list = [q for q in netifaces.ifaddresses(self.name)[socket.AF_INET6]
address_list = [q for q in netifaces.ifaddresses(interface_name)[socket.AF_INET6]
if isGlobalScopeAddress(q['addr'].split('%')[0])]
except KeyError:
raise ValueError("%s must have at least one IPv6 address assigned" % \
self.name)
interface_name)
# XXX: Missing implementation of Unique Local IPv6 Unicast Addresses as
# defined in http://www.rfc-editor.org/rfc/rfc4193.txt
# XXX: XXX: XXX: IT IS DISALLOWED TO IMPLEMENT link-local addresses as
......@@ -659,30 +667,36 @@ class Bridge:
if ipv6:
address_string = '%s/%s' % (address, netmaskToPrefixIPv6(netmask))
af = socket.AF_INET6
if self.ipv6_interface:
interface_name = self.ipv6_interface
else:
interface_name = self.name
else:
af = socket.AF_INET
address_string = '%s/%s' % (address, netmaskToPrefixIPv4(netmask))
interface_name = self.name
# check if address is already took by any other interface
for interface in netifaces.interfaces():
if interface != self.name:
if interface != interface_name:
address_dict = netifaces.ifaddresses(interface)
if af in address_dict:
if address in [q['addr'].split('%')[0] for q in address_dict[af]]:
return False
if not af in netifaces.ifaddresses(self.name) or not address in [q['addr'].split('%')[0] for q in netifaces.ifaddresses(self.name)[af]]:
if not af in netifaces.ifaddresses(interface_name) or not address in [q['addr'].split('%')[0] for q in netifaces.ifaddresses(interface_name)[af]]:
# add an address
callAndRead(['ip', 'addr', 'add', address_string, 'dev', self.name])
callAndRead(['ip', 'addr', 'add', address_string, 'dev', interface_name])
# wait few moments
time.sleep(2)
# check existence on interface
returncode, result = callAndRead(['ip', 'addr', 'list', self.name])
returncode, result = callAndRead(['ip', 'addr', 'list', interface_name])
for l in result.split('\n'):
if address in l:
if 'tentative' in l:
# duplicate, remove
callAndRead(['ip', 'addr', 'del', address_string, 'dev', self.name])
callAndRead(['ip', 'addr', 'del', address_string, 'dev',
interface_name])
return False
# found and clean
return True
......@@ -742,11 +756,15 @@ class Bridge:
an address with.
"""
# Getting one address of the bridge as base of the next addresses
if self.ipv6_interface:
interface_name = self.ipv6_interface
else:
interface_name = self.name
bridge_addr_list = self.getGlobalScopeAddressList()
# No address found
if len(bridge_addr_list) == 0:
raise NoAddressOnBridge(self.name)
raise NoAddressOnBridge(interface_name)
address_dict = bridge_addr_list[0]
if addr is not None:
......@@ -848,12 +866,14 @@ def run(config):
address, netmask = computer_definition.get('computer', 'address').split('/')
if config.alter_network and config.bridge_name is not None \
and config.ipv4_local_network is not None:
bridge = Bridge(config.bridge_name, config.ipv4_local_network)
bridge = Bridge(config.bridge_name, config.ipv4_local_network,
config.ipv6_interface)
computer = Computer(
reference=config.computer_id,
bridge=bridge,
addr=address,
netmask=netmask,
ipv6_interface=config.ipv6_interface
)
partition_list = []
for partition_number in range(int(config.partition_amount)):
......@@ -875,17 +895,20 @@ def run(config):
# no definition file, figure out computer
if os.path.exists(config.computer_xml):
config.logger.info('Loading previous computer data from %r' % config.computer_xml)
computer = Computer.load(config.computer_xml, reference=config.computer_id)
computer = Computer.load(config.computer_xml, reference=config.computer_id, ipv6_interface=config.ipv6_interface)
# Connect to the bridge interface defined by the configuration
computer.bridge = Bridge(config.bridge_name, config.ipv4_local_network)
computer.bridge = Bridge(config.bridge_name, config.ipv4_local_network,
config.ipv6_interface)
else:
# If no pre-existent configuration found, creating a new computer object
config.logger.warning('Creating new data computer with id %r' % config.computer_id)
computer = Computer(
reference=config.computer_id,
bridge=Bridge(config.bridge_name, config.ipv4_local_network),
bridge=Bridge(config.bridge_name, config.ipv4_local_network,
config.ipv6_interface),
addr=None,
netmask=None,
ipv6_interface=config.ipv6_interface
)
partition_amount = int(config.partition_amount)
......@@ -990,7 +1013,7 @@ class Config:
# setup some nones
for parameter in ['bridge_name', 'partition_base_name', 'user_base_name',
'tap_base_name', 'ipv4_local_network']:
'tap_base_name', 'ipv4_local_network', 'ipv6_interface']:
if getattr(self, parameter, None) is None:
setattr(self, parameter, None)
......
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