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
1
Merge Requests
1
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
Romain Courteaud
slapos.core
Commits
bdd29231
Commit
bdd29231
authored
Dec 20, 2022
by
Romain Courteaud
🐙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_pdm: wip upgrade decision redesign with allocation supply
parent
d01bc043
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
291 deletions
+114
-291
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/InstanceTree_createUpgradeDecision.py
...al_skins/slapos_pdm/InstanceTree_createUpgradeDecision.py
+57
-44
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_createUpgradeDecision.py
...skins/slapos_pdm/SoftwareRelease_createUpgradeDecision.py
+0
-40
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_createUpgradeDecision.xml
...kins/slapos_pdm/SoftwareRelease_createUpgradeDecision.xml
+0
-62
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
...lapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
+0
-26
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.xml
...apos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.xml
+0
-62
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMCreateUpgradeDecisionSkins.py
...ents/test.erp5.testSlapOSPDMCreateUpgradeDecisionSkins.py
+52
-47
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
...ateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
+2
-2
master/bt5/slapos_pdm/WorkflowTemplateItem/portal_workflow/upgrade_slap_interface_workflow/script_UpgradeDecision_approveRegistration.py
...ce_workflow/script_UpgradeDecision_approveRegistration.py
+3
-8
No files found.
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/InstanceTree_createUpgradeDecision.py
View file @
bdd29231
...
...
@@ -2,64 +2,77 @@ from DateTime import DateTime
portal
=
context
.
getPortalObject
()
instance_tree
=
context
upgrade_scope
=
context
.
getUpgradeScope
(
"ask_confirmation"
)
if
upgrade_scope
in
[
"never"
,
"disabled"
]:
return
root_instance_list
=
[
q
for
q
in
instance_tree
.
getSuccessorValueList
(
portal_type
=
[
"Software Instance"
,
"Slave Instance"
])
if
q
.
getSlapState
()
!=
'destroy_requested'
]
if
len
(
root_instance_list
)
==
0
:
return
root_instance
=
root_instance_list
[
0
]
slave_upgrade
=
False
if
root_instance
.
getPortalType
()
==
'Slave Instance'
:
slave_upgrade
=
True
upgrade_scope
=
"auto"
if
instance_tree
.
getSlapState
()
==
"destroy_requested"
:
return
# Check if UpgradeDecision_approveRegistration is running
# XXX we should instead look at the current upgrade decision state
tag
=
"%s_requestUpgradeDecisionCreation_inProgress"
%
instance_tree
.
getUid
()
if
portal
.
portal_activities
.
countMessageWithTag
(
tag
)
>
0
:
#
nothing to do
#
previous run not finished, skip
return
partition
=
root_instance
.
getAggregateValue
(
portal_type
=
"Compute Parti
tion"
)
if
partition
is
None
:
upgrade_scope
=
context
.
getUpgradeScope
(
"ask_confirma
tion"
)
if
upgrade_scope
in
[
"never"
,
"disabled"
]
:
return
decision_title
=
'A new upgrade is available for %s'
%
instance_tree
.
getTitle
()
newer_release
=
None
software_product
,
software_release
,
software_type
=
instance_tree
.
InstanceTree_getSoftwareProduct
()
if
slave_upgrade
:
software_instance
=
partition
.
getAggregateRelatedValue
(
portal_type
=
'Software Instance'
)
if
software_instance
:
url_string
=
software_instance
.
getUrlString
()
if
url_string
!=
instance_tree
.
getUrlString
():
newer_release
=
context
.
portal_catalog
.
getResultValue
(
portal_type
=
'Software Release'
,
url_string
=
url_string
)
else
:
newer_release
=
instance_tree
.
\
InstanceTree_getUpgradableSoftwareRelease
()
if
newer_release
is
None
:
if
software_product
is
None
:
# No way to upgrade, if we can find which Software Product to upgrade
return
decision_in_progress
=
newer_release
.
\
SoftwareRelease_getUpgradeDecisionInProgress
(
instance_tree
.
getUid
())
if
decision_in_progress
:
decision_in_progress
.
reviewRegistration
(
software_release_url
=
newer_release
.
getUrlString
())
if
decision_in_progress
.
getSimulationState
()
!=
"cancelled"
:
return
node
=
None
root_instance_list
=
[
q
for
q
in
instance_tree
.
getSuccessorValueList
(
portal_type
=
[
"Software Instance"
,
"Slave Instance"
])
if
q
.
getSlapState
()
!=
'destroy_requested'
]
if
len
(
root_instance_list
)
!=
0
:
root_instance
=
root_instance_list
[
0
]
upgrade_decision
=
newer_release
.
SoftwareRelease_createUpgradeDecision
(
source_url
=
instance_tree
.
getRelativeUrl
(),
title
=
decision_title
person
=
context
.
getDestinationSectionValue
()
# Search if the product with the same type
# XXX search only for the main node
allocation_cell_list
=
software_product
.
getFollowUpValue
().
Project_getSoftwareProductPredicateList
(
software_product
=
software_product
,
software_product_type
=
software_type
,
#software_product_release=software_release,
destination_value
=
person
,
predicate_portal_type
=
'Allocation Supply Cell'
)
upgrade_decision
.
approveRegistration
(
upgrade_scope
=
upgrade_scope
)
# Only upgrade if there is no doubt (ie, only 1 url is allowed)
if
len
(
allocation_cell_list
)
==
1
:
if
(
allocation_cell_list
[
0
].
getSoftwareType
()
!=
instance_tree
.
getUrlString
()):
# XXX Upgrade
decision_title
=
'A new upgrade is available for %s'
%
instance_tree
.
getTitle
()
decision_in_progress
=
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
'Upgrade Decision'
,
aggregate__uid
=
instance_tree
.
getUid
()
)
if
decision_in_progress
:
if
1
:
raise
NotImplementedError
(
'reviewRegistration'
)
decision_in_progress
.
reviewRegistration
(
software_release_url
=
newer_release
.
getUrlString
())
if
decision_in_progress
.
getSimulationState
()
!=
"cancelled"
:
return
upgrade_decision
=
portal
.
upgrade_decision_module
.
newContent
(
portal_type
=
'Upgrade Decision'
,
title
=
decision_title
,
destination_section_value
=
person
,
destination_decision_value
=
person
,
destination_project_value
=
instance_tree
.
getFollowUpValue
(),
resource_value
=
software_product
,
variation_category_list
=
allocation_cell_list
[
0
].
getVariationCategoryList
(),
aggregate_value
=
instance_tree
,
)
upgrade_decision
.
approveRegistration
(
upgrade_scope
=
upgrade_scope
)
return
upgrade_decision
return
upgrade_decision
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_createUpgradeDecision.py
deleted
100644 → 0
View file @
d01bc043
from
DateTime
import
DateTime
portal
=
context
.
getPortalObject
()
software_release
=
context
source_product
=
portal
.
restrictedTraverse
(
source_url
,
None
)
if
not
source_product
:
return
portal_type
=
source_product
.
getPortalType
()
if
portal_type
==
'Instance Tree'
:
person_url
=
source_product
.
getDestinationSection
()
else
:
return
if
not
person_url
:
return
upgrade_decision
=
portal
.
upgrade_decision_module
.
\
template_upgrade_decision
.
Base_createCloneDocument
(
batch_mode
=
1
)
upgrade_decision
.
edit
(
title
=
title
)
upgrade_decision
.
setDestinationSection
(
person_url
)
upgrade_decision
.
setDestinationDecision
(
person_url
)
decision_line_list
=
upgrade_decision
.
contentValues
(
portal_type
=
'Upgrade Decision Line'
)
if
len
(
decision_line_list
)
>
0
:
decision_line
=
decision_line_list
[
0
]
else
:
decision_line
=
upgrade_decision
.
newContent
(
portal_type
=
'Upgrade Decision Line'
)
decision_line
.
edit
(
title
=
'Request decision upgrade for %s on %s %s'
%
(
software_release
.
getTitle
(),
portal_type
,
source_product
.
getReference
()),
aggregate
=
[
source_url
,
software_release
.
getRelativeUrl
()])
return
upgrade_decision
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_createUpgradeDecision.xml
deleted
100644 → 0
View file @
d01bc043
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</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>
source_url, title
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SoftwareRelease_createUpgradeDecision
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.py
deleted
100644 → 0
View file @
d01bc043
portal
=
context
.
getPortalObject
()
product_reference
=
context
.
getAggregateReference
()
decision_line_in_progress_list
=
portal
.
portal_catalog
(
portal_type
=
'Upgrade Decision Line'
,
default_aggregate_uid
=
aggregate_uid
)
for
decision_line
in
decision_line_in_progress_list
:
upgrade_decision
=
decision_line
.
getParentValue
()
simulation_state
=
upgrade_decision
.
getSimulationState
()
if
simulation_state
not
in
[
'planned'
,
'confirmed'
,
'started'
,
'stopped'
,
'rejected'
]:
continue
release_list
=
decision_line
.
getAggregateValueList
(
portal_type
=
"Software Release"
)
if
len
(
release_list
)
>
1
:
continue
if
not
release_list
:
continue
# If the current sr in rejected we must prevent creation of new upgrade decision for this sr
if
simulation_state
==
'rejected'
and
\
release_list
[
0
].
getUrlString
()
!=
context
.
getUrlString
():
continue
# If both software release belong to the same software product, there is an upgrade decision in progress
if
product_reference
==
release_list
[
0
].
getAggregateReference
():
return
upgrade_decision
master/bt5/slapos_pdm/SkinTemplateItem/portal_skins/slapos_pdm/SoftwareRelease_getUpgradeDecisionInProgress.xml
deleted
100644 → 0
View file @
d01bc043
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</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>
aggregate_uid
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SoftwareRelease_getUpgradeDecisionInProgress
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMCreateUpgradeDecisionSkins.py
View file @
bdd29231
...
...
@@ -20,31 +20,50 @@
##############################################################################
from
erp5.component.test.testSlapOSPDMSkins
import
TestSlapOSPDMMixinSkins
from
DateTime
import
DateTime
import
transaction
class
TestSlapOSPDMCreateUpgradeDecisionSkins
(
TestSlapOSPDMMixinSkins
):
def
_makeSoftwareProductCatalog
(
self
):
self
.
software_product
=
self
.
_makeSoftwareProduct
(
self
.
generateNewId
())
self
.
previous_software_release
=
self
.
_makeSoftwareRelease
(
self
.
generateNewId
())
self
.
new_software_release
=
self
.
_makeSoftwareRelease
(
self
.
generateNewId
())
self
.
previous_software_release
.
publish
()
self
.
new_software_release
.
publish
()
def
afterSetUp
(
self
):
self
.
portal
.
testromain
()
TestSlapOSPDMMixinSkins
.
afterSetUp
(
self
)
preference
=
self
.
portal
.
portal_preferences
.
getActiveSystemPreference
()
preference
.
setPreferredCloudContractEnabled
(
True
)
self
.
tic
()
self
.
project
=
self
.
addProject
()
self
.
_makeComputeNode
()
self
.
_makeSoftwareProductCatalog
(
self
.
project
)
self
.
_installSoftwareOnTheComputeNode
([
self
.
previous_software_release
.
getUrlString
(),
self
.
new_software_release
.
getUrlString
()
])
self
.
person
=
self
.
makePerson
(
self
.
project
)
self
.
tic
()
self
.
_makeTreeForTestSlapOSPDMCreateUpgradeDecisionSkins
(
self
.
previous_software_release
.
getUrlString
(),
self
.
software_product
.
contentValues
(
portal_type
=
'Software Product Type Variation'
)[
0
].
getTitle
(),
self
.
project
)
self
.
previous_software_release
.
edit
(
aggregate
=
self
.
software_product
.
getRelativeUrl
(),
url_string
=
self
.
generateNewSoftwareReleaseUrl
(),
version
=
'1'
,
effective_date
=
DateTime
()
-
1
,
def
_makeSoftwareProductCatalog
(
self
,
project
):
self
.
software_product
=
self
.
_makeSoftwareProduct
(
project
,
new_id
=
self
.
generateNewId
(),
url
=
self
.
generateNewSoftwareReleaseUrl
(),
software_type
=
'foobartype'
)
self
.
previous_software_release
=
self
.
_makeSoftwareRelease
(
self
.
software_product
)
self
.
new_software_release
=
self
.
_makeSoftwareRelease
(
self
.
software_product
)
self
.
new_software_release
.
edit
(
aggregate
=
self
.
software_product
.
getRelativeUrl
(),
url_string
=
self
.
generateNewSoftwareReleaseUrl
(),
version
=
'2'
,
effective_date
=
DateTime
(),
self
.
addAllocationSupply
(
"for compute node"
,
# XXX node node
None
,
self
.
software_product
,
self
.
new_software_release
,
self
.
software_product
.
contentValues
(
portal_type
=
'Software Product Type Variation'
)[
0
],
)
self
.
tic
()
def
_installSoftwareOnTheComputeNode
(
self
,
software_release_url_list
):
...
...
@@ -57,7 +76,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
software_installation
.
requestStart
()
self
.
tic
()
def
_createInstance
(
self
,
url_string
,
shared
=
False
):
def
_createInstance
(
self
,
url_string
,
s
oftware_type
,
project
,
s
hared
=
False
):
instance_tree
=
self
.
portal
.
instance_tree_module
\
.
template_instance_tree
.
Base_createCloneDocument
(
batch_mode
=
1
)
instance_tree
.
edit
(
...
...
@@ -66,16 +85,18 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
instance_tree
.
edit
(
title
=
self
.
generateNewSoftwareTitle
(),
reference
=
"TESTHS-%s"
%
self
.
generateNewId
(),
destination_section_value
=
self
.
person
destination_section_value
=
self
.
person
,
follow_up_value
=
project
)
request_kw
=
dict
(
software_release
=
url_string
,
software_type
=
s
elf
.
generateNewSoftwareType
()
,
software_type
=
s
oftware_type
,
instance_xml
=
self
.
generateSafeXml
(),
sla_xml
=
self
.
generateSafeXml
(),
shared
=
shared
,
software_title
=
instance_tree
.
getTitle
(),
state
=
'started'
state
=
'started'
,
project_reference
=
project
.
getReference
()
)
instance_tree
.
requestStart
(
**
request_kw
)
instance_tree
.
requestInstance
(
**
request_kw
)
...
...
@@ -84,30 +105,14 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
self
.
tic
()
return
instance_tree
,
instance
def
_makeTreeForTestSlapOSPDMCreateUpgradeDecisionSkins
(
self
,
software_release_url
):
self
.
instance_tree
,
self
.
instance
=
self
.
_createInstance
(
software_release_url
)
self
.
shared_instance_tree
,
self
.
shared_instance
=
self
.
_createInstance
(
software_release_url
,
True
)
def
_makeTreeForTestSlapOSPDMCreateUpgradeDecisionSkins
(
self
,
software_release_url
,
software_type
,
project
):
self
.
instance_tree
,
self
.
instance
=
self
.
_createInstance
(
software_release_url
,
software_type
,
project
)
self
.
shared_instance_tree
,
self
.
shared_instance
=
self
.
_createInstance
(
software_release_url
,
software_type
,
project
,
True
)
self
.
instance
.
setAggregate
(
self
.
partition
.
getRelativeUrl
())
self
.
shared_instance
.
setAggregate
(
self
.
partition
.
getRelativeUrl
())
self
.
partition
.
markBusy
()
self
.
tic
()
def
afterSetUp
(
self
):
TestSlapOSPDMMixinSkins
.
afterSetUp
(
self
)
preference
=
self
.
portal
.
portal_preferences
.
getActiveSystemPreference
()
preference
.
setPreferredCloudContractEnabled
(
True
)
self
.
tic
()
self
.
_makeComputeNode
()
self
.
_makeSoftwareProductCatalog
()
self
.
_installSoftwareOnTheComputeNode
([
self
.
previous_software_release
.
getUrlString
(),
self
.
new_software_release
.
getUrlString
()
])
self
.
person
=
self
.
makePerson
()
self
.
tic
()
self
.
_makeTreeForTestSlapOSPDMCreateUpgradeDecisionSkins
(
self
.
previous_software_release
.
getUrlString
())
def
test_InstanceTree_createUpgradeDecision_upgradeScopeConfirmation
(
self
):
# check upgrade decision on HS
self
.
instance_tree
.
setUpgradeScope
(
'manual'
)
...
...
@@ -168,7 +173,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -197,7 +202,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
,
allocation_scope
=
"close/outdated"
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -233,7 +238,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
,
allocation_scope
=
"open/personal"
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -267,7 +272,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -308,7 +313,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -348,7 +353,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
@@ -387,7 +392,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
)
self
.
_makeComputePartitions
(
compute_node
)
software_product
=
self
.
_makeSoftwareProduct
()
software_product
=
self
.
_makeSoftwareProduct
(
self
.
project
)
software_release
=
self
.
_requestSoftwareRelease
(
software_product
.
getRelativeUrl
())
url_string
=
software_release
.
getUrlString
()
...
...
master/bt5/slapos_pdm/TestTemplateItem/portal_components/test.erp5.testSlapOSPDMSkins.py
View file @
bdd29231
...
...
@@ -713,7 +713,7 @@ class TestSlapOSPDMSkins(TestSlapOSPDMMixinSkins):
def
testComputeNode_checkAndCreateUpgradeDecision_auto
(
self
):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
,
allocation_scope
=
"open
/public
"
)
allocation_scope
=
"open"
)
compute_node
.
edit
(
upgrade_scope
=
"auto"
)
software_product
=
self
.
_makeSoftwareProduct
()
software_release
=
self
.
_requestSoftwareRelease
(
...
...
@@ -777,7 +777,7 @@ class TestSlapOSPDMSkins(TestSlapOSPDMMixinSkins):
def
testComputeNode_checkAndCreateUpgradeDecision_auto_with_exist
(
self
):
person
=
self
.
_makePerson
()
compute_node
,
_
=
self
.
_makeComputeNode
(
owner
=
person
,
allocation_scope
=
"open
/public
"
)
allocation_scope
=
"open"
)
compute_node
.
edit
(
upgrade_scope
=
"auto"
)
software_product
=
self
.
_makeSoftwareProduct
()
software_release
=
self
.
_requestSoftwareRelease
(
...
...
master/bt5/slapos_pdm/WorkflowTemplateItem/portal_workflow/upgrade_slap_interface_workflow/script_UpgradeDecision_approveRegistration.py
View file @
bdd29231
...
...
@@ -2,12 +2,7 @@ upgrade_decision = state_change["object"]
from
DateTime
import
DateTime
portal
=
upgrade_decision
.
getPortalObject
()
document
=
upgrade_decision
.
UpgradeDecision_getAggregateValue
(
"Instance Tree"
)
if
document
is
None
:
document
=
upgrade_decision
.
UpgradeDecision_getAggregateValue
(
"Compute Node"
)
if
document
is
None
:
raise
ValueError
(
"No Compute Node or Instance Tree associated to upgrade."
)
instance_tree
=
upgrade_decision
.
getAggregateValue
()
# Get required arguments
kwargs
=
state_change
.
kwargs
...
...
@@ -19,7 +14,7 @@ try:
except
KeyError
:
raise
TypeError
(
"UpgradeDecision_approveRegistration takes exactly 1 arguments"
)
tag
=
"%s_requestUpgradeDecisionCreation_inProgress"
%
document
.
getUid
()
tag
=
"%s_requestUpgradeDecisionCreation_inProgress"
%
instance_tree
.
getUid
()
activate_kw
=
{
'tag'
:
tag
}
if
portal
.
portal_activities
.
countMessageWithTag
(
tag
)
>
0
:
# nothing to do
...
...
@@ -35,4 +30,4 @@ with upgrade_decision.defaultActivateParameterDict(activate_kw):
upgrade_decision
.
start
()
# Prevent concurrent transaction to create 2 upgrade decision for the same instance_tree
document
.
serialize
()
instance_tree
.
serialize
()
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