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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
slapos.core
Commits
042211ab
Commit
042211ab
authored
Jul 13, 2022
by
Rafael Monnerat
Browse files
Options
Browse Files
Download
Plain Diff
Upgrade legacy software
See merge request
nexedi/slapos.core!402
parents
83510d52
25ba8655
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
38 additions
and
41 deletions
+38
-41
master/bt5/slapos_cloud/SkinTemplateItem/portal_skins/slapos_cloud/InstanceTree_getDefaultImageAbsoluteUrl.py
...s/slapos_cloud/InstanceTree_getDefaultImageAbsoluteUrl.py
+5
-3
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareProduct_getSortedSoftwareReleaseList.py
...lapos_pdm/SoftwareProduct_getSortedSoftwareReleaseList.py
+14
-10
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
...lapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
+1
-1
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
...ateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
+11
-2
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.xml
...teItem/portal_components/test.erp5.testSlapOSPDMSkins.xml
+3
-24
master/bt5/slapos_pdm/WorkflowTemplateItem/portal_workflow/upgrade_slap_interface_workflow/script_UpgradeDecision_reviewUpgrade.py
...nterface_workflow/script_UpgradeDecision_reviewUpgrade.py
+4
-1
No files found.
master/bt5/slapos_cloud/SkinTemplateItem/portal_skins/slapos_cloud/InstanceTree_getDefaultImageAbsoluteUrl.py
View file @
042211ab
portal
=
context
.
getPortalObject
()
portal
=
context
.
getPortalObject
()
url_string
=
context
.
getUrlString
()
url_string
=
context
.
getUrlString
()
# set default value of image_url to the panel's logo
# set default value of image_url to the panel's logo
image_url
=
"gadget_slapos_panel.png"
image_url
=
"gadget_slapos_panel.png"
release
=
portal
.
portal_catalog
.
getResultValue
(
release
=
portal
.
portal_catalog
.
getResultValue
(
...
@@ -8,7 +8,9 @@ release = portal.portal_catalog.getResultValue(
...
@@ -8,7 +8,9 @@ release = portal.portal_catalog.getResultValue(
url_string
=
url_string
,
url_string
=
url_string
,
)
)
if
release
is
not
None
:
if
release
is
not
None
:
software_product
=
release
.
getAggregateValue
()
software_product
=
release
.
getAggregateValue
(
image_url
=
software_product
.
getDefaultImageAbsoluteUrl
()
checked_permission
=
'Access contents information'
)
if
software_product
is
not
None
:
image_url
=
software_product
.
getDefaultImageAbsoluteUrl
()
return
image_url
return
image_url
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareProduct_getSortedSoftwareReleaseList.py
View file @
042211ab
...
@@ -14,11 +14,11 @@ if software_product_reference is None:
...
@@ -14,11 +14,11 @@ if software_product_reference is None:
)
)
if
not
software_release
:
if
not
software_release
:
return
[]
return
[]
software_product_reference
=
software_release
.
getAggregateReference
()
software_product_reference
=
software_release
.
getAggregateReference
()
if
not
software_product_reference
:
if
not
software_product_reference
:
return
[]
return
[]
else
:
else
:
# Don't accept both parameters
# Don't accept both parameters
assert
(
software_release_url
is
None
)
assert
(
software_release_url
is
None
)
...
@@ -26,12 +26,12 @@ else:
...
@@ -26,12 +26,12 @@ else:
product_list
=
portal
.
portal_catalog
(
product_list
=
portal
.
portal_catalog
(
portal_type
=
'Software Product'
,
portal_type
=
'Software Product'
,
reference
=
software_product_reference
,
reference
=
software_product_reference
,
validation_state
=
'published'
,
validation_state
=
[
'published'
,
'validated'
],
limit
=
2
)
limit
=
2
)
if
not
product_list
:
if
not
product_list
:
return
[]
return
[]
if
len
(
product_list
)
>
1
:
if
len
(
product_list
)
>
1
:
raise
ValueError
(
'Several Software Product with the same reference.'
)
raise
ValueError
(
'Several Software Product with the same reference.'
)
...
@@ -39,18 +39,22 @@ software_release_list = product_list[0].getAggregateRelatedValueList()
...
@@ -39,18 +39,22 @@ software_release_list = product_list[0].getAggregateRelatedValueList()
def
sortkey
(
software_release
):
def
sortkey
(
software_release
):
publication_date
=
software_release
.
getEffectiveDate
()
publication_date
=
software_release
.
getEffectiveDate
()
delta
=
0
if
software_release
.
getValidationState
()
==
"archived"
:
# Decrease 80 years, to be sure it goes last but still on the list
delta
=
365
*
80
if
publication_date
:
if
publication_date
:
if
(
publication_date
-
DateTime
())
>
0
:
if
(
publication_date
-
DateTime
())
>
0
:
return
DateTime
(
'1900/05/02'
)
# Decrease 100 years, to be sure it goes at the end of the queue
return
publication_date
delta
=
365
*
100
return
software_release
.
getCreationDate
()
return
publication_date
-
delta
return
software_release
.
getCreationDate
()
-
delta
software_release_list
=
sorted
(
software_release_list
=
sorted
(
software_release_list
,
software_release_list
,
key
=
sortkey
,
reverse
=
True
,
key
=
sortkey
,
reverse
=
True
,
)
)
return
[
software_release
for
software_release
in
software_release_list
return
[
software_release
for
software_release
in
software_release_list
if
software_release
.
getValidationState
()
in
if
software_release
.
getValidationState
()
in
[
"published"
,
"published_alive"
]
[
"published"
,
"published_alive"
,
"archived"
]]
]
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
View file @
042211ab
...
@@ -14,7 +14,7 @@ for decision_line in decision_line_in_progress_list:
...
@@ -14,7 +14,7 @@ for decision_line in decision_line_in_progress_list:
release_list
=
decision_line
.
getAggregateValueList
(
portal_type
=
"Software Release"
)
release_list
=
decision_line
.
getAggregateValueList
(
portal_type
=
"Software Release"
)
if
len
(
release_list
)
>
1
:
if
len
(
release_list
)
>
1
:
continue
continue
if
not
release_list
[
0
]
:
if
not
release_list
:
continue
continue
# If the current sr in rejected we must prevent creation of new upgrade decision for this sr
# If the current sr in rejected we must prevent creation of new upgrade decision for this sr
if
simulation_state
==
'rejected'
and
\
if
simulation_state
==
'rejected'
and
\
...
...
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
View file @
042211ab
...
@@ -1336,16 +1336,22 @@ ${new_software_release_url}""",
...
@@ -1336,16 +1336,22 @@ ${new_software_release_url}""",
def
testUpgradeDecisionLine_cancel_archived_software_release
(
self
):
def
testUpgradeDecisionLine_cancel_archived_software_release
(
self
):
software_release
=
self
.
_makeSoftwareRelease
()
software_release
=
self
.
_makeSoftwareRelease
()
software_product
=
self
.
_makeSoftwareProduct
()
upgrade_decision
=
self
.
_makeUpgradeDecision
()
upgrade_decision
=
self
.
_makeUpgradeDecision
()
upgrade_decision_line
=
self
.
_makeUpgradeDecisionLine
(
upgrade_decision
)
upgrade_decision_line
=
self
.
_makeUpgradeDecisionLine
(
upgrade_decision
)
upgrade_decision_line
.
setAggregateValueList
([
software_release
])
upgrade_decision_line
.
setAggregateValueList
([
software_release
])
software_release
.
setAggregateValue
(
software_product
)
self
.
tic
()
self
.
tic
()
software_release
.
archive
()
software_release
.
archive
()
upgrade_decision_line
.
UpgradeDecisionLine_cancel
()
self
.
assertEqual
(
'draft'
,
upgrade_decision
.
getSimulationState
())
software_product
.
invalidate
()
upgrade_decision_line
.
UpgradeDecisionLine_cancel
()
upgrade_decision_line
.
UpgradeDecisionLine_cancel
()
self
.
assertEqual
(
'cancelled'
,
upgrade_decision
.
getSimulationState
())
self
.
assertEqual
(
'cancelled'
,
upgrade_decision
.
getSimulationState
())
workflow_history_list
=
upgrade_decision
.
Base_getWorkflowHistoryItemList
(
'upgrade_decision_workflow'
,
display
=
0
)
workflow_history_list
=
upgrade_decision
.
Base_getWorkflowHistoryItemList
(
'upgrade_decision_workflow'
,
display
=
0
)
self
.
assertEqual
(
"Software
Release is archiv
ed."
,
workflow_history_list
[
-
1
].
comment
)
self
.
assertEqual
(
"Software
Product is invalidat
ed."
,
workflow_history_list
[
-
1
].
comment
)
@
simulate
(
'NotificationTool_getDocumentValue'
,
@
simulate
(
'NotificationTool_getDocumentValue'
,
'reference=None'
,
'reference=None'
,
...
@@ -1445,6 +1451,8 @@ ${new_software_release_url}""",
...
@@ -1445,6 +1451,8 @@ ${new_software_release_url}""",
'context.REQUEST["testUpgradeDecisionLine_cancel_destroyed_hs_archived_sr"])'
)
'context.REQUEST["testUpgradeDecisionLine_cancel_destroyed_hs_archived_sr"])'
)
def
testUpgradeDecisionLine_cancel_destroyed_hs_archived_sr
(
self
):
def
testUpgradeDecisionLine_cancel_destroyed_hs_archived_sr
(
self
):
software_release
=
self
.
_makeSoftwareRelease
()
software_release
=
self
.
_makeSoftwareRelease
()
software_product
=
self
.
_makeSoftwareProduct
()
software_release
.
setAggregateValue
(
software_product
)
instance_tree
=
self
.
_makeFullInstanceTree
(
software_release
.
getUrlString
())
instance_tree
=
self
.
_makeFullInstanceTree
(
software_release
.
getUrlString
())
upgrade_decision
=
self
.
_makeUpgradeDecision
()
upgrade_decision
=
self
.
_makeUpgradeDecision
()
...
@@ -1478,9 +1486,10 @@ ${new_software_release_url}""",
...
@@ -1478,9 +1486,10 @@ ${new_software_release_url}""",
)
)
instance_tree
.
requestDestroy
(
**
kw
)
instance_tree
.
requestDestroy
(
**
kw
)
software_release
.
archive
()
software_release
.
archive
()
software_product
.
invalidate
()
self
.
tic
()
self
.
tic
()
upgrade_decision_line
.
UpgradeDecisionLine_cancel
()
upgrade_decision_line
.
UpgradeDecisionLine_cancel
()
self
.
assertEqual
(
'cancelled'
,
upgrade_decision
.
getSimulationState
())
self
.
assertEqual
(
'cancelled'
,
upgrade_decision
.
getSimulationState
())
workflow_history_list
=
upgrade_decision
.
Base_getWorkflowHistoryItemList
(
'upgrade_decision_workflow'
,
display
=
0
)
workflow_history_list
=
upgrade_decision
.
Base_getWorkflowHistoryItemList
(
'upgrade_decision_workflow'
,
display
=
0
)
self
.
assertEqual
(
"Software
Release is archiv
ed."
,
workflow_history_list
[
-
1
].
comment
)
self
.
assertEqual
(
"Software
Product is invalidat
ed."
,
workflow_history_list
[
-
1
].
comment
)
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.xml
View file @
042211ab
...
@@ -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>
testSlapOSPDMSkins
</string>
</value>
<value>
<string>
testSlapOSPDMSkins
</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_pdm/WorkflowTemplateItem/portal_workflow/upgrade_slap_interface_workflow/script_UpgradeDecision_reviewUpgrade.py
View file @
042211ab
...
@@ -10,7 +10,10 @@ if upgrade_decision.getSimulationState() == "cancelled":
...
@@ -10,7 +10,10 @@ if upgrade_decision.getSimulationState() == "cancelled":
return
return
if
software_release
.
getValidationState
()
==
"archived"
:
if
software_release
.
getValidationState
()
==
"archived"
:
upgrade_decision
.
cancel
(
comment
=
"Software Release is archived."
)
software_product
=
software_release
.
getAggregateValue
()
if
software_product
is
not
None
and
\
software_product
.
getValidationState
()
==
"invalidated"
:
upgrade_decision
.
cancel
(
comment
=
"Software Product is invalidated."
)
return
return
if
instance_tree
is
not
None
:
if
instance_tree
is
not
None
:
...
...
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