@@ -4,17 +4,21 @@ module Sagittarius
44 module Orchestrator
55 class Operator
66 ORCHESTRATOR_LABEL_PREFIX = 'tech.code0.sagittarius.orchestrator'
7+ CONTAINER_NAME_LABEL = "#{ ORCHESTRATOR_LABEL_PREFIX } .container.name" . freeze
8+ NETWORK_NAME_LABEL = "#{ ORCHESTRATOR_LABEL_PREFIX } .network.name" . freeze
79 VOLUME_NAME_LABEL = "#{ ORCHESTRATOR_LABEL_PREFIX } .volume.name" . freeze
810 VOLUME_CONTAINER_LABEL = "#{ ORCHESTRATOR_LABEL_PREFIX } .volume.container" . freeze
911
12+ NoContainerError = Class . new ( StandardError )
13+
1014 class << self
1115 def ensure_self_connected!
1216 ensure_network!
1317
1418 self_container_id = State . self_container_id
15- return if self_container_id . nil?
19+ raise NoContainerError , 'self_container_id is nil' if self_container_id . nil?
1620
17- network . connect ( State . self_container_id )
21+ network . connect ( self_container_id )
1822 end
1923
2024 def ensure_container_up! ( container )
@@ -33,27 +37,27 @@ def ensure_container_down!(container)
3337 destroy_container! ( container ) unless State [ container . name ] . internal_container . nil?
3438 end
3539
36- # private
37-
38- def ensure_network!
39- return unless network . nil?
40-
41- Docker ::Network . create (
42- unique_name ( 'code0' ) ,
43- 'Labels' => { ORCHESTRATOR_LABEL_PREFIX => 'network' }
44- )
45- end
46-
4740 def network
4841 network_id = Docker ::Network . all ( filters : JSON . dump (
49- { 'label' => [ "#{ ORCHESTRATOR_LABEL_PREFIX } =network " ] }
42+ { 'label' => [ "#{ NETWORK_NAME_LABEL } =main " ] }
5043 ) ) . first &.id
5144
5245 return nil if network_id . nil?
5346
5447 Docker ::Network . get ( network_id )
5548 end
5649
50+ private
51+
52+ def ensure_network!
53+ return unless network . nil?
54+
55+ Docker ::Network . create (
56+ unique_name ( 'code0' ) ,
57+ 'Labels' => { NETWORK_NAME_LABEL => 'main' }
58+ )
59+ end
60+
5761 def ensure_volumes! ( container )
5862 container . volumes . each_key do |name |
5963 next if State . volumes [ container . name ] &.key? ( name . to_s )
@@ -77,7 +81,7 @@ def create_container!(container)
7781 container . internal_container = Docker ::Container . create (
7882 'name' => unique_name ( container . name ) ,
7983 'Image' => container . image ,
80- 'Labels' => { ORCHESTRATOR_LABEL_PREFIX => container . name } ,
84+ 'Labels' => { CONTAINER_NAME_LABEL => container . name } ,
8185 'Cmd' => container . cmd ,
8286 'Env' => container . environment_variables ,
8387 'HostConfig' => {
0 commit comments