Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
20
Merge Requests
20
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
slapos.core
Commits
34bf4cba
Commit
34bf4cba
authored
Sep 16, 2022
by
Rafael Monnerat
👻
Browse files
Options
Browse Files
Download
Plain Diff
New constraints from Admin alarms
See merge request
nexedi/slapos.core!420
parents
1bf8c5a0
015f2b24
Pipeline
#23581
failed with stage
in 0 seconds
Changes
20
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
314 additions
and
315 deletions
+314
-315
master/bt5/slapos_cloud/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
...rtalTypePropertySheetTemplateItem/property_sheet_list.xml
+6
-0
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SlapOSReferenceConstraint.xml
...Item/portal_property_sheets/SlapOSReferenceConstraint.xml
+66
-0
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SlapOSReferenceConstraint/reference_not_empty_constraint.xml
...pOSReferenceConstraint/reference_not_empty_constraint.xml
+0
-0
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SlapOSReferenceConstraint/reference_unicity_constraint.xml
...lapOSReferenceConstraint/reference_unicity_constraint.xml
+1
-1
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SoftwareInstanceDuplicationConstraint.xml
...property_sheets/SoftwareInstanceDuplicationConstraint.xml
+66
-0
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SoftwareInstanceDuplicationConstraint/duplication_instance_on_instance_tree_constraint_constraint.xml
...ation_instance_on_instance_tree_constraint_constraint.xml
+80
-0
master/bt5/slapos_cloud/SkinTemplateItem/portal_skins/slapos_cloud/SoftwareInstance_checkDuplicationOnInstanceTreeConsistency.py
...wareInstance_checkDuplicationOnInstanceTreeConsistency.py
+20
-0
master/bt5/slapos_cloud/SkinTemplateItem/portal_skins/slapos_cloud/SoftwareInstance_checkDuplicationOnInstanceTreeConsistency.xml
...areInstance_checkDuplicationOnInstanceTreeConsistency.xml
+2
-2
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudConstraint.py
.../portal_components/test.erp5.testSlapOSCloudConstraint.py
+61
-25
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudConstraint.xml
...portal_components/test.erp5.testSlapOSCloudConstraint.xml
+3
-24
master/bt5/slapos_cloud/bt/template_portal_type_property_sheet_list
.../slapos_cloud/bt/template_portal_type_property_sheet_list
+6
-0
master/bt5/slapos_cloud/bt/template_property_sheet_id_list
master/bt5/slapos_cloud/bt/template_property_sheet_id_list
+3
-1
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedObjectReference.py
...s_administration/Alarm_searchDuplicatedObjectReference.py
+0
-12
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedObjectReference.xml
..._administration/Alarm_searchDuplicatedObjectReference.xml
+0
-62
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedSoftwareInstance.py
..._administration/Alarm_searchDuplicatedSoftwareInstance.py
+0
-8
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedSoftwareInstance.xml
...administration/Alarm_searchDuplicatedSoftwareInstance.xml
+0
-62
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Base_checkDuplicatedReference.py
...ns/slapos_administration/Base_checkDuplicatedReference.py
+0
-15
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/InstanceTree_checkDuplicatedInstance.py
...os_administration/InstanceTree_checkDuplicatedInstance.py
+0
-40
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/InstanceTree_checkDuplicatedInstance.xml
...s_administration/InstanceTree_checkDuplicatedInstance.xml
+0
-62
master/bt5/slapos_erp5/bt/template_path_list
master/bt5/slapos_erp5/bt/template_path_list
+0
-1
No files found.
master/bt5/slapos_cloud/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
View file @
34bf4cba
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
<item>
ComputeNodeSlapOSMetadata
</item>
<item>
ComputeNodeSlapOSMetadata
</item>
<item>
ComputerUpgradeConstraint
</item>
<item>
ComputerUpgradeConstraint
</item>
<item>
ERP5User
</item>
<item>
ERP5User
</item>
<item>
SlapOSReferenceConstraint
</item>
<item>
SlaposCapacity
</item>
<item>
SlaposCapacity
</item>
<item>
SlaposComputeNodeConstraint
</item>
<item>
SlaposComputeNodeConstraint
</item>
<item>
Url
</item>
<item>
Url
</item>
...
@@ -49,13 +50,16 @@
...
@@ -49,13 +50,16 @@
<portal_type
id=
"Slave Instance"
>
<portal_type
id=
"Slave Instance"
>
<item>
InstanceTree
</item>
<item>
InstanceTree
</item>
<item>
Reference
</item>
<item>
Reference
</item>
<item>
SlapOSReferenceConstraint
</item>
<item>
SlaveInstanceConstraint
</item>
<item>
SlaveInstanceConstraint
</item>
<item>
SoftwareInstance
</item>
<item>
SoftwareInstance
</item>
<item>
SoftwareInstanceDuplicationConstraint
</item>
<item>
TextDocument
</item>
<item>
TextDocument
</item>
<item>
Url
</item>
<item>
Url
</item>
<item>
VariationRange
</item>
<item>
VariationRange
</item>
</portal_type>
</portal_type>
<portal_type
id=
"Software Installation"
>
<portal_type
id=
"Software Installation"
>
<item>
SlapOSReferenceConstraint
</item>
<item>
Url
</item>
<item>
Url
</item>
<item>
VariationRange
</item>
<item>
VariationRange
</item>
</portal_type>
</portal_type>
...
@@ -63,8 +67,10 @@
...
@@ -63,8 +67,10 @@
<item>
ERP5User
</item>
<item>
ERP5User
</item>
<item>
InstanceTree
</item>
<item>
InstanceTree
</item>
<item>
Reference
</item>
<item>
Reference
</item>
<item>
SlapOSReferenceConstraint
</item>
<item>
SoftwareInstance
</item>
<item>
SoftwareInstance
</item>
<item>
SoftwareInstanceConstraint
</item>
<item>
SoftwareInstanceConstraint
</item>
<item>
SoftwareInstanceDuplicationConstraint
</item>
<item>
SoftwareInstanceUpgradeConstraint
</item>
<item>
SoftwareInstanceUpgradeConstraint
</item>
<item>
TextDocument
</item>
<item>
TextDocument
</item>
<item>
Url
</item>
<item>
Url
</item>
...
...
master/bt5/slapos_
erp5/PathTemplateItem/portal_alarms/slapos_check_duplicated_software_instance
.xml
→
master/bt5/slapos_
cloud/PropertySheetTemplateItem/portal_property_sheets/SlapOSReferenceConstraint
.xml
View file @
34bf4cba
...
@@ -2,54 +2,65 @@
...
@@ -2,54 +2,65 @@
<ZopeData>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<pickle>
<global
name=
"
Alarm
"
module=
"erp5.portal_type"
/>
<global
name=
"
Property Sheet
"
module=
"erp5.portal_type"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
<item>
<item>
<key>
<string>
active_sense_method_id
</string>
</key>
<key>
<string>
_count
</string>
</key>
<value>
<string>
Alarm_searchDuplicatedSoftwareInstance
</string>
</value>
<value>
</item>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
<item>
</value>
<key>
<string>
description
</string>
</key>
<value>
<string>
Search for Duplicated Software Instance on a Single Instance Tree
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
enabled
</string>
</key>
<key>
<string>
_mt_index
</string>
</key>
<value>
<int>
0
</int>
</value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
_tree
</string>
</key>
<value>
<string>
slapos_check_duplicated_software_instance
</string>
</value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
periodicity_start_date
</string>
</key>
<key>
<string>
description
</string>
</key>
<value>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
<none/>
</tuple>
<state>
<tuple>
<float>
433814400.0
</float>
<string>
GMT
</string>
</tuple>
</state>
</object>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
portal_type
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
Alarm
</string>
</value>
<value>
<string>
SlapOSReferenceConstraint
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
titl
e
</string>
</key>
<key>
<string>
portal_typ
e
</string>
</key>
<value>
<string>
Search Duplicated Software Instances
</string>
</value>
<value>
<string>
Property Sheet
</string>
</value>
</item>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</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=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
</ZopeData>
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/Slap
osComputeNod
eConstraint/reference_not_empty_constraint.xml
→
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/Slap
OSReferenc
eConstraint/reference_not_empty_constraint.xml
View file @
34bf4cba
File moved
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/Slap
osComputeNod
eConstraint/reference_unicity_constraint.xml
→
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/Slap
OSReferenc
eConstraint/reference_unicity_constraint.xml
View file @
34bf4cba
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
filter_parameter
</string>
</key>
<key>
<string>
filter_parameter
</string>
</key>
<value>
<string>
python: {\'portal_type\': (object.getPortalType(),
\'Person\'
), \'reference\': object.getReference()}
</string>
</value>
<value>
<string>
python: {\'portal_type\': (object.getPortalType(), ), \'reference\': object.getReference()}
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
...
...
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SoftwareInstanceDuplicationConstraint.xml
0 → 100644
View file @
34bf4cba
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Property Sheet"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SoftwareInstanceDuplicationConstraint
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Property Sheet
</string>
</value>
</item>
</dictionary>
</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=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_cloud/PropertySheetTemplateItem/portal_property_sheets/SoftwareInstanceDuplicationConstraint/duplication_instance_on_instance_tree_constraint_constraint.xml
0 → 100644
View file @
34bf4cba
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Script Constraint"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<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>
categories
</string>
</key>
<value>
<tuple>
<string>
constraint_type/default
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
duplication_instance_on_instance_tree_constraint_constraint
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Script Constraint
</string>
</value>
</item>
<item>
<key>
<string>
script_id
</string>
</key>
<value>
<string>
SoftwareInstance_checkDuplicationOnInstanceTreeConsistency
</string>
</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>
master/bt5/slapos_cloud/SkinTemplateItem/portal_skins/slapos_cloud/SoftwareInstance_checkDuplicationOnInstanceTreeConsistency.py
0 → 100644
View file @
34bf4cba
if
context
.
getSlapState
()
==
"destroy_requested"
:
return
[]
instance_tree
=
context
.
getSpecialiseValue
(
portal_type
=
"Instance Tree"
)
error_list
=
[]
if
instance_tree
:
title
=
context
.
getTitle
()
for
instance
in
instance_tree
.
getSpecialiseRelatedValueList
(
portal_type
=
[
"Slave Instance"
,
"Software Instance"
]):
if
instance
.
getSlapState
()
==
"destroy_requested"
or
\
instance
.
getUid
()
==
context
.
getUid
():
continue
if
instance
.
getTitle
()
==
title
:
error_list
.
append
(
"%s is duplicated with %s "
%
(
title
,
instance
.
getRelativeUrl
()))
return
error_list
master/bt5/slapos_
erp5/SkinTemplateItem/portal_skins/slapos_administration/Base_checkDuplicatedReference
.xml
→
master/bt5/slapos_
cloud/SkinTemplateItem/portal_skins/slapos_cloud/SoftwareInstance_checkDuplicationOnInstanceTreeConsistency
.xml
View file @
34bf4cba
...
@@ -50,11 +50,11 @@
...
@@ -50,11 +50,11 @@
</item>
</item>
<item>
<item>
<key>
<string>
_params
</string>
</key>
<key>
<string>
_params
</string>
</key>
<value>
<string>
fixit
, active_process
</string>
</value>
<value>
<string>
fixit
=False
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
Base_checkDuplicatedReference
</string>
</value>
<value>
<string>
SoftwareInstance_checkDuplicationOnInstanceTreeConsistency
</string>
</value>
</item>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
...
...
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudConstraint.py
View file @
34bf4cba
...
@@ -237,9 +237,11 @@ class TestSlapOSSoftwareInstanceConstraint(TestSlapOSConstraintMixin):
...
@@ -237,9 +237,11 @@ class TestSlapOSSoftwareInstanceConstraint(TestSlapOSConstraintMixin):
def
test_successor_related
(
self
):
def
test_successor_related
(
self
):
software_instance2
=
self
.
portal
.
software_instance_module
.
newContent
(
software_instance2
=
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Software Instance'
)
portal_type
=
'Software Instance'
,
reference
=
"TESTSOFTINST-%s"
%
self
.
generateNewId
())
software_instance3
=
self
.
portal
.
software_instance_module
.
newContent
(
software_instance3
=
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Software Instance'
)
portal_type
=
'Software Instance'
,
reference
=
"TESTSOFTINST-%s"
%
self
.
generateNewId
())
# fetch basic list of consistency messages
# fetch basic list of consistency messages
current_message_list
=
self
.
getMessageList
(
self
.
software_instance
)
current_message_list
=
self
.
getMessageList
(
self
.
software_instance
)
...
@@ -376,9 +378,11 @@ class TestSlapOSSlaveInstanceConstraint(TestSlapOSConstraintMixin):
...
@@ -376,9 +378,11 @@ class TestSlapOSSlaveInstanceConstraint(TestSlapOSConstraintMixin):
def
test_successor_related
(
self
):
def
test_successor_related
(
self
):
software_instance2
=
self
.
portal
.
software_instance_module
.
newContent
(
software_instance2
=
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Slave Instance'
)
portal_type
=
'Slave Instance'
,
reference
=
"TESTSOFTINST-%s"
%
self
.
generateNewId
())
software_instance3
=
self
.
portal
.
software_instance_module
.
newContent
(
software_instance3
=
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Slave Instance'
)
portal_type
=
'Slave Instance'
,
reference
=
"TESTSOFTINST-%s"
%
self
.
generateNewId
())
# fetch basic list of consistency messages
# fetch basic list of consistency messages
current_message_list
=
self
.
getMessageList
(
self
.
software_instance
)
current_message_list
=
self
.
getMessageList
(
self
.
software_instance
)
...
@@ -546,37 +550,69 @@ class TestSlapOSComputeNodeConstraint(TestSlapOSConstraintMixin):
...
@@ -546,37 +550,69 @@ class TestSlapOSComputeNodeConstraint(TestSlapOSConstraintMixin):
consistency_message
=
'Title must be defined'
consistency_message
=
'Title must be defined'
self
.
assertTrue
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
self
.
assertTrue
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
compute_node
.
setTitle
(
self
.
generateNewId
())
compute_node
.
setTitle
(
self
.
generateNewId
())
self
.
assertFalse
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
self
.
assertFalse
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
def
test_reference_not_empty
(
self
):
compute_node
=
self
.
portal
.
compute_node_module
.
newContent
(
portal_type
=
'Compute Node'
)
consistency_message
=
'Reference must be defined'
self
.
assertTrue
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
class
TestSlapOSReferenceConstraint
(
TestSlapOSConstraintMixin
):
compute_node
.
setReference
(
self
.
generateNewId
())
def
test_reference_not_empty_compute_node
(
self
):
self
.
_test_reference_not_empty
(
self
.
portal
.
compute_node_module
.
newContent
(
portal_type
=
'Compute Node'
))
self
.
assertFalse
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
def
test_reference_not_empty_software_instance
(
self
):
self
.
_test_reference_not_empty
(
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Software Instance'
))
def
test_reference_unique
(
self
):
def
test_reference_not_empty_slave_instance
(
self
):
reference
=
self
.
generateNewId
()
self
.
_test_reference_not_empty
(
reference_2
=
self
.
generateNewId
()
self
.
portal
.
software_instance_module
.
newContent
(
portal_type
=
'Slave Instance'
))
compute_node
=
self
.
portal
.
compute_node_module
.
newContent
(
portal_type
=
'Compute Node'
,
reference
=
reference
)
def
test_reference_not_empty_software_installation
(
self
):
compute_node_2
=
self
.
portal
.
compute_node_module
.
newContent
(
portal_type
=
'Compute Node'
,
self
.
_test_reference_not_empty
(
reference
=
reference
)
self
.
portal
.
software_installation_module
.
newContent
(
portal_type
=
'Software Installation'
))
consistency_message
=
'Reference must be unique'
def
_test_reference_not_empty
(
self
,
document
):
consistency_message
=
'Reference must be defined'
self
.
assertIn
(
consistency_message
,
self
.
getMessageList
(
document
))
document
.
setReference
(
self
.
generateNewId
())
self
.
assertNotIn
(
consistency_message
,
self
.
getMessageList
(
document
))
def
test_reference_unique_compute_node
(
self
):
module
=
self
.
portal
.
compute_node_module
self
.
_test_reference_unique
(
module
.
newContent
(
portal_type
=
'Compute Node'
,
reference
=
self
.
generateNewId
()),
module
.
newContent
(
portal_type
=
'Compute Node'
,
reference
=
self
.
generateNewId
()))
def
test_reference_unique_software_instance
(
self
):
module
=
self
.
portal
.
software_instance_module
self
.
_test_reference_unique
(
module
.
newContent
(
portal_type
=
'Software Instance'
,
reference
=
self
.
generateNewId
()),
module
.
newContent
(
portal_type
=
'Software Instance'
,
reference
=
self
.
generateNewId
()))
def
test_reference_unique_slave_instance
(
self
):
module
=
self
.
portal
.
software_instance_module
self
.
_test_reference_unique
(
module
.
newContent
(
portal_type
=
'Slave Instance'
,
reference
=
self
.
generateNewId
()),
module
.
newContent
(
portal_type
=
'Slave Instance'
,
reference
=
self
.
generateNewId
()))
def
test_reference_unique_software_installation
(
self
):
module
=
self
.
portal
.
software_installation_module
self
.
_test_reference_unique
(
module
.
newContent
(
portal_type
=
'Software Installation'
,
reference
=
self
.
generateNewId
()),
module
.
newContent
(
portal_type
=
'Software Installation'
,
reference
=
self
.
generateNewId
()))
def
_test_reference_unique
(
self
,
documentA
,
documentB
):
consistency_message
=
'Reference must be unique'
self
.
tic
()
self
.
tic
()
self
.
assert
True
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
self
.
assert
NotIn
(
consistency_message
,
self
.
getMessageList
(
documentA
))
self
.
assert
True
(
consistency_message
in
self
.
getMessageList
(
compute_node_2
))
self
.
assert
NotIn
(
consistency_message
,
self
.
getMessageList
(
documentB
))
compute_node_2
.
setReference
(
reference_2
)
documentB
.
setReference
(
documentA
.
getReference
()
)
self
.
tic
()
self
.
tic
()
self
.
assertFalse
(
consistency_message
in
self
.
getMessageList
(
compute_node
))
self
.
assertEqual
(
documentB
.
getReference
(),
documentA
.
getReference
())
self
.
assertFalse
(
consistency_message
in
self
.
getMessageList
(
compute_node_2
))
self
.
assertIn
(
consistency_message
,
self
.
getMessageList
(
documentA
))
self
.
assertIn
(
consistency_message
,
self
.
getMessageList
(
documentB
))
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudConstraint.xml
View file @
34bf4cba
...
@@ -6,12 +6,6 @@
...
@@ -6,12 +6,6 @@
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<item>
<key>
<string>
default_reference
</string>
</key>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
testSlapOSCloudConstraint
</string>
</value>
<value>
<string>
testSlapOSCloudConstraint
</string>
</value>
...
@@ -55,28 +49,13 @@
...
@@ -55,28 +49,13 @@
<item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<key>
<string>
workflow_history
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
I
=
</string>
</persistent>
</value>
</value>
</item>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<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>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
</pickle>
...
@@ -89,7 +68,7 @@
...
@@ -89,7 +68,7 @@
<item>
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
Q
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
</value>
</value>
</item>
</item>
</dictionary>
</dictionary>
...
@@ -98,7 +77,7 @@
...
@@ -98,7 +77,7 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"
4"
aka=
"AAAAAAAAAAQ
="
>
<record
id=
"
3"
aka=
"AAAAAAAAAAM
="
>
<pickle>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
</pickle>
...
...
master/bt5/slapos_cloud/bt/template_portal_type_property_sheet_list
View file @
34bf4cba
...
@@ -3,6 +3,7 @@ Assignment | SlaposAssignmentConstraint
...
@@ -3,6 +3,7 @@ Assignment | SlaposAssignmentConstraint
Compute Node | ComputeNodeSlapOSMetadata
Compute Node | ComputeNodeSlapOSMetadata
Compute Node | ComputerUpgradeConstraint
Compute Node | ComputerUpgradeConstraint
Compute Node | ERP5User
Compute Node | ERP5User
Compute Node | SlapOSReferenceConstraint
Compute Node | SlaposCapacity
Compute Node | SlaposCapacity
Compute Node | SlaposComputeNodeConstraint
Compute Node | SlaposComputeNodeConstraint
Compute Node | Url
Compute Node | Url
...
@@ -25,18 +26,23 @@ Instance Tree | VariationRange
...
@@ -25,18 +26,23 @@ Instance Tree | VariationRange
Person | SlaposPersonConstraint
Person | SlaposPersonConstraint
Slave Instance | InstanceTree
Slave Instance | InstanceTree
Slave Instance | Reference
Slave Instance | Reference
Slave Instance | SlapOSReferenceConstraint
Slave Instance | SlaveInstanceConstraint
Slave Instance | SlaveInstanceConstraint
Slave Instance | SoftwareInstance
Slave Instance | SoftwareInstance
Slave Instance | SoftwareInstanceDuplicationConstraint
Slave Instance | TextDocument
Slave Instance | TextDocument
Slave Instance | Url
Slave Instance | Url
Slave Instance | VariationRange
Slave Instance | VariationRange
Software Installation | SlapOSReferenceConstraint
Software Installation | Url
Software Installation | Url
Software Installation | VariationRange
Software Installation | VariationRange
Software Instance | ERP5User
Software Instance | ERP5User
Software Instance | InstanceTree
Software Instance | InstanceTree
Software Instance | Reference
Software Instance | Reference
Software Instance | SlapOSReferenceConstraint
Software Instance | SoftwareInstance
Software Instance | SoftwareInstance
Software Instance | SoftwareInstanceConstraint
Software Instance | SoftwareInstanceConstraint
Software Instance | SoftwareInstanceDuplicationConstraint
Software Instance | SoftwareInstanceUpgradeConstraint
Software Instance | SoftwareInstanceUpgradeConstraint
Software Instance | TextDocument
Software Instance | TextDocument
Software Instance | Url
Software Instance | Url
...
...
master/bt5/slapos_cloud/bt/template_property_sheet_id_list
View file @
34bf4cba
...
@@ -10,6 +10,7 @@ ComputerPartitionUpgradeConstraint
...
@@ -10,6 +10,7 @@ ComputerPartitionUpgradeConstraint
ComputePartition
ComputePartition
SoftwareInstance
SoftwareInstance
SoftwareInstanceUpgradeConstraint
SoftwareInstanceUpgradeConstraint
SoftwareInstanceDuplicationConstraint
InstanceTree
InstanceTree
SlaposCapacity
SlaposCapacity
SlaposPersonConstraint
SlaposPersonConstraint
...
@@ -17,3 +18,4 @@ SlaposAssignmentConstraint
...
@@ -17,3 +18,4 @@ SlaposAssignmentConstraint
SlaposEmailConstraint
SlaposEmailConstraint
SlaposComputeNodeConstraint
SlaposComputeNodeConstraint
ComputeNodeSlapOSMetadata
ComputeNodeSlapOSMetadata
SlapOSReferenceConstraint
\ No newline at end of file
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedObjectReference.py
deleted
100644 → 0
View file @
1bf8c5a0
active_process
=
context
.
newActiveProcess
().
getRelativeUrl
()
context
.
getPortalObject
().
portal_catalog
.
searchAndActivate
(
method_id
=
'Base_checkDuplicatedReference'
,
method_kw
=
dict
(
fixit
=
fixit
,
active_process
=
active_process
),
activate_kw
=
dict
(
tag
=
tag
,
priority
=
5
),
portal_type
=
[
"Instance Tree"
,
"Compute Node"
,
"Software Instance"
,
"Slave Instance"
,
"Software Installation"
],
validation_state
=
"validated"
)
return
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedObjectReference.xml
deleted
100644 → 0
View file @
1bf8c5a0
<?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>
_params
</string>
</key>
<value>
<string>
tag, fixit, **kw
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Alarm_searchDuplicatedObjectReference
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedSoftwareInstance.py
deleted
100644 → 0
View file @
1bf8c5a0
active_process
=
context
.
newActiveProcess
().
getRelativeUrl
()
context
.
getPortalObject
().
portal_catalog
.
searchAndActivate
(
method_id
=
'InstanceTree_checkDuplicatedInstance'
,
method_kw
=
dict
(
fixit
=
fixit
,
active_process
=
active_process
),
activate_kw
=
dict
(
tag
=
tag
,
priority
=
5
),
portal_type
=
"Instance Tree"
,
validation_state
=
"validated"
)
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_searchDuplicatedSoftwareInstance.xml
deleted
100644 → 0
View file @
1bf8c5a0
<?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>
_params
</string>
</key>
<value>
<string>
tag, fixit, **kw
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Alarm_searchDuplicatedSoftwareInstance
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Base_checkDuplicatedReference.py
deleted
100644 → 0
View file @
1bf8c5a0
from
Products.CMFActivity.ActiveResult
import
ActiveResult
portal
=
context
.
getPortalObject
()
reference
=
context
.
getReference
()
active_process
=
portal
.
restrictedTraverse
(
active_process
)
result
=
portal
.
portal_catalog
(
portal_type
=
context
.
getPortalType
(),
reference
=
reference
,
limit
=
2
)
if
len
(
result
)
!=
1
:
active_process
.
postResult
(
ActiveResult
(
summary
=
"%s %s has duplication"
%
(
context
.
getRelativeUrl
(),
context
.
getReference
()),
severity
=
100
,
detail
=
""
))
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/InstanceTree_checkDuplicatedInstance.py
deleted
100644 → 0
View file @
1bf8c5a0
from
Products.CMFActivity.ActiveResult
import
ActiveResult
portal
=
context
.
getPortalObject
()
software_instance_list
=
context
.
getSpecialiseRelatedValueList
(
portal_type
=
[
"Slave Instance"
,
"Software Instance"
])
if
len
(
software_instance_list
)
==
1
:
return
title_dict
=
{}
active_process
=
portal
.
restrictedTraverse
(
active_process
)
for
software_instance
in
software_instance_list
:
if
software_instance
.
getSlapState
()
==
"destroy_requested"
:
continue
title
=
software_instance
.
getTitle
()
if
title
in
title_dict
:
title_dict
[
title
].
append
(
software_instance
.
getObject
())
else
:
title_dict
[
title
]
=
[
software_instance
.
getObject
()]
for
title
in
title_dict
:
if
len
(
title_dict
[
title
])
>
1
:
if
fixit
:
for
software_instance
in
title_dict
[
title
]:
if
len
(
software_instance
.
getAggregate
([]))
==
0
:
active_process
.
postResult
(
ActiveResult
(
summary
=
"Fixing %s which duplication and is not allocated (%s)"
\
%
(
software_instance
.
getRelativeUrl
(),
context
.
getRelativeUrl
()),
severity
=
0
,
detail
=
""
))
software_instance
.
activate
().
SoftwareInstance_destroyAsSelf
()
else
:
active_process
.
postResult
(
ActiveResult
(
summary
=
"%s has duplication"
%
context
.
getRelativeUrl
(),
severity
=
100
,
detail
=
"%s has duplication on %s (%s)"
%
(
context
.
getRelativeUrl
(),
title
,
len
(
title_dict
[
title
]))))
master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/InstanceTree_checkDuplicatedInstance.xml
deleted
100644 → 0
View file @
1bf8c5a0
<?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>
_params
</string>
</key>
<value>
<string>
fixit, active_process
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
InstanceTree_checkDuplicatedInstance
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_erp5/bt/template_path_list
View file @
34bf4cba
notification_message_module/slapos_erp5_credential_recovery_password_expiration_link_en_001
notification_message_module/slapos_erp5_credential_recovery_password_expiration_link_en_001
notification_message_module/slapos_erp5_credential_recovery_password_expiration_link_en_001/**
notification_message_module/slapos_erp5_credential_recovery_password_expiration_link_en_001/**
portal_alarms/open_bugs_alarm
portal_alarms/open_bugs_alarm
portal_alarms/slapos_check_duplicated_software_instance
portal_alarms/slapos_check_security_uid
portal_alarms/slapos_check_security_uid
portal_alarms/slapos_check_stored_broken_state
portal_alarms/slapos_check_stored_broken_state
portal_alarms/slapos_erp5_cleanup_active_process
portal_alarms/slapos_erp5_cleanup_active_process
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment