@@ -18,7 +18,7 @@ use kube::runtime::reflector::{ObjectRef, Store};
18
18
use kube:: runtime:: Controller ;
19
19
use kube:: { Api , Client , Config } ;
20
20
use kube:: { Error , Resource } ;
21
- use serde_json:: json;
21
+ use serde_json:: { json, Value } ;
22
22
use std:: collections:: BTreeMap ;
23
23
use std:: env;
24
24
use std:: sync:: Arc ;
@@ -90,7 +90,10 @@ impl EpsilonController {
90
90
let instance_status = epsilon_instance. status . clone ( ) ;
91
91
92
92
let instance_name = epsilon_instance. get_name ( ) ;
93
- let template_name = & instance_spec. template ;
93
+
94
+ let instance_content = instance_spec. content . clone ( ) ;
95
+
96
+ let instance_template_name = & instance_spec. template ;
94
97
95
98
if let Ok ( pod_option) = pod_api. get_opt ( & instance_name) . await {
96
99
match pod_option {
@@ -99,7 +102,10 @@ impl EpsilonController {
99
102
epsilon_instance. controller_owner_ref ( & ( ) ) . unwrap ( ) ;
100
103
instance_owner_reference. block_owner_deletion = Some ( true ) ;
101
104
102
- let template = template_provider. get_template ( template_name) . await . unwrap ( ) ;
105
+ let template = template_provider
106
+ . get_template ( instance_template_name)
107
+ . await
108
+ . unwrap ( ) ;
103
109
104
110
let instance_type = & template. t ;
105
111
let instance_resource = & template. resources ;
@@ -121,7 +127,7 @@ impl EpsilonController {
121
127
restart_policy : Some ( String :: from ( "Never" ) ) ,
122
128
containers : vec ! [ Container {
123
129
name: String :: from( "main" ) ,
124
- image: Some ( Self :: get_image( & template_name ) ) ,
130
+ image: Some ( Self :: get_image( & instance_template_name ) ) ,
125
131
image_pull_policy: Some ( String :: from( "Always" ) ) ,
126
132
env_from: Some ( vec![
127
133
EnvFromSource {
@@ -196,20 +202,22 @@ impl EpsilonController {
196
202
197
203
let mut new_status = match instance_status {
198
204
None => {
199
- let template =
200
- template_provider. get_template ( template_name) . await . unwrap ( ) ;
205
+ let template = template_provider
206
+ . get_template ( instance_template_name)
207
+ . await
208
+ . unwrap ( ) ;
201
209
202
210
let template_type = template. t . clone ( ) ;
203
211
204
212
EpsilonInstanceStatus {
205
213
ip : pod_ip,
206
214
207
- template : template_name . to_owned ( ) ,
215
+ template : instance_template_name . to_owned ( ) ,
208
216
t : template_type,
209
217
210
218
hub : template_provider. is_hub ( & template) ,
211
219
212
- content : String :: from ( "" ) ,
220
+ content : instance_content ,
213
221
214
222
slots : template. slots ,
215
223
online : 0 ,
@@ -221,6 +229,7 @@ impl EpsilonController {
221
229
}
222
230
Some ( mut status) => {
223
231
status. ip = pod_ip;
232
+ status. content = instance_content;
224
233
status. state = state;
225
234
226
235
if state == EpsilonState :: Running {
@@ -282,6 +291,7 @@ impl EpsilonController {
282
291
pub async fn create_epsilon_instance (
283
292
& self ,
284
293
template_name : & str ,
294
+ content : Value ,
285
295
) -> Result < EpsilonInstance , EpsilonError > {
286
296
let epsilon_instance_api = & self . context . epsilon_instance_api ;
287
297
@@ -292,6 +302,7 @@ impl EpsilonController {
292
302
} ,
293
303
spec : EpsilonInstanceSpec {
294
304
template : template_name. to_owned ( ) ,
305
+ content,
295
306
} ,
296
307
status : None ,
297
308
} ;
0 commit comments