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
3abbbbfd
Commit
3abbbbfd
authored
Sep 22, 2022
by
Cédric Le Ninivin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapgrid: Update retrieve certificate to specific record
parent
dbf31d66
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
30 deletions
+56
-30
slapos/grid/SlapObject.py
slapos/grid/SlapObject.py
+2
-12
slapos/grid/slapgrid.py
slapos/grid/slapgrid.py
+17
-4
slapos/tests/test_slapgrid.py
slapos/tests/test_slapgrid.py
+37
-14
No files found.
slapos/grid/SlapObject.py
View file @
3abbbbfd
...
...
@@ -486,25 +486,15 @@ class Partition(object):
available
=
bytes2human
(
available
),
required
=
bytes2human
(
required
)))
def
_updateCertificate
(
self
):
def
_updateCertificate
(
self
,
partition_certificates
):
if
not
self
.
key_file
or
not
self
.
cert_file
:
# Certificate files are unset, skip.
return
if
self
.
api_backward_compatibility
:
try
:
partition_certificate
=
self
.
computer_partition
[
"slap_partition"
].
getCertificate
()
self
.
computer_partition
[
"X509"
]
=
{}
self
.
computer_partition
[
"X509"
][
"certificate"
]
=
partition_certificate
[
"certificate"
]
self
.
computer_partition
[
"X509"
][
"key"
]
=
partition_certificate
[
"key"
]
except
NotFoundError
:
raise
NotFoundError
(
'Partition %s is not known by SlapOS Master.'
%
self
.
partition_id
)
uid
,
gid
=
self
.
getUserGroupId
()
for
name
,
path
in
[(
'certificate'
,
self
.
cert_file
),
(
'key'
,
self
.
key_file
)]:
new_content
=
self
.
computer_partition
[
"X509"
]
[
name
]
new_content
=
partition_certificates
[
name
]
old_content
=
None
if
os
.
path
.
exists
(
path
):
old_content
=
open
(
path
).
read
()
...
...
slapos/grid/slapgrid.py
View file @
3abbbbfd
...
...
@@ -1160,6 +1160,19 @@ stderr_logfile_backups=1
self
.
_checkAddFirewallRules
(
computer_partition
.
get
(
"compute_partition_id"
),
cmd_list
,
add
=
add_rules
)
def
retrieveCertificates
(
self
,
computer_partition
):
if
not
self
.
api_backward_compatibility
:
partition_certificates
=
self
.
slap
.
jio_api_connector
.
get
({
"portal_type"
:
"Software Instance Certificate Record"
,
"reference"
:
computer_partition
.
get
(
"reference"
),
})
else
:
try
:
partition_certificates
=
computer_partition
[
"slap_partition"
].
getCertificate
()
except
NotFoundError
:
raise
NotFoundError
(
'Partition %s is not known by SlapOS Master.'
%
computer_partition
.
get
(
"reference"
))
return
partition_certificates
def
_checkPromiseAnomaly
(
self
,
local_partition
,
computer_partition
):
partition_access_status
=
computer_partition
.
get
(
"access_status_message"
,
""
)
status_error
=
False
...
...
@@ -1172,11 +1185,11 @@ stderr_logfile_backups=1
except
PromiseError
as
e
:
self
.
logger
.
error
(
e
)
if
partition_access_status
is
None
or
not
status_error
:
local_partition
.
_updateCertificate
()
local_partition
.
_updateCertificate
(
self
.
retrieveCertificates
(
computer_partition
)
)
self
.
sendPartitionError
(
computer_partition
,
e
,
logger
=
self
.
logger
)
else
:
if
partition_access_status
is
None
or
status_error
:
local_partition
.
_updateCertificate
()
local_partition
.
_updateCertificate
(
self
.
retrieveCertificates
(
computer_partition
)
)
if
not
self
.
api_backward_compatibility
:
self
.
slap
.
jio_api_connector
.
put
({
"portal_type"
:
"Software Instance"
,
...
...
@@ -1392,7 +1405,7 @@ stderr_logfile_backups=1
self
.
logger
.
info
(
' jIO API used: %s'
%
(
not
self
.
api_backward_compatibility
))
# Update certifcate at late as possible
local_partition
.
_updateCertificate
()
local_partition
.
_updateCertificate
(
self
.
retrieveCertificates
(
computer_partition
)
)
# XXX this line breaks 37 tests
# self.logger.info(' Instance type: %s' % computer_partition.get("software_type"))
...
...
@@ -2009,7 +2022,7 @@ stderr_logfile_backups=1
api_backward_compatibility
=
self
.
api_backward_compatibility
,
)
local_partition
.
stop
()
local_partition
.
_updateCertificate
()
local_partition
.
_updateCertificate
(
self
.
retrieveCertificates
(
computer_partition
)
)
try
:
if
not
self
.
api_backward_compatibility
:
self
.
slap
.
jio_api_connector
.
put
({
...
...
slapos/tests/test_slapgrid.py
View file @
3abbbbfd
This diff is collapsed.
Click to expand it.
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