stoobly-agent 1.6.6__py3-none-any.whl → 1.6.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- stoobly_agent/__init__.py +1 -1
- stoobly_agent/app/cli/scaffold/constants.py +1 -0
- stoobly_agent/app/cli/scaffold/docker/service/builder.py +98 -13
- stoobly_agent/app/cli/scaffold/docker/workflow/builder.py +12 -60
- stoobly_agent/app/cli/scaffold/service_create_command.py +1 -1
- stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml +4 -2
- stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml +2 -2
- stoobly_agent/app/cli/scaffold/templates/app/build/mock/docker-compose.yml +7 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/record/.docker-compose.record.yml +2 -2
- stoobly_agent/app/cli/scaffold/templates/app/build/record/docker-compose.yml +7 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/test/.docker-compose.test.yml +2 -2
- stoobly_agent/app/cli/scaffold/templates/app/build/test/docker-compose.yml +7 -0
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml +4 -5
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/docker-compose.yml +4 -11
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/docker-compose.yml +3 -6
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/docker-compose.yml +3 -6
- stoobly_agent/app/cli/scaffold/templates/build/services/build/mock/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/services/build/record/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/services/build/test/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/mock/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/record/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/test/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/workflows/mock/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/workflows/record/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/build/workflows/test/.init +1 -1
- stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/configure +2 -2
- stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/init +3 -1
- stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/configure +4 -4
- stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/init +3 -1
- stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/configure +2 -2
- stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/init +3 -1
- stoobly_agent/app/cli/scaffold/workflow_create_command.py +4 -2
- stoobly_agent/app/cli/scaffold_cli.py +2 -2
- stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +1 -1
- {stoobly_agent-1.6.6.dist-info → stoobly_agent-1.6.7.dist-info}/METADATA +1 -1
- {stoobly_agent-1.6.6.dist-info → stoobly_agent-1.6.7.dist-info}/RECORD +42 -39
- {stoobly_agent-1.6.6.dist-info → stoobly_agent-1.6.7.dist-info}/WHEEL +1 -1
- {stoobly_agent-1.6.6.dist-info → stoobly_agent-1.6.7.dist-info}/LICENSE +0 -0
- {stoobly_agent-1.6.6.dist-info → stoobly_agent-1.6.7.dist-info}/entry_points.txt +0 -0
stoobly_agent/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
COMMAND = 'stoobly-agent'
|
2
|
-
VERSION = '1.6.
|
2
|
+
VERSION = '1.6.7'
|
@@ -1,8 +1,17 @@
|
|
1
1
|
import os
|
2
2
|
import pdb
|
3
3
|
|
4
|
+
from typing import List
|
5
|
+
|
6
|
+
from stoobly_agent.config.data_dir import DATA_DIR_NAME
|
7
|
+
|
4
8
|
from ...app_config import AppConfig
|
5
|
-
from ...constants import
|
9
|
+
from ...constants import (
|
10
|
+
APP_DIR, DOCKER_NAMESPACE, SERVICE_NAME, SERVICE_NAME_ENV,
|
11
|
+
SERVICE_HOSTNAME, SERVICE_HOSTNAME_ENV, SERVICE_NAME_ENV, SERVICE_PORT, SERVICE_PORT_ENV, SERVICE_SCHEME, SERVICE_SCHEME_ENV,
|
12
|
+
STOOBLY_HOME_DIR, STOOBLY_HOME_DIR,
|
13
|
+
WORKFLOW_NAME, WORKFLOW_NAME_ENV, WORKFLOW_SCRIPTS, WORKFLOW_TEMPLATE
|
14
|
+
)
|
6
15
|
from ...service_config import ServiceConfig
|
7
16
|
from ..app_builder import AppBuilder
|
8
17
|
from ..builder import Builder
|
@@ -20,16 +29,16 @@ class ServiceBuilder(Builder):
|
|
20
29
|
self.app_builder = app_builder
|
21
30
|
|
22
31
|
self.__config = config
|
32
|
+
self.__env = [SERVICE_NAME_ENV, WORKFLOW_NAME_ENV]
|
23
33
|
self.__service_name = os.path.basename(service_path)
|
34
|
+
self.__working_dir = os.path.join(
|
35
|
+
STOOBLY_HOME_DIR, DATA_DIR_NAME, DOCKER_NAMESPACE, SERVICE_NAME, WORKFLOW_NAME
|
36
|
+
)
|
24
37
|
|
25
38
|
@property
|
26
39
|
def app_base(self):
|
27
40
|
return f"{self.service_name}.app_base"
|
28
41
|
|
29
|
-
@property
|
30
|
-
def init_base(self):
|
31
|
-
return f"{self.service_name}.init_base"
|
32
|
-
|
33
42
|
@property
|
34
43
|
def config(self):
|
35
44
|
return self.__config
|
@@ -49,6 +58,14 @@ class ServiceBuilder(Builder):
|
|
49
58
|
else:
|
50
59
|
return self.app_builder.context_base
|
51
60
|
|
61
|
+
@property
|
62
|
+
def init_base(self):
|
63
|
+
return f"{self.service_name}.init_base"
|
64
|
+
|
65
|
+
@property
|
66
|
+
def init_base_service(self):
|
67
|
+
return self.services.get(self.init_base)
|
68
|
+
|
52
69
|
@property
|
53
70
|
def proxy_base(self):
|
54
71
|
return f"{self.service_name}.proxy_base"
|
@@ -74,15 +91,45 @@ class ServiceBuilder(Builder):
|
|
74
91
|
if not self.config.hostname:
|
75
92
|
return
|
76
93
|
|
77
|
-
self.
|
94
|
+
environment = { **self.env_dict() }
|
95
|
+
volumes = []
|
96
|
+
|
97
|
+
environment['VIRTUAL_HOST'] = SERVICE_HOSTNAME
|
98
|
+
environment['VIRTUAL_PORT'] = SERVICE_PORT
|
99
|
+
environment['VIRTUAL_PROTO'] = SERVICE_SCHEME
|
100
|
+
|
101
|
+
if self.config.detached:
|
102
|
+
volumes.append(f"{self.service_name}:{STOOBLY_HOME_DIR}/{DATA_DIR_NAME}")
|
103
|
+
volumes.append(f"../..:{STOOBLY_HOME_DIR}/{DATA_DIR_NAME}/{DOCKER_NAMESPACE}")
|
104
|
+
|
105
|
+
base = {
|
106
|
+
'environment': environment,
|
78
107
|
'extends': {
|
79
108
|
'file': os.path.relpath(self.app_builder.compose_file_path, self.dir_path),
|
80
109
|
'service': self.extends_service
|
81
110
|
},
|
82
|
-
|
111
|
+
'working_dir': self.__working_dir,
|
112
|
+
}
|
113
|
+
|
114
|
+
if len(volumes):
|
115
|
+
base['volumes'] = volumes
|
116
|
+
|
117
|
+
self.with_service(self.proxy_base, base)
|
83
118
|
|
84
119
|
def build_init_base(self):
|
85
|
-
environment = {}
|
120
|
+
environment = { **self.env_dict() }
|
121
|
+
volumes = [f"{APP_DIR}:/app"]
|
122
|
+
|
123
|
+
if self.config.hostname:
|
124
|
+
self.__with_url_environment(environment)
|
125
|
+
|
126
|
+
if self.config.detached:
|
127
|
+
# Mount named volume
|
128
|
+
volumes.append(f"{self.service_name}:{STOOBLY_HOME_DIR}/{DATA_DIR_NAME}")
|
129
|
+
|
130
|
+
# Mount docker folder
|
131
|
+
volumes.append(f"../..:{STOOBLY_HOME_DIR}/{DATA_DIR_NAME}/{DOCKER_NAMESPACE}")
|
132
|
+
|
86
133
|
self.with_service(self.init_base, {
|
87
134
|
'command': [f"{WORKFLOW_SCRIPTS}/{WORKFLOW_TEMPLATE}/.init", 'bin/init'],
|
88
135
|
'environment': environment,
|
@@ -90,18 +137,47 @@ class ServiceBuilder(Builder):
|
|
90
137
|
'file': os.path.relpath(self.app_builder.compose_file_path, self.dir_path),
|
91
138
|
'service': self.extends_service
|
92
139
|
},
|
140
|
+
'volumes': volumes,
|
141
|
+
'working_dir': self.__working_dir,
|
93
142
|
})
|
94
143
|
|
95
144
|
def build_configure_base(self):
|
96
|
-
environment = {}
|
97
|
-
|
145
|
+
environment = { **self.env_dict() }
|
146
|
+
volumes = []
|
147
|
+
|
148
|
+
if self.config.hostname:
|
149
|
+
self.__with_url_environment(environment)
|
150
|
+
|
151
|
+
if self.config.detached:
|
152
|
+
volumes.append(f"{self.service_name}:{STOOBLY_HOME_DIR}/${DATA_DIR_NAME}")
|
153
|
+
volumes.append(f"../..:{STOOBLY_HOME_DIR}/{DATA_DIR_NAME}/{DOCKER_NAMESPACE}")
|
154
|
+
|
155
|
+
base = {
|
98
156
|
'command': [f"{WORKFLOW_SCRIPTS}/{WORKFLOW_TEMPLATE}/.configure", 'bin/configure'],
|
99
157
|
'environment': environment,
|
100
158
|
'extends': {
|
101
159
|
'file': os.path.relpath(self.app_builder.compose_file_path, self.dir_path),
|
102
160
|
'service': self.extends_service
|
103
|
-
}
|
104
|
-
|
161
|
+
},
|
162
|
+
'working_dir': self.__working_dir,
|
163
|
+
}
|
164
|
+
|
165
|
+
if len(volumes):
|
166
|
+
base['volumes'] = volumes
|
167
|
+
|
168
|
+
self.with_service(self.configure_base, base)
|
169
|
+
|
170
|
+
def env_dict(self):
|
171
|
+
env = {}
|
172
|
+
for e in self.__env:
|
173
|
+
env[e] = '${' + e + '}'
|
174
|
+
return env
|
175
|
+
|
176
|
+
def with_env(self, v: List[str]):
|
177
|
+
if not isinstance(v, list):
|
178
|
+
return self
|
179
|
+
self.__env += v
|
180
|
+
return self
|
105
181
|
|
106
182
|
def write(self):
|
107
183
|
self.build_init_base()
|
@@ -117,4 +193,13 @@ class ServiceBuilder(Builder):
|
|
117
193
|
if self.networks:
|
118
194
|
compose['networks'] = self.networks
|
119
195
|
|
120
|
-
super().write(compose)
|
196
|
+
super().write(compose)
|
197
|
+
|
198
|
+
def __with_url_environment(self, environment):
|
199
|
+
environment[SERVICE_HOSTNAME_ENV] = SERVICE_HOSTNAME
|
200
|
+
|
201
|
+
if self.config.scheme:
|
202
|
+
environment[SERVICE_SCHEME_ENV] = SERVICE_SCHEME
|
203
|
+
|
204
|
+
if self.config.port:
|
205
|
+
environment[SERVICE_PORT_ENV] = SERVICE_PORT
|
@@ -1,14 +1,10 @@
|
|
1
1
|
import os
|
2
2
|
import pdb
|
3
3
|
|
4
|
-
from typing import List
|
5
|
-
|
6
|
-
from stoobly_agent.config.data_dir import DATA_DIR_NAME
|
7
|
-
|
8
4
|
from ...constants import (
|
9
|
-
COMPOSE_TEMPLATE,
|
10
|
-
SERVICE_PORT, SERVICE_PORT_ENV, SERVICE_SCHEME, SERVICE_SCHEME_ENV,
|
11
|
-
WORKFLOW_CONTAINER_CONFIGURE_TEMPLATE, WORKFLOW_CONTAINER_INIT_TEMPLATE, WORKFLOW_CONTAINER_PROXY_TEMPLATE, WORKFLOW_NAME_ENV
|
5
|
+
COMPOSE_TEMPLATE, SERVICE_HOSTNAME,
|
6
|
+
SERVICE_HOSTNAME_ENV, SERVICE_NAME_ENV, SERVICE_PORT, SERVICE_PORT_ENV, SERVICE_SCHEME, SERVICE_SCHEME_ENV,
|
7
|
+
WORKFLOW_CONTAINER_CONFIGURE_TEMPLATE, WORKFLOW_CONTAINER_INIT_TEMPLATE, WORKFLOW_CONTAINER_PROXY_TEMPLATE, WORKFLOW_NAME, WORKFLOW_NAME_ENV
|
12
8
|
)
|
13
9
|
from ..builder import Builder
|
14
10
|
from ..service.builder import ServiceBuilder
|
@@ -21,16 +17,13 @@ class WorkflowBuilder(Builder):
|
|
21
17
|
super().__init__(workflow_path, COMPOSE_TEMPLATE.format(workflow=self.__workflow_name))
|
22
18
|
|
23
19
|
self.__context = '../'
|
24
|
-
self.__profiles = [
|
20
|
+
self.__profiles = [WORKFLOW_NAME]
|
25
21
|
|
26
22
|
if not service_builder:
|
27
23
|
service_path = os.path.dirname(workflow_path)
|
28
24
|
service_builder = ServiceBuilder(service_path)
|
29
25
|
|
30
26
|
self.__service_builder = service_builder
|
31
|
-
self.__working_dir = os.path.join(
|
32
|
-
STOOBLY_HOME_DIR, DATA_DIR_NAME, DOCKER_NAMESPACE, self.service_builder.service_name, self.workflow_name
|
33
|
-
)
|
34
27
|
|
35
28
|
@property
|
36
29
|
def app(self):
|
@@ -40,10 +33,6 @@ class WorkflowBuilder(Builder):
|
|
40
33
|
def base_compose_file_path(self):
|
41
34
|
return os.path.relpath(self.service_builder.compose_file_path, self.dir_path)
|
42
35
|
|
43
|
-
@property
|
44
|
-
def init(self):
|
45
|
-
return WORKFLOW_CONTAINER_INIT_TEMPLATE.format(service_name=self.namespace)
|
46
|
-
|
47
36
|
@property
|
48
37
|
def config(self):
|
49
38
|
return self.service_builder.config
|
@@ -60,6 +49,10 @@ class WorkflowBuilder(Builder):
|
|
60
49
|
def context_docker_file_path(self):
|
61
50
|
return os.path.relpath(self.service_builder.app_builder.context_docker_file_path, self.service_path)
|
62
51
|
|
52
|
+
@property
|
53
|
+
def init(self):
|
54
|
+
return WORKFLOW_CONTAINER_INIT_TEMPLATE.format(service_name=self.namespace)
|
55
|
+
|
63
56
|
@property
|
64
57
|
def namespace(self):
|
65
58
|
return f"{self.service_builder.service_name}"
|
@@ -97,26 +90,16 @@ class WorkflowBuilder(Builder):
|
|
97
90
|
self.build_proxy() # Depends on configure, must call build_configure first
|
98
91
|
|
99
92
|
def build_init(self):
|
100
|
-
|
101
|
-
|
93
|
+
# If the init_base service does not exist, we can't extend from it, return
|
94
|
+
if not self.service_builder.init_base_service:
|
95
|
+
return
|
102
96
|
|
97
|
+
return
|
103
98
|
service = {
|
104
|
-
'environment': environment,
|
105
99
|
'extends': self.service_builder.build_extends_init_base(self.dir_path),
|
106
100
|
'profiles': self.profiles,
|
107
|
-
'volumes': volumes,
|
108
|
-
'working_dir': self.__working_dir,
|
109
101
|
}
|
110
102
|
|
111
|
-
if self.config.hostname:
|
112
|
-
self.__with_url_environment(environment)
|
113
|
-
|
114
|
-
if self.config.detached:
|
115
|
-
# Mount named volume
|
116
|
-
volumes.append(f"{self.service_builder.service_name}:{STOOBLY_HOME_DIR}/.stoobly")
|
117
|
-
# Mount docker folder
|
118
|
-
volumes.append(f"../..:{STOOBLY_HOME_DIR}/.stoobly/docker")
|
119
|
-
|
120
103
|
self.with_service(self.init, service)
|
121
104
|
|
122
105
|
def build_configure(self):
|
@@ -125,30 +108,18 @@ class WorkflowBuilder(Builder):
|
|
125
108
|
return
|
126
109
|
|
127
110
|
depends_on = {}
|
128
|
-
environment = { **self.env_dict() }
|
129
|
-
volumes = []
|
130
111
|
|
131
112
|
service = {
|
132
113
|
'depends_on': depends_on,
|
133
|
-
'environment': environment,
|
134
114
|
'extends': self.service_builder.build_extends_configure_base(self.dir_path),
|
135
115
|
'profiles': self.profiles,
|
136
|
-
'volumes': volumes,
|
137
|
-
'working_dir': self.__working_dir,
|
138
116
|
}
|
139
117
|
|
140
|
-
if self.config.hostname:
|
141
|
-
self.__with_url_environment(environment)
|
142
|
-
|
143
118
|
if self.init in self.services:
|
144
119
|
depends_on[self.init] = {
|
145
120
|
'condition': 'service_completed_successfully',
|
146
121
|
}
|
147
122
|
|
148
|
-
if self.config.detached:
|
149
|
-
volumes.append(f"{self.service_builder.service_name}:{STOOBLY_HOME_DIR}/.stoobly")
|
150
|
-
volumes.append(f"../..:{STOOBLY_HOME_DIR}/.stoobly/docker")
|
151
|
-
|
152
123
|
self.with_service(self.configure, service)
|
153
124
|
|
154
125
|
def build_proxy(self):
|
@@ -157,18 +128,13 @@ class WorkflowBuilder(Builder):
|
|
157
128
|
return
|
158
129
|
|
159
130
|
depends_on = {}
|
160
|
-
environment = { **self.env_dict() }
|
161
131
|
networks = {}
|
162
|
-
volumes = []
|
163
132
|
|
164
133
|
service = {
|
165
134
|
'depends_on': depends_on,
|
166
|
-
'environment': environment,
|
167
135
|
'extends': self.service_builder.build_extends_proxy_base(self.dir_path),
|
168
136
|
'networks': networks,
|
169
137
|
'profiles': self.profiles,
|
170
|
-
'volumes': volumes,
|
171
|
-
'working_dir': self.__working_dir,
|
172
138
|
}
|
173
139
|
|
174
140
|
if self.configure in self.services:
|
@@ -180,18 +146,10 @@ class WorkflowBuilder(Builder):
|
|
180
146
|
'condition': 'service_completed_successfully',
|
181
147
|
}
|
182
148
|
|
183
|
-
environment['VIRTUAL_HOST'] = SERVICE_HOSTNAME
|
184
|
-
environment['VIRTUAL_PORT'] = SERVICE_PORT
|
185
|
-
environment['VIRTUAL_PROTO'] = SERVICE_SCHEME
|
186
|
-
|
187
149
|
# Expose this container service to the public network
|
188
150
|
# so that it is accessible to other Stoobly services
|
189
151
|
networks[self.egress_network_name] = {}
|
190
152
|
|
191
|
-
if self.config.detached:
|
192
|
-
volumes.append(f"{self.service_builder.service_name}:{STOOBLY_HOME_DIR}/.stoobly")
|
193
|
-
volumes.append(f"../..:{STOOBLY_HOME_DIR}/.stoobly/docker")
|
194
|
-
|
195
153
|
self.with_service(self.proxy, service)
|
196
154
|
|
197
155
|
def env_dict(self):
|
@@ -213,12 +171,6 @@ class WorkflowBuilder(Builder):
|
|
213
171
|
|
214
172
|
super().write(compose, dest)
|
215
173
|
|
216
|
-
def with_env(self, v: List[str]):
|
217
|
-
if not isinstance(v, list):
|
218
|
-
return self
|
219
|
-
self._env += v
|
220
|
-
return self
|
221
|
-
|
222
174
|
def write(self):
|
223
175
|
compose = {
|
224
176
|
'services': self.services,
|
@@ -27,6 +27,7 @@ class ServiceCreateCommand(ServiceCommand):
|
|
27
27
|
|
28
28
|
def build(self):
|
29
29
|
service_builder = ServiceBuilder(self.service_config)
|
30
|
+
service_builder.with_env(list(self.env_vars))
|
30
31
|
service_decorators = []
|
31
32
|
|
32
33
|
for service_decorator in service_decorators:
|
@@ -36,7 +37,6 @@ class ServiceCreateCommand(ServiceCommand):
|
|
36
37
|
|
37
38
|
workflow_kwargs = {
|
38
39
|
'app_dir_path': self.app_dir_path,
|
39
|
-
'env': self.env_vars,
|
40
40
|
'namespace': self.namespace,
|
41
41
|
'service_name': self.service_name,
|
42
42
|
}
|
@@ -6,7 +6,7 @@ services:
|
|
6
6
|
extends:
|
7
7
|
file: ../.docker-compose.base.yml
|
8
8
|
service: context_base
|
9
|
-
working_dir: /home/stoobly/.stoobly/docker
|
9
|
+
working_dir: /home/stoobly/.stoobly/docker/${SERVICE_NAME}/${WORKFLOW_NAME}
|
10
10
|
build.init_base:
|
11
11
|
command:
|
12
12
|
- ${SERVICE_SCRIPTS}/${SERVICE_NAME}/${WORKFLOW_TEMPLATE}/.init
|
@@ -14,4 +14,6 @@ services:
|
|
14
14
|
extends:
|
15
15
|
file: ../.docker-compose.base.yml
|
16
16
|
service: context_base
|
17
|
-
|
17
|
+
volumes:
|
18
|
+
- ${APP_DIR}:/app
|
19
|
+
working_dir: /home/stoobly/.stoobly/docker/${SERVICE_NAME}/${WORKFLOW_NAME}
|
@@ -5,7 +5,7 @@ services:
|
|
5
5
|
service: build.init_base
|
6
6
|
image: stoobly.${USER_ID}
|
7
7
|
profiles:
|
8
|
-
-
|
8
|
+
- ${WORKFLOW_NAME}
|
9
9
|
build.configure:
|
10
10
|
depends_on:
|
11
11
|
build.init:
|
@@ -15,4 +15,4 @@ services:
|
|
15
15
|
service: build.configure_base
|
16
16
|
image: stoobly.${USER_ID}
|
17
17
|
profiles:
|
18
|
-
-
|
18
|
+
- ${WORKFLOW_NAME}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Define services here
|
2
|
+
#
|
3
|
+
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
4
|
+
# e.g. If we want to run a service as part of the 'mock' workflow, then the following should be added
|
5
|
+
# profiles:
|
6
|
+
# - mock
|
7
|
+
services: {}
|
@@ -5,7 +5,7 @@ services:
|
|
5
5
|
service: build.init_base
|
6
6
|
image: stoobly.${USER_ID}
|
7
7
|
profiles:
|
8
|
-
-
|
8
|
+
- ${WORKFLOW_NAME}
|
9
9
|
build.configure:
|
10
10
|
depends_on:
|
11
11
|
build.init:
|
@@ -15,4 +15,4 @@ services:
|
|
15
15
|
service: build.configure_base
|
16
16
|
image: stoobly.${USER_ID}
|
17
17
|
profiles:
|
18
|
-
-
|
18
|
+
- ${WORKFLOW_NAME}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Define services here
|
2
|
+
#
|
3
|
+
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
4
|
+
# e.g. If we want to run a service as part of the 'record' workflow, then the following should be added
|
5
|
+
# profiles:
|
6
|
+
# - record
|
7
|
+
services: {}
|
@@ -5,7 +5,7 @@ services:
|
|
5
5
|
service: build.init_base
|
6
6
|
image: stoobly.${USER_ID}
|
7
7
|
profiles:
|
8
|
-
-
|
8
|
+
- ${WORKFLOW_NAME}
|
9
9
|
build.configure:
|
10
10
|
depends_on:
|
11
11
|
build.init:
|
@@ -15,4 +15,4 @@ services:
|
|
15
15
|
service: build.configure_base
|
16
16
|
image: stoobly.${USER_ID}
|
17
17
|
profiles:
|
18
|
-
-
|
18
|
+
- ${WORKFLOW_NAME}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Define services here
|
2
|
+
#
|
3
|
+
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
4
|
+
# e.g. If we want to run a service as part of the 'test' workflow, then the following should be added
|
5
|
+
# profiles:
|
6
|
+
# - test
|
7
|
+
services: {}
|
@@ -1,20 +1,19 @@
|
|
1
|
-
networks: {}
|
2
1
|
services:
|
3
2
|
entrypoint.configure_base:
|
4
3
|
command:
|
5
4
|
- ${SERVICE_SCRIPTS}/${SERVICE_NAME}/${WORKFLOW_TEMPLATE}/.configure
|
6
5
|
- bin/configure
|
7
|
-
environment: {}
|
8
6
|
extends:
|
9
7
|
file: ../.docker-compose.base.yml
|
10
8
|
service: context_base
|
11
|
-
working_dir: /home/stoobly/.stoobly/docker
|
9
|
+
working_dir: /home/stoobly/.stoobly/docker/${SERVICE_NAME}/${WORKFLOW_NAME}
|
12
10
|
entrypoint.init_base:
|
13
11
|
command:
|
14
12
|
- ${SERVICE_SCRIPTS}/${SERVICE_NAME}/${WORKFLOW_TEMPLATE}/.init
|
15
13
|
- bin/init
|
16
|
-
environment: {}
|
17
14
|
extends:
|
18
15
|
file: ../.docker-compose.base.yml
|
19
16
|
service: context_base
|
20
|
-
|
17
|
+
volumes:
|
18
|
+
- ${APP_DIR}:/app
|
19
|
+
working_dir: /home/stoobly/.stoobly/docker/${SERVICE_NAME}/${WORKFLOW_NAME}
|
@@ -1,25 +1,19 @@
|
|
1
|
-
networks:
|
2
|
-
entrypoint:
|
3
|
-
name: entrypoint
|
4
1
|
services:
|
5
2
|
entrypoint.configure:
|
6
3
|
depends_on:
|
7
4
|
entrypoint.init:
|
8
5
|
condition: service_completed_successfully
|
9
|
-
environment: {}
|
10
6
|
extends:
|
11
7
|
file: ../.docker-compose.base.yml
|
12
8
|
service: entrypoint.configure_base
|
13
9
|
image: stoobly.${USER_ID}
|
14
10
|
profiles:
|
15
|
-
-
|
11
|
+
- ${WORKFLOW_NAME}
|
16
12
|
volumes: []
|
17
13
|
entrypoint.init:
|
18
|
-
environment: {}
|
19
14
|
extends:
|
20
15
|
file: ../.docker-compose.base.yml
|
21
16
|
service: entrypoint.init_base
|
22
17
|
image: stoobly.${USER_ID}
|
23
18
|
profiles:
|
24
|
-
-
|
25
|
-
volumes: {}
|
19
|
+
- ${WORKFLOW_NAME}
|
@@ -1,15 +1,8 @@
|
|
1
|
-
# Define
|
1
|
+
# Define services here
|
2
2
|
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# e.g. If we want to make a request by hostname, then the following should be added
|
7
|
-
# networks:
|
8
|
-
# - app.ingress
|
9
|
-
#
|
10
|
-
# e.g. If we want to make a request by container service name, then the following should be added
|
11
|
-
# networks:
|
12
|
-
# - app.egress
|
3
|
+
# If a container service needs access to a Stoobly defined service,
|
4
|
+
# then the container service needs to add one of the scaffolded networks to the 'networks' property
|
5
|
+
# See https://docs.stoobly.com/core-concepts/scaffold
|
13
6
|
#
|
14
7
|
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
15
8
|
# e.g. If we want to run a service as part of the 'mock' workflow, then the following should be added
|
@@ -1,25 +1,19 @@
|
|
1
|
-
networks:
|
2
|
-
entrypoint:
|
3
|
-
name: entrypoint
|
4
1
|
services:
|
5
2
|
entrypoint.configure:
|
6
3
|
depends_on:
|
7
4
|
entrypoint.init:
|
8
5
|
condition: service_completed_successfully
|
9
|
-
environment: {}
|
10
6
|
extends:
|
11
7
|
file: ../.docker-compose.base.yml
|
12
8
|
service: entrypoint.configure_base
|
13
9
|
image: stoobly.${USER_ID}
|
14
10
|
profiles:
|
15
|
-
-
|
11
|
+
- ${WORKFLOW_NAME}
|
16
12
|
volumes: []
|
17
13
|
entrypoint.init:
|
18
|
-
environment: {}
|
19
14
|
extends:
|
20
15
|
file: ../.docker-compose.base.yml
|
21
16
|
service: entrypoint.init_base
|
22
17
|
image: stoobly.${USER_ID}
|
23
18
|
profiles:
|
24
|
-
-
|
25
|
-
volumes: {}
|
19
|
+
- ${WORKFLOW_NAME}
|
@@ -1,14 +1,11 @@
|
|
1
|
-
# Define
|
1
|
+
# Define services here
|
2
2
|
#
|
3
3
|
# If a container service needs access to a Stoobly defined service,
|
4
|
-
# then the container service needs to add the
|
5
|
-
#
|
6
|
-
# networks:
|
7
|
-
# - upstream
|
4
|
+
# then the container service needs to add one of the scaffolded networks to the 'networks' property
|
5
|
+
# See https://docs.stoobly.com/core-concepts/scaffold
|
8
6
|
#
|
9
7
|
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
10
8
|
# e.g. If we want to run a service as part of the 'record' workflow, then the following should be added
|
11
9
|
# profiles:
|
12
10
|
# - record
|
13
|
-
networks: {}
|
14
11
|
services: {}
|
@@ -1,25 +1,19 @@
|
|
1
|
-
networks:
|
2
|
-
entrypoint:
|
3
|
-
name: entrypoint
|
4
1
|
services:
|
5
2
|
entrypoint.configure:
|
6
3
|
depends_on:
|
7
4
|
entrypoint.init:
|
8
5
|
condition: service_completed_successfully
|
9
|
-
environment: {}
|
10
6
|
extends:
|
11
7
|
file: ../.docker-compose.base.yml
|
12
8
|
service: entrypoint.configure_base
|
13
9
|
image: stoobly.${USER_ID}
|
14
10
|
profiles:
|
15
|
-
-
|
11
|
+
- ${WORKFLOW_NAME}
|
16
12
|
volumes: []
|
17
13
|
entrypoint.init:
|
18
|
-
environment: {}
|
19
14
|
extends:
|
20
15
|
file: ../.docker-compose.base.yml
|
21
16
|
service: entrypoint.init_base
|
22
17
|
image: stoobly.${USER_ID}
|
23
18
|
profiles:
|
24
|
-
-
|
25
|
-
volumes: {}
|
19
|
+
- ${WORKFLOW_NAME}
|
@@ -1,14 +1,11 @@
|
|
1
|
-
# Define
|
1
|
+
# Define services here
|
2
2
|
#
|
3
3
|
# If a container service needs access to a Stoobly defined service,
|
4
|
-
# then the container service needs to add the
|
5
|
-
#
|
6
|
-
# networks:
|
7
|
-
# - upstream
|
4
|
+
# then the container service needs to add one of the scaffolded networks to the 'networks' property
|
5
|
+
# See https://docs.stoobly.com/core-concepts/scaffold
|
8
6
|
#
|
9
7
|
# Container services that are intended to be run as part of a workflow need to have the workflow name added to the 'profiles' property
|
10
8
|
# e.g. If we want to run a service as part of the 'test' workflow, then the following should be added
|
11
9
|
# profiles:
|
12
10
|
# - test
|
13
|
-
networks: {}
|
14
11
|
services: {}
|
@@ -6,8 +6,8 @@ scheme=$SERVICE_SCHEME
|
|
6
6
|
hostname=$SERVICE_HOSTNAME
|
7
7
|
port=$SERVICE_PORT
|
8
8
|
|
9
|
-
|
9
|
+
origin="$scheme://$hostname"
|
10
10
|
|
11
11
|
if [ "$scheme" = 'http' -a "$port" != '80' ] || [ "$scheme" = 'https' -a "$port" != '443' ]; then
|
12
|
-
|
12
|
+
origin="$origin:$port"
|
13
13
|
fi
|
@@ -6,10 +6,10 @@ scheme=$SERVICE_SCHEME
|
|
6
6
|
hostname=$SERVICE_HOSTNAME
|
7
7
|
port=$SERVICE_PORT
|
8
8
|
|
9
|
-
|
9
|
+
origin="$scheme://$hostname"
|
10
10
|
|
11
11
|
if [ "$scheme" = 'http' -a "$port" != '80' ] || [ "$scheme" = 'https' -a "$port" != '443' ]; then
|
12
|
-
|
12
|
+
origin="$origin:$port"
|
13
13
|
fi
|
14
14
|
|
15
15
|
# Firewall
|
@@ -18,7 +18,7 @@ stoobly-agent config firewall set \
|
|
18
18
|
--action include \
|
19
19
|
--method GET --method POST --method OPTIONS --method PUT --method DELETE \
|
20
20
|
--mode record \
|
21
|
-
--pattern "$
|
21
|
+
--pattern "$origin/?.*?"
|
22
22
|
|
23
23
|
# Rewrite
|
24
24
|
echo "Configuring rewrite rules..."
|
@@ -26,6 +26,6 @@ stoobly-agent config rewrite set \
|
|
26
26
|
--method GET --method POST --method OPTIONS --method PUT --method DELETE \
|
27
27
|
--mode record \
|
28
28
|
--name cookie \
|
29
|
-
--pattern "$
|
29
|
+
--pattern "$origin/?.*?" \
|
30
30
|
--type Header \
|
31
31
|
--value '' \
|
@@ -6,8 +6,8 @@ scheme=$SERVICE_SCHEME
|
|
6
6
|
hostname=$SERVICE_HOSTNAME
|
7
7
|
port=$SERVICE_PORT
|
8
8
|
|
9
|
-
|
9
|
+
origin="$scheme://$hostname"
|
10
10
|
|
11
11
|
if [ "$scheme" = 'http' -a "$port" != '80' ] || [ "$scheme" = 'https' -a "$port" != '443' ]; then
|
12
|
-
|
12
|
+
origin="$origin:$port"
|
13
13
|
fi
|
@@ -79,11 +79,13 @@ class WorkflowCreateCommand(WorkflowCommand):
|
|
79
79
|
|
80
80
|
def __write_docker_compose_file(self, **kwargs: BuildOptions):
|
81
81
|
builder_class = kwargs.get('builder_class') or WorkflowBuilder
|
82
|
-
service_builder = kwargs.get('service_builder')
|
82
|
+
service_builder = kwargs.get('service_builder')
|
83
|
+
if not service_builder:
|
84
|
+
service_builder = ServiceBuilder(self.service_config)
|
85
|
+
service_builder.load()
|
83
86
|
workflow_decorators: List[Union[MockDecorator, ReverseProxyDecorator]] = kwargs.get('workflow_decorators')
|
84
87
|
|
85
88
|
workflow_builder = builder_class(self.workflow_path, service_builder)
|
86
|
-
workflow_builder.with_env(list(self.env_vars))
|
87
89
|
workflow_builder.build_all()
|
88
90
|
|
89
91
|
if isinstance(workflow_decorators, list):
|
@@ -223,7 +223,6 @@ def update(**kwargs):
|
|
223
223
|
)
|
224
224
|
@click.option('--app-dir-path', default=current_working_dir, help='Path to application directory.')
|
225
225
|
@click.option('--context-dir-path', default=data_dir.context_dir_path, help='Path to Stoobly data directory.')
|
226
|
-
@click.option('--env', multiple=True, help='Specify an environment variable.')
|
227
226
|
@click.option('--force', is_flag=True, help='Overwrite maintained scaffolded workflow files.')
|
228
227
|
@click.option('--service', multiple=True, help='Specify the service(s) to create the workflow for.')
|
229
228
|
@click.option('--template', required=True, type=click.Choice([WORKFLOW_MOCK_TYPE, WORKFLOW_RECORD_TYPE, WORKFLOW_TEST_TYPE]), help='Select which workflow to use as a template.')
|
@@ -740,7 +739,8 @@ def __workflow_create(app, **kwargs):
|
|
740
739
|
|
741
740
|
service_config = command.service_config
|
742
741
|
workflow_decorators = get_workflow_decorators(kwargs['template'], service_config)
|
742
|
+
|
743
743
|
command.build(
|
744
744
|
template=kwargs['template'],
|
745
745
|
workflow_decorators=workflow_decorators
|
746
|
-
)
|
746
|
+
)
|
@@ -1 +1 @@
|
|
1
|
-
1.6.
|
1
|
+
1.6.7
|
@@ -1,4 +1,4 @@
|
|
1
|
-
stoobly_agent/__init__.py,sha256=
|
1
|
+
stoobly_agent/__init__.py,sha256=qAODERPgUB3TSB-LNb9TyckC9zmRfUbQVpVPBVi1GUk,44
|
2
2
|
stoobly_agent/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
stoobly_agent/app/api/__init__.py,sha256=ctkB8KR-eXO0SFhj602huHiyvQ3PslFWd8fkcufgrAI,1000
|
4
4
|
stoobly_agent/app/api/application_http_request_handler.py,sha256=Vvz53yB0bR7J-QqMAkLlhcZrA4P64ZEN7w8cMbgl6o0,5261
|
@@ -73,7 +73,7 @@ stoobly_agent/app/cli/scaffold/app_config.py,sha256=Gs-BynV1vY7_PpTOenn2mqc7lBIu
|
|
73
73
|
stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=sy4017eiir9MK0TEbTi1NyG9mhOGlenGGVnq0GsGUrQ,966
|
74
74
|
stoobly_agent/app/cli/scaffold/command.py,sha256=aoTsdkkBzyu7TkVSMdNQQGk0Gj874jNgFcjR14y3TuM,254
|
75
75
|
stoobly_agent/app/cli/scaffold/config.py,sha256=HZU5tkvr3dkPr4JMXZtrJlu2wxxO-134Em6jReFFcq0,688
|
76
|
-
stoobly_agent/app/cli/scaffold/constants.py,sha256=
|
76
|
+
stoobly_agent/app/cli/scaffold/constants.py,sha256=Mc4eaBicnzvXWjt1vqSmJ8csNyFLcAQLBj9uMH8QZ7A,2488
|
77
77
|
stoobly_agent/app/cli/scaffold/containerized_app.py,sha256=dAjn4RwcZV3aEL0POUmrbF_DC-r9h6s1zx7gT2t45v0,175
|
78
78
|
stoobly_agent/app/cli/scaffold/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
79
|
stoobly_agent/app/cli/scaffold/docker/app_builder.py,sha256=7z5pk5JKlRDHx2USxY-WurttLyyUkIVYfl34_u1x9dE,501
|
@@ -81,12 +81,12 @@ stoobly_agent/app/cli/scaffold/docker/builder.py,sha256=uiGqhxBHEasZAqLzjKUGUs-1
|
|
81
81
|
stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=1khQdgTaQ89ykGRNdTQh_ejFOdjNFGaZ_3cOGda6y7Y,692
|
82
82
|
stoobly_agent/app/cli/scaffold/docker/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
83
|
stoobly_agent/app/cli/scaffold/docker/service/build_decorator.py,sha256=ZU7z4bkvdS3OK5O4fJhlA9_PNwnFtZW6t7vNF7V5obQ,1003
|
84
|
-
stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=
|
84
|
+
stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=T1wE3DU-vLNRipBHiG1uxlVLXcLZ2My7LuFfVU2wY9g,5733
|
85
85
|
stoobly_agent/app/cli/scaffold/docker/service/configure_gateway.py,sha256=bdqY9jESbyGEwPW5cwb51oznYFlzK4MUP770zxxgrds,1701
|
86
86
|
stoobly_agent/app/cli/scaffold/docker/service/types.py,sha256=qB-yYHlu-PZDc0HYgTUvE5bWNpHxaSThC3JUG8okR1k,88
|
87
87
|
stoobly_agent/app/cli/scaffold/docker/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
88
|
stoobly_agent/app/cli/scaffold/docker/workflow/build_decorator.py,sha256=VKD9hXbJGRIWHS5IeYXeX0-FQ0F43zG8VmsegL6eYwA,703
|
89
|
-
stoobly_agent/app/cli/scaffold/docker/workflow/builder.py,sha256=
|
89
|
+
stoobly_agent/app/cli/scaffold/docker/workflow/builder.py,sha256=WmqH7skXJlsBEhqAMYUEhMRnEjjb-l0CzFOpNOE2ssI,5116
|
90
90
|
stoobly_agent/app/cli/scaffold/docker/workflow/decorators_factory.py,sha256=gU4RfuZ13r_YoB4eLS6FuiB1A4kfuLrWLPmYjZ0EJJw,955
|
91
91
|
stoobly_agent/app/cli/scaffold/docker/workflow/dns_decorator.py,sha256=nlDPbyF1hkVItzFH3bk9KlqfDC8usyFZs353-ibqxvA,938
|
92
92
|
stoobly_agent/app/cli/scaffold/docker/workflow/mock_decorator.py,sha256=DcBnwA8YhE-VdrUiWf2xPcqirEMZEQm3AwssAg9CxLo,1226
|
@@ -97,7 +97,7 @@ stoobly_agent/app/cli/scaffold/managed_services_docker_compose.py,sha256=-wLBXUi
|
|
97
97
|
stoobly_agent/app/cli/scaffold/service.py,sha256=L9K6QE0k5KSEC8_fSwtdwwTSO_DsIpqSPW-AG7Bg76o,501
|
98
98
|
stoobly_agent/app/cli/scaffold/service_command.py,sha256=9kIKiFC5Jo425VWYD4NDvUOdMP-pNyq2D5Ip1ZAPj3A,1054
|
99
99
|
stoobly_agent/app/cli/scaffold/service_config.py,sha256=NwJL4gwWQ_9B0fHrit1QekR6rSMg40m1CDizWxUNWCM,3598
|
100
|
-
stoobly_agent/app/cli/scaffold/service_create_command.py,sha256=
|
100
|
+
stoobly_agent/app/cli/scaffold/service_create_command.py,sha256=1B6TK3JDAjouikCV84WDrX7b0crdPMPIo1caMwhi-L8,2815
|
101
101
|
stoobly_agent/app/cli/scaffold/service_delete_command.py,sha256=_nBDQjm8eL62MQpzSCxgUHlW04ZXKG8MDlN1BXxlqww,986
|
102
102
|
stoobly_agent/app/cli/scaffold/service_docker_compose.py,sha256=OMUN1-ujQYIZXxDvS4XBf5C9wGalQULkwOiBBQPZbHY,820
|
103
103
|
stoobly_agent/app/cli/scaffold/service_workflow.py,sha256=sQ_Edy_wGHKMXpD0DmhnOWkGEKz7gSgEGNI8f7aXOdg,444
|
@@ -109,30 +109,33 @@ stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=6tF
|
|
109
109
|
stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.networks.yml,sha256=I4PbJpQjFHb5IbAUWNvYM6okDEtmwtKFDQg-yog05WM,141
|
110
110
|
stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=TEmPG7Bf0KZOnmfsgdzza3UdwcVMmM5Lj1YdLc4cgjA,79
|
111
111
|
stoobly_agent/app/cli/scaffold/templates/app/build/.config.yml,sha256=8Wt8ZZ5irvBYYS44xGrR_EWlZDuXH9kyWmquzsh7s8g,19
|
112
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml,sha256=
|
113
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml,sha256=
|
112
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml,sha256=ECc2t_85UULEciNYFSuuQW2hdd6nSFEkrlHE-bY5q3E,614
|
113
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml,sha256=s-QRSUM44USYt395XR2o4lTjaXPcuIRHjjQ0ALfRj2k,438
|
114
114
|
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/configure,sha256=dEOGIKUKJf5kjOwJRdTgZkS0ZjmQHWVuAmKrWUjPij4,44
|
115
115
|
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
116
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/
|
116
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/mock/docker-compose.yml,sha256=DhQzbaBXvnBfojLBRl5ZXdY1yqqq2FIaN9_tXQtfzs0,297
|
117
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/record/.docker-compose.record.yml,sha256=s-QRSUM44USYt395XR2o4lTjaXPcuIRHjjQ0ALfRj2k,438
|
117
118
|
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/configure,sha256=KBgjZlP3-FEhhflopx50EabXhyF98Mv0u_YrfmxMznE,52
|
118
119
|
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
119
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/
|
120
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/record/docker-compose.yml,sha256=wQHPL62dqQWBHfMbdXPB9rU9HnBFhQRDSo9T_BNie10,301
|
121
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/test/.docker-compose.test.yml,sha256=s-QRSUM44USYt395XR2o4lTjaXPcuIRHjjQ0ALfRj2k,438
|
120
122
|
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/configure,sha256=dEOGIKUKJf5kjOwJRdTgZkS0ZjmQHWVuAmKrWUjPij4,44
|
121
123
|
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
124
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/test/docker-compose.yml,sha256=HrJwBVx_n4EmC1F1kWXSr7Py9Kx87Cc8x6V0IPKAydo,297
|
122
125
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.config.yml,sha256=T9VQz6OwAQpKdIoFrnfKAxuX_to0c6EhuWRLKM34Sr4,22
|
123
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml,sha256=
|
124
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml,sha256
|
126
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml,sha256=8LLUmoCOvNeVB1uUTKd3TmotM__CmG44z_E_O6zuNQQ,622
|
127
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml,sha256=KFWtuPS1JcQQHKN1yTMJHWHm3_1ihz7UTs_FHEQJfGI,478
|
125
128
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/configure,sha256=dEOGIKUKJf5kjOwJRdTgZkS0ZjmQHWVuAmKrWUjPij4,44
|
126
129
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
127
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/docker-compose.yml,sha256=
|
128
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml,sha256=
|
130
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/docker-compose.yml,sha256=BwPDVngZ9dcXrb3NhthsRUIN2ciuygj4eA7-TYJK1J8,523
|
131
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml,sha256=KFWtuPS1JcQQHKN1yTMJHWHm3_1ihz7UTs_FHEQJfGI,478
|
129
132
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/configure,sha256=dEOGIKUKJf5kjOwJRdTgZkS0ZjmQHWVuAmKrWUjPij4,44
|
130
133
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
131
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/docker-compose.yml,sha256=
|
132
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml,sha256=
|
134
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/docker-compose.yml,sha256=mgI6XZ8Ql7WxgIrtiFC4PP09Q0bPoMDaAIenJva3JoE,527
|
135
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml,sha256=KFWtuPS1JcQQHKN1yTMJHWHm3_1ihz7UTs_FHEQJfGI,478
|
133
136
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/configure,sha256=dEOGIKUKJf5kjOwJRdTgZkS0ZjmQHWVuAmKrWUjPij4,44
|
134
137
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
135
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/docker-compose.yml,sha256=
|
138
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/docker-compose.yml,sha256=JpWLQrW69EatLD3HPHpmi3Y6n7cjlrUgekYVbJ4ngSY,523
|
136
139
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/.config.yml,sha256=XnLQZMzzMMIwVycjyPN5QXsmRztkTFAna1kIHYuDfJQ,19
|
137
140
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/.docker-compose.base.template.yml,sha256=bgBvyDhyehS75D2ObEi7sl9DLGV6U3c9JhCAncsvjq8,251
|
138
141
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.yml,sha256=CDL5x18-ues4F_ujqpNef_zJTG6PyDOkQ11cIHBOW5k,136
|
@@ -144,17 +147,17 @@ stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/.docker-compose.exe
|
|
144
147
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/mock/.docker-compose.mock.yml,sha256=FnCn64DjxyAiB2P_1JUwFmXslMR961nVZHkYiEXytlg,232
|
145
148
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/record/.docker-compose.record.yml,sha256=t34FNYZboJSfrKnIB2oJ3UuE_mJaW77-hcbSn3sfWec,235
|
146
149
|
stoobly_agent/app/cli/scaffold/templates/build/services/build/mock/.configure,sha256=006exiS9OpKavy4fNWioWo0d8hrulQiWjaB3yXHdGig,212
|
147
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/build/mock/.init,sha256=
|
150
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/build/mock/.init,sha256=5eg3Glb3_T-RTwU6tTSerFLQKsL93LtsnmR1B0vRjBw,219
|
148
151
|
stoobly_agent/app/cli/scaffold/templates/build/services/build/record/.configure,sha256=006exiS9OpKavy4fNWioWo0d8hrulQiWjaB3yXHdGig,212
|
149
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/build/record/.init,sha256=
|
152
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/build/record/.init,sha256=5eg3Glb3_T-RTwU6tTSerFLQKsL93LtsnmR1B0vRjBw,219
|
150
153
|
stoobly_agent/app/cli/scaffold/templates/build/services/build/test/.configure,sha256=006exiS9OpKavy4fNWioWo0d8hrulQiWjaB3yXHdGig,212
|
151
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/build/test/.init,sha256=
|
154
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/build/test/.init,sha256=5eg3Glb3_T-RTwU6tTSerFLQKsL93LtsnmR1B0vRjBw,219
|
152
155
|
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/mock/.configure,sha256=SKvht2K_3tW08K24rl8_j0jMYOhq1k-GsVwhoHwjxYA,337
|
153
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/mock/.init,sha256=
|
156
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/mock/.init,sha256=AcM6SLUsZa6BOLDjxteDR_AXIco47GZNkWQCGPhPDAY,189
|
154
157
|
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/record/.configure,sha256=dnbPZUrYZDCEx0MxhIsrY-lTgH_9tN_Iixy3XrPIW8w,341
|
155
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/record/.init,sha256=
|
158
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/record/.init,sha256=AcM6SLUsZa6BOLDjxteDR_AXIco47GZNkWQCGPhPDAY,189
|
156
159
|
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/test/.configure,sha256=SKvht2K_3tW08K24rl8_j0jMYOhq1k-GsVwhoHwjxYA,337
|
157
|
-
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/test/.init,sha256=
|
160
|
+
stoobly_agent/app/cli/scaffold/templates/build/services/entrypoint/test/.init,sha256=AcM6SLUsZa6BOLDjxteDR_AXIco47GZNkWQCGPhPDAY,189
|
158
161
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.create,sha256=EZe84bLAKB-mrB9PGMx-amyMjp6x-ESUZKC8wxrWdLE,245
|
159
162
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.delete,sha256=RspRDQ7WT5jpN2o-6qXOlH-A2VpN4981pD4ZJljk9Rw,260
|
160
163
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.disable,sha256=xVf4Pk1RLvJm7Ff0rbGoWhYHPv0ME5e93fxS2yFqLnE,45
|
@@ -168,23 +171,23 @@ stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.services,sha256=s
|
|
168
171
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.snapshot,sha256=Kav1QNhKG7f0DBzc4-9dmxZMmmVTxmPqakT_W4kVYKk,241
|
169
172
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/exec/.up,sha256=S88O31UgsabaMvSwkQJjLF9C7mrFkyEk9x6JDE6qSXI,228
|
170
173
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/mock/.configure,sha256=xWJGhCKQejtVLFAOEZMWnaCeGAc9tuqEh_WsG3xfA_0,184
|
171
|
-
stoobly_agent/app/cli/scaffold/templates/build/workflows/mock/.init,sha256=
|
174
|
+
stoobly_agent/app/cli/scaffold/templates/build/workflows/mock/.init,sha256=el5LYLY-7P3-EuxZ8dAFgGNU_4zDhyA4D_iS6D4fvps,312
|
172
175
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/record/.configure,sha256=xWJGhCKQejtVLFAOEZMWnaCeGAc9tuqEh_WsG3xfA_0,184
|
173
|
-
stoobly_agent/app/cli/scaffold/templates/build/workflows/record/.init,sha256=
|
176
|
+
stoobly_agent/app/cli/scaffold/templates/build/workflows/record/.init,sha256=q2dL6DmIM8re149WwyeZvwttjU6KqBXO2-9zVKKqtM0,313
|
174
177
|
stoobly_agent/app/cli/scaffold/templates/build/workflows/test/.configure,sha256=xWJGhCKQejtVLFAOEZMWnaCeGAc9tuqEh_WsG3xfA_0,184
|
175
|
-
stoobly_agent/app/cli/scaffold/templates/build/workflows/test/.init,sha256=
|
178
|
+
stoobly_agent/app/cli/scaffold/templates/build/workflows/test/.init,sha256=el5LYLY-7P3-EuxZ8dAFgGNU_4zDhyA4D_iS6D4fvps,312
|
176
179
|
stoobly_agent/app/cli/scaffold/templates/constants.py,sha256=EXBiBB_gnSINGrIqfXMaJ2w0HEaICw4FxVjwIHPBqYw,1457
|
177
180
|
stoobly_agent/app/cli/scaffold/templates/factory.py,sha256=t7QExf7o22oAiw05XFBWTfoTcuQqK33gQZHo3j1dzTY,1749
|
178
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/configure,sha256=
|
179
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/init,sha256=
|
181
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/configure,sha256=GAU7AfSPcyDSI9RJ7mynT83YqgN9r_E9HZYx0RXE1lU,279
|
182
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/init,sha256=EaoFDyoJbHc9Ui8ELYKmfweXAycJptVOQblszeh3XTE,94
|
180
183
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/fixtures.yml,sha256=CJlZ_kugygZpmyqIauBjNZxqk7XyLaa3yl3AWj8KV28,259
|
181
184
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/lifecycle_hooks.py,sha256=U7mlzT_wBR3uhHSG6CAyt5tBUNAvdIrCw33gdB-F294,467
|
182
185
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/public/.gitignore,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
183
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/configure,sha256=
|
184
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/init,sha256=
|
186
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/configure,sha256=fBQXJpPZJr5H79zFOmEERM6DpELm8GGC8ATKc2JpKSQ,765
|
187
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/init,sha256=EaoFDyoJbHc9Ui8ELYKmfweXAycJptVOQblszeh3XTE,94
|
185
188
|
stoobly_agent/app/cli/scaffold/templates/workflow/record/lifecycle_hooks.py,sha256=4vaVc_gnDTCLEqtcZybIk5dcmXrKmGuesF6gc3-_kX8,473
|
186
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/configure,sha256=
|
187
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/init,sha256=
|
189
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/configure,sha256=GAU7AfSPcyDSI9RJ7mynT83YqgN9r_E9HZYx0RXE1lU,279
|
190
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/init,sha256=EaoFDyoJbHc9Ui8ELYKmfweXAycJptVOQblszeh3XTE,94
|
188
191
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/fixtures.yml,sha256=CJlZ_kugygZpmyqIauBjNZxqk7XyLaa3yl3AWj8KV28,259
|
189
192
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/lifecycle_hooks.py,sha256=U7mlzT_wBR3uhHSG6CAyt5tBUNAvdIrCw33gdB-F294,467
|
190
193
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/public/.gitignore,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -194,12 +197,12 @@ stoobly_agent/app/cli/scaffold/workflow.py,sha256=KlbWT9CIo9EpZxKU1WVZtmodhxK7Cp
|
|
194
197
|
stoobly_agent/app/cli/scaffold/workflow_command.py,sha256=eI9I5LLgO0U3b46QhHusy-4BV2zUDVai6jErcluYCRI,3344
|
195
198
|
stoobly_agent/app/cli/scaffold/workflow_config.py,sha256=ghnbcnCyb6ECdylUJCAJ6A8ulzaFY9bu7RvRuYeiRkk,901
|
196
199
|
stoobly_agent/app/cli/scaffold/workflow_copy_command.py,sha256=R9hh5dWVz7vGld7pENAA_a9gW56EkgG2K35nBQYXwyI,1462
|
197
|
-
stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=
|
200
|
+
stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=R3L1obUTidGngbIaRlVjt_Rjkw9qOPze_p5plHc8JHs,3532
|
198
201
|
stoobly_agent/app/cli/scaffold/workflow_env.py,sha256=x8V5pJmIiklD3f2q2-qq-CORf4YaXYq_r2JpR2MmSwk,416
|
199
202
|
stoobly_agent/app/cli/scaffold/workflow_log_command.py,sha256=Bke4lMOMxuDUFuAx9nlXHbKgYMO4KAg9ASHvjz4aVWc,1372
|
200
203
|
stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=eF3aaK4OIZXYuSBEAeBnhAL7EZrS1G4mSYrJbEiXt2o,11082
|
201
204
|
stoobly_agent/app/cli/scaffold/workflow_validate_command.py,sha256=wv1Zrq0GoYO8ryac3oGno0C282c6UjMtniO19mBSyrE,4036
|
202
|
-
stoobly_agent/app/cli/scaffold_cli.py,sha256=
|
205
|
+
stoobly_agent/app/cli/scaffold_cli.py,sha256=kD_2YbtdcMjFzJ2u8lBchL5vo0ey4_a_HXmE3V3Quuw,28607
|
203
206
|
stoobly_agent/app/cli/scenario_cli.py,sha256=3J1EiJOvunkfWrEkOsanw-XrKkOk78ij_GjBlE9p7CE,8229
|
204
207
|
stoobly_agent/app/cli/snapshot_cli.py,sha256=cpCjxFYBuVwLuq_b2lIUu-5zWqupRlrp4xWgDytirSM,10047
|
205
208
|
stoobly_agent/app/cli/trace_cli.py,sha256=K7E-vx3JUcqEDSWOdIOi_AieKNQz7dBfmRrVvKDkzFI,4605
|
@@ -699,7 +702,7 @@ stoobly_agent/test/app/models/factories/resource/local_db/helpers/log_test.py,sh
|
|
699
702
|
stoobly_agent/test/app/models/factories/resource/local_db/helpers/tiebreak_scenario_request_test.py,sha256=a1SFLyEyRRLuADvAw6ckQQKORFXvyK1lyrbkaLWx8oU,3399
|
700
703
|
stoobly_agent/test/app/models/factories/resource/local_db/request_adapter_test.py,sha256=Pzq1cBPnP9oSWG-p0c-VoymoHxgp483QmNwmV1b78RA,8453
|
701
704
|
stoobly_agent/test/app/models/factories/resource/local_db/response_adapter_test.py,sha256=9P95EKH5rZGOrmRkRIDlQZqtiLJHk9735og18Ffwpfw,2204
|
702
|
-
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=
|
705
|
+
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=SJuufShOhhiSZOph-xt0K0zwmxbI8S1OvfGbFa7G5fA,5
|
703
706
|
stoobly_agent/test/app/models/schemas/.stoobly/db/stoobly_agent.sqlite3,sha256=ch8gNx6zIelLKQx65gwFx_LRNqUD3EC5xcHZ0ukIQiU,188416
|
704
707
|
stoobly_agent/test/app/models/schemas/.stoobly/settings.yml,sha256=vLwMjweKOdod6tSLtIlyBefPQuNXq9wio4kBaODKtAU,726
|
705
708
|
stoobly_agent/test/app/models/schemas/.stoobly/tmp/options.json,sha256=OTRzarwus48CTrItedXCrgQttJHSEZonEYc7R_knvYg,2212
|
@@ -740,8 +743,8 @@ stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=1W
|
|
740
743
|
stoobly_agent/test/mock_data/scaffold/index.html,sha256=qJwuYajKZ4ihWZrJQ3BNObV5kf1VGnnm_vqlPJzdqLE,258
|
741
744
|
stoobly_agent/test/mock_data/uspto.yaml,sha256=6U5se7C3o-86J4m9xpOk9Npias399f5CbfWzR87WKwE,7835
|
742
745
|
stoobly_agent/test/test_helper.py,sha256=m_oAI7tmRYCNZdKfNqISWhMv3e44tjeYViQ3nTUfnos,1007
|
743
|
-
stoobly_agent-1.6.
|
744
|
-
stoobly_agent-1.6.
|
745
|
-
stoobly_agent-1.6.
|
746
|
-
stoobly_agent-1.6.
|
747
|
-
stoobly_agent-1.6.
|
746
|
+
stoobly_agent-1.6.7.dist-info/LICENSE,sha256=o93sj12cdoEOsTCjPaPFsw3Xq0SXs3pPcY-9reE2sEw,548
|
747
|
+
stoobly_agent-1.6.7.dist-info/METADATA,sha256=qdGza9KAifMv5H2jjIj-CQGutb0ZIYnMpC20T7thyeU,3087
|
748
|
+
stoobly_agent-1.6.7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
749
|
+
stoobly_agent-1.6.7.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
|
750
|
+
stoobly_agent-1.6.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|