Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
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
HongzheWang
slapos
Commits
329ca8b3
Commit
329ca8b3
authored
May 27, 2021
by
Xavier Thompson
Browse files
Options
Browse Files
Download
Plain Diff
software/theia: Add embedded-instance-parameters option
See merge request
nexedi/slapos!987
parents
24463a79
ebec62b3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
81 additions
and
43 deletions
+81
-43
software/theia/buildout.hash.cfg
software/theia/buildout.hash.cfg
+2
-2
software/theia/instance-input-schema.json
software/theia/instance-input-schema.json
+5
-0
software/theia/instance-theia.cfg.jinja.in
software/theia/instance-theia.cfg.jinja.in
+30
-24
software/theia/instance.cfg.in
software/theia/instance.cfg.in
+20
-15
software/theia/software.cfg
software/theia/software.cfg
+19
-2
software/theia/test/test.py
software/theia/test/test.py
+5
-0
No files found.
software/theia/buildout.hash.cfg
View file @
329ca8b3
...
@@ -15,11 +15,11 @@
...
@@ -15,11 +15,11 @@
[instance-theia]
[instance-theia]
_update_hash_filename_ = instance-theia.cfg.jinja.in
_update_hash_filename_ = instance-theia.cfg.jinja.in
md5sum =
65c66a4cc4eb1d074dcafddf945a34d4
md5sum =
a4211295ecd3919b61abbcd51085971f
[instance]
[instance]
_update_hash_filename_ = instance.cfg.in
_update_hash_filename_ = instance.cfg.in
md5sum =
43923e3e1f27c43696ecbca9ee147bdb
md5sum =
9a5d6ac099c460481af7c1bdfd8de770
[yarn.lock]
[yarn.lock]
_update_hash_filename_ = yarn.lock
_update_hash_filename_ = yarn.lock
...
...
software/theia/instance-input-schema.json
View file @
329ca8b3
...
@@ -24,6 +24,11 @@
...
@@ -24,6 +24,11 @@
"description"
:
"Type of the optional embedded software"
,
"description"
:
"Type of the optional embedded software"
,
"type"
:
"string"
"type"
:
"string"
},
},
"embedded-instance-parameters"
:
{
"title"
:
"Embedded Instance Parameters"
,
"description"
:
"Parameters for the embedded instance, as a JSON dict"
,
"type"
:
"string"
},
"frontend-guid"
:
{
"frontend-guid"
:
{
"title"
:
"Frontend Instance ID"
,
"title"
:
"Frontend Instance ID"
,
"description"
:
"Unique identifier of the frontend instance, like
\"
SOFTINST-11031
\"
."
,
"description"
:
"Unique identifier of the frontend instance, like
\"
SOFTINST-11031
\"
."
,
...
...
software/theia/instance-theia.cfg.jinja.in
View file @
329ca8b3
{% set additional_frontend = slapconfiguration_section['configuration.additional-frontend-guid'] %}
{% set parameter_dict = dict(default_parameter_dict, **parameter_dict) %}
{% set additional_frontend = parameter_dict['additional-frontend-guid'] %}
[buildout]
[buildout]
extends =
extends =
...
@@ -26,12 +27,6 @@ develop-eggs-directory = ${buildout:develop-eggs-directory}
...
@@ -26,12 +27,6 @@ develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
offline = true
[instance-parameter]
{% for k, v in slapconfiguration_section.items() -%}
{{ k }} = {{ v }}
{% endfor -%}
[publish-connection-parameter]
[publish-connection-parameter]
<= monitor-publish
<= monitor-publish
recipe = slapos.cookbook:publish
recipe = slapos.cookbook:publish
...
@@ -142,18 +137,18 @@ return = domain secure_access
...
@@ -142,18 +137,18 @@ return = domain secure_access
[remote-frontend]
[remote-frontend]
<= remote-frontend-base
<= remote-frontend-base
name =
$${instance-parameter:configuration.frontend-name
}
name =
{{ parameter_dict['frontend-name'] }
}
software-url =
$${instance-parameter:configuration.frontend-sr
}
software-url =
{{ parameter_dict['frontend-sr'] }
}
software-type =
$${instance-parameter:configuration.frontend-sr-type
}
software-type =
{{ parameter_dict['frontend-sr-type'] }
}
sla-instance_guid =
$${instance-parameter:configuration.frontend-guid
}
sla-instance_guid =
{{ parameter_dict['frontend-guid'] }
}
{% if additional_frontend %}
{% if additional_frontend %}
[remote-additional-frontend]
[remote-additional-frontend]
<= remote-frontend-base
<= remote-frontend-base
name =
$${instance-parameter:configuration.additional-frontend-name
}
name =
{{ parameter_dict['additional-frontend-name'] }
}
software-url =
$${instance-parameter:configuration.additional-frontend-sr
}
software-url =
{{ parameter_dict['additional-frontend-sr'] }
}
software-type =
$${instance-parameter:configuration.additional-frontend-sr-type
}
software-type =
{{ parameter_dict['additional-frontend-sr-type'] }
}
sla-instance_guid =
$${instance-parameter:configuration.additional-frontend-guid
}
sla-instance_guid =
{{ parameter_dict['additional-frontend-guid'] }
}
{% endif %}
{% endif %}
...
@@ -169,7 +164,7 @@ bytes = 12
...
@@ -169,7 +164,7 @@ bytes = 12
recipe = slapos.cookbook:free_port
recipe = slapos.cookbook:free_port
minimum = 3000
minimum = 3000
maximum = 3100
maximum = 3100
ip =
$${instance-parameter:ipv6-random
}
ip =
{{ ipv6_random }
}
[frontend-instance-certificate]
[frontend-instance-certificate]
recipe = plone.recipe.command
recipe = plone.recipe.command
...
@@ -325,7 +320,7 @@ template =
...
@@ -325,7 +320,7 @@ template =
recipe = slapos.cookbook:free_port
recipe = slapos.cookbook:free_port
minimum = 3500
minimum = 3500
maximum = 3600
maximum = 3600
ip =
$${instance-parameter:ipv4-random
}
ip =
{{ ipv4_random }
}
[theia-service]
[theia-service]
recipe = slapos.recipe.template:jinja2
recipe = slapos.recipe.template:jinja2
...
@@ -360,7 +355,7 @@ command-line = $${theia-service:rendered} --hostname=$${:hostname} --port=$${:p
...
@@ -360,7 +355,7 @@ command-line = $${theia-service:rendered} --hostname=$${:hostname} --port=$${:p
hash-existing-files =
hash-existing-files =
${yarn.lock:output}
${yarn.lock:output}
${theia-wrapper:rendered}
${theia-wrapper:rendered}
ip =
$${instance-parameter:ipv4-random
}
ip =
{{ ipv4_random }
}
hostname = $${:ip}
hostname = $${:ip}
port = $${theia-service:port}
port = $${theia-service:port}
base-url = $${theia-service:base-url}
base-url = $${theia-service:base-url}
...
@@ -416,11 +411,11 @@ command =
...
@@ -416,11 +411,11 @@ command =
recipe = slapos.cookbook:free_port
recipe = slapos.cookbook:free_port
minimum = 4000
minimum = 4000
maximum = 4100
maximum = 4100
ip =
$${instance-parameter:ipv4-random
}
ip =
{{ ipv4_random }
}
[slapos-standalone-config]
[slapos-standalone-config]
ipv4 =
$${instance-parameter:ipv4-random
}
ipv4 =
{{ ipv4_random }
}
ipv6 =
$${instance-parameter:ipv6-random
}
ipv6 =
{{ ipv6_random }
}
port = $${slapos-standalone-port:port}
port = $${slapos-standalone-port:port}
slapos-configuration = $${directory:runner}/etc/slapos.cfg
slapos-configuration = $${directory:runner}/etc/slapos.cfg
computer-id = slaprunner
computer-id = slaprunner
...
@@ -451,8 +446,11 @@ template =
...
@@ -451,8 +446,11 @@ template =
$${slapos-standalone-config:ipv6} \
$${slapos-standalone-config:ipv6} \
$${slapos-standalone-config:port} \
$${slapos-standalone-config:port} \
$${slapos-standalone-config:computer-id} \
$${slapos-standalone-config:computer-id} \
--sr='$${instance-parameter:configuration.embedded-sr}' \
{% if parameter_dict.get('embedded-sr') %} \
--srtype='$${instance-parameter:configuration.embedded-sr-type}' \
--sr='{{ parameter_dict['embedded-sr'] }}' \
--srtype='{{ parameter_dict['embedded-sr-type'] }}' \
--srparams='$${embedded-instance-parameters:rendered}' \
{% endif %} \
$${slap-connection:server-url} \
$${slap-connection:server-url} \
$${slap-connection:computer-id} \
$${slap-connection:computer-id} \
$${slap-connection:partition-id} \
$${slap-connection:partition-id} \
...
@@ -482,7 +480,7 @@ command =
...
@@ -482,7 +480,7 @@ command =
update-command = $${:command}
update-command = $${:command}
service-name = slapos-node-auto
service-name = slapos-node-auto
supervisor-conf = $${directory:runner}/etc/supervisord.conf
supervisor-conf = $${directory:runner}/etc/supervisord.conf
autorun =
$${instance-parameter:configuration.autorun
}
autorun =
{{ parameter_dict['autorun'] }
}
# Theia Local Environment Setup
# Theia Local Environment Setup
...
@@ -579,6 +577,14 @@ recipe = slapos.cookbook:symbolic.link
...
@@ -579,6 +577,14 @@ recipe = slapos.cookbook:symbolic.link
target-directory = $${directory:project}
target-directory = $${directory:project}
link-binary = $${directory:runner}
link-binary = $${directory:runner}
{% if parameter_dict.get('embedded-sr') -%}
[embedded-instance-parameters]
recipe = slapos.recipe.template:jinja2
rendered = $${directory:etc}/$${:_buildout_section_name_}.json
template =
inline:{{ parameter_dict['embedded-instance-parameters'] | indent(2) }}
{%- endif %}
[request-script-template]
[request-script-template]
recipe = slapos.recipe.template:jinja2
recipe = slapos.recipe.template:jinja2
rendered = $${directory:project}/$${:_buildout_section_name_}.sh
rendered = $${directory:project}/$${:_buildout_section_name_}.sh
...
...
software/theia/instance.cfg.in
View file @
329ca8b3
...
@@ -12,20 +12,6 @@ partition = $${slap-connection:partition-id}
...
@@ -12,20 +12,6 @@ partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
cert = $${slap-connection:cert-file}
;Theia default configuration
configuration.autorun = running
configuration.embedded-sr =
configuration.embedded-sr-type =
;Frontend default configuration
configuration.frontend-name = Theia Frontend
configuration.frontend-sr = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
configuration.frontend-sr-type = RootSoftwareInstance
configuration.frontend-guid =
;Additional frontend default configuration
configuration.additional-frontend-name = Theia Additional Frontend
configuration.additional-frontend-sr = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
configuration.additional-frontend-sr-type = RootSoftwareInstance
configuration.additional-frontend-guid =
[switch-softwaretype]
[switch-softwaretype]
recipe = slapos.cookbook:switch-softwaretype
recipe = slapos.cookbook:switch-softwaretype
...
@@ -39,4 +25,23 @@ template = ${instance-theia:output}
...
@@ -39,4 +25,23 @@ template = ${instance-theia:output}
rendered = $${buildout:directory}/instance-theia.cfg
rendered = $${buildout:directory}/instance-theia.cfg
mode = 0644
mode = 0644
context =
context =
section slapconfiguration_section slap-configuration
jsonkey default_parameter_dict :default-parameters
key parameter_dict slap-configuration:configuration
key ipv6_random slap-configuration:ipv6-random
key ipv4_random slap-configuration:ipv4-random
default-parameters =
{
"autorun": "running",
"embedded-sr": null,
"embedded-sr-type": null,
"embedded-instance-parameters": "null",
"frontend-name": "Theia Frontend",
"frontend-sr": "$${:frontend-sr}",
"frontend-sr-type": "RootSoftwareInstance",
"frontend-guid": null,
"additional-frontend-name":"Theia Additional Frontend",
"additional-frontend-sr": "$${:frontend-sr}",
"additional-frontend-sr-type": "RootSoftwareInstance",
"additional-frontend-guid": null
}
frontend-sr = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
software/theia/software.cfg
View file @
329ca8b3
...
@@ -53,6 +53,7 @@ entry-points =
...
@@ -53,6 +53,7 @@ entry-points =
initialization =
initialization =
import argparse
import argparse
import glob
import glob
import json
import os.path
import os.path
import sys
import sys
import signal
import signal
...
@@ -68,6 +69,7 @@ initialization =
...
@@ -68,6 +69,7 @@ initialization =
parser.add_argument('computer_id')
parser.add_argument('computer_id')
parser.add_argument('--sr')
parser.add_argument('--sr')
parser.add_argument('--srtype')
parser.add_argument('--srtype')
parser.add_argument('--srparams')
forwarded_arguments = parser.add_argument_group('forwarded')
forwarded_arguments = parser.add_argument_group('forwarded')
forwarded_arguments.add_argument('master_url')
forwarded_arguments.add_argument('master_url')
forwarded_arguments.add_argument('computer')
forwarded_arguments.add_argument('computer')
...
@@ -118,9 +120,24 @@ initialization =
...
@@ -118,9 +120,24 @@ initialization =
print("Error instanciating: {}".format(e))
print("Error instanciating: {}".format(e))
if args.sr:
if args.sr:
print("Supplying and Requesting Embedded Software {}".format(args.sr))
try:
with open(args.srparams) as f:
params = json.load(f)
except Exception:
params = None
if not isinstance(params, dict):
params = None
print("Supplying and Requesting Embedded Software {sr} with type {srtype}".format(
sr=args.sr, srtype=args.srtype))
print("With parameters {param_dict} parsed from '{srparams}'".format(
param_dict=params, srparams=args.srparams))
standalone.supply(args.sr)
standalone.supply(args.sr)
standalone.request(args.sr, "Embedded Instance", args.srtype or None)
standalone.request(
args.sr,
"Embedded Instance",
args.srtype or None,
partition_parameter_kw=params,
)
quit_requested = []
quit_requested = []
def signal_handler(signum, frame):
def signal_handler(signum, frame):
...
...
software/theia/test/test.py
View file @
329ca8b3
...
@@ -232,12 +232,14 @@ class TestTheiaEmbeddedSlapOSShutdown(TheiaTestCase):
...
@@ -232,12 +232,14 @@ class TestTheiaEmbeddedSlapOSShutdown(TheiaTestCase):
class
TestTheiaWithSR
(
TheiaTestCase
):
class
TestTheiaWithSR
(
TheiaTestCase
):
sr_url
=
'bogus/software.cfg'
sr_url
=
'bogus/software.cfg'
sr_type
=
'bogus_type'
sr_type
=
'bogus_type'
instance_parameters
=
'{
\
n
"bogus_param": "bogus_value"
\
n
}'
@
classmethod
@
classmethod
def
getInstanceParameterDict
(
cls
):
def
getInstanceParameterDict
(
cls
):
return
{
return
{
'embedded-sr'
:
cls
.
sr_url
,
'embedded-sr'
:
cls
.
sr_url
,
'embedded-sr-type'
:
cls
.
sr_type
,
'embedded-sr-type'
:
cls
.
sr_type
,
'embedded-instance-parameters'
:
cls
.
instance_parameters
}
}
def
test
(
self
):
def
test
(
self
):
...
@@ -248,6 +250,9 @@ class TestTheiaWithSR(TheiaTestCase):
...
@@ -248,6 +250,9 @@ class TestTheiaWithSR(TheiaTestCase):
self
.
assertIsNotNone
(
re
.
search
(
r"%s\
s+sl
aprunner\
s+
available"
%
(
self
.
sr_url
,),
info
),
info
)
self
.
assertIsNotNone
(
re
.
search
(
r"%s\
s+sl
aprunner\
s+
available"
%
(
self
.
sr_url
,),
info
),
info
)
self
.
assertIsNotNone
(
re
.
search
(
r"%s\
s+%s
\s+%s"
%
(
self
.
sr_url
,
self
.
sr_type
,
instance_name
),
info
),
info
)
self
.
assertIsNotNone
(
re
.
search
(
r"%s\
s+%s
\s+%s"
%
(
self
.
sr_url
,
self
.
sr_type
,
instance_name
),
info
),
info
)
service_info
=
subprocess
.
check_output
((
slapos
,
'service'
,
'info'
,
instance_name
),
universal_newlines
=
True
)
self
.
assertIn
(
"{'bogus_param': 'bogus_value'}"
,
service_info
)
class
TestTheiaFrontend
(
TheiaTestCase
):
class
TestTheiaFrontend
(
TheiaTestCase
):
@
classmethod
@
classmethod
...
...
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