Class: Hako::Schedulers::EcsDefinitionComparator

Inherits:
Object
  • Object
show all
Defined in:
lib/hako/schedulers/ecs_definition_comparator.rb

Instance Method Summary collapse

Constructor Details

#initialize(expected_container) ⇒ EcsDefinitionComparator

Returns a new instance of EcsDefinitionComparator.

Parameters:

  • expected_container (Hash)


9
10
11
12
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 9

def initialize(expected_container)
  @expected_container = expected_container
  @schema = definition_schema
end

Instance Method Details

#capabilities_schemaObject (private)



122
123
124
125
126
127
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 122

def capabilities_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:add, Schema::UnorderedArray.new(Schema::String.new))
    struct.member(:drop, Schema::UnorderedArray.new(Schema::String.new))
  end
end

#definition_schemaObject (private)



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 22

def definition_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:image, Schema::String.new)
    struct.member(:cpu, Schema::Integer.new)
    struct.member(:memory, Schema::Nullable.new(Schema::Integer.new))
    struct.member(:memory_reservation, Schema::Nullable.new(Schema::Integer.new))
    struct.member(:links, Schema::UnorderedArray.new(Schema::String.new))
    struct.member(:essential, Schema::Boolean.new)
    struct.member(:port_mappings, Schema::UnorderedArray.new(port_mapping_schema))
    struct.member(:environment, Schema::UnorderedArray.new(environment_schema))
    struct.member(:secrets, Schema::Nullable.new(Schema::UnorderedArray.new(secrets_schema)))
    struct.member(:docker_labels, Schema::Table.new(Schema::String.new, Schema::String.new))
    struct.member(:mount_points, Schema::UnorderedArray.new(mount_point_schema))
    struct.member(:entry_point, Schema::Nullable.new(Schema::OrderedArray.new(Schema::String.new)))
    struct.member(:command, Schema::Nullable.new(Schema::OrderedArray.new(Schema::String.new)))
    struct.member(:depends_on, Schema::Nullable.new(Schema::UnorderedArray.new(depends_on_schema)))
    struct.member(:volumes_from, Schema::UnorderedArray.new(volumes_from_schema))
    struct.member(:user, Schema::Nullable.new(Schema::String.new))
    struct.member(:privileged, Schema::Boolean.new)
    struct.member(:log_configuration, Schema::Nullable.new(log_configuration_schema))
    struct.member(:health_check, Schema::Nullable.new(health_check_schema))
    struct.member(:ulimits, Schema::Nullable.new(ulimits_schema))
    struct.member(:extra_hosts, Schema::Nullable.new(extra_hosts_schema))
    struct.member(:linux_parameters, Schema::Nullable.new(linux_parameters_schema))
    struct.member(:readonly_root_filesystem, Schema::Nullable.new(Schema::Boolean.new))
    struct.member(:docker_security_options, Schema::Nullable.new(Schema::UnorderedArray.new(Schema::String.new)))
    struct.member(:system_controls, Schema::Nullable.new(system_controls_schema))
    struct.member(:repository_credentials, Schema::Nullable.new(repository_credentials_schema))
  end
end

#depends_on_schemaObject (private)



169
170
171
172
173
174
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 169

def depends_on_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:container_name, Schema::String.new)
    struct.member(:condition, Schema::String.new)
  end
end

#device_schemaObject (private)



133
134
135
136
137
138
139
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 133

def device_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:host_path, Schema::String.new)
    struct.member(:container_path, Schema::Nullable.new(Schema::String.new))
    struct.member(:permissions, Schema::UnorderedArray.new(Schema::String.new))
  end
end

#devices_schemaObject (private)



129
130
131
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 129

def devices_schema
  Schema::UnorderedArray.new(device_schema)
end

#different?(actual_container) ⇒ Boolean

Parameters:

  • actual_container (Aws::ECS::Types::ContainerDefinition)

Returns:

  • (Boolean)


16
17
18
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 16

def different?(actual_container)
  !@schema.same?(actual_container.to_h, @expected_container)
end

#environment_schemaObject (private)



61
62
63
64
65
66
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 61

def environment_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:name, Schema::String.new)
    struct.member(:value, Schema::String.new)
  end
end

#extra_host_schemaObject (private)



155
156
157
158
159
160
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 155

def extra_host_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:hostname, Schema::String.new)
    struct.member(:ip_address, Schema::String.new)
  end
end

#extra_hosts_schemaObject (private)



151
152
153
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 151

def extra_hosts_schema
  Schema::UnorderedArray.new(extra_host_schema)
end

#health_check_schemaObject (private)



90
91
92
93
94
95
96
97
98
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 90

def health_check_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:command, Schema::OrderedArray.new(Schema::String.new))
    struct.member(:interval, Schema::Integer.new)
    struct.member(:timeout, Schema::Integer.new)
    struct.member(:retries, Schema::Integer.new)
    struct.member(:start_period, Schema::Integer.new)
  end
end

#linux_parameters_schemaObject (private)



112
113
114
115
116
117
118
119
120
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 112

def linux_parameters_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:capabilities, Schema::Nullable.new(capabilities_schema))
    struct.member(:devices, Schema::Nullable.new(devices_schema))
    struct.member(:init_process_enabled, Schema::Nullable.new(Schema::Boolean.new))
    struct.member(:shared_memory_size, Schema::Nullable.new(Schema::Integer.new))
    struct.member(:tmpfs, Schema::Nullable.new(tmpfs_schema))
  end
end

#log_configuration_schemaObject (private)



83
84
85
86
87
88
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 83

def log_configuration_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:log_driver, Schema::String.new)
    struct.member(:options, Schema::Table.new(Schema::String.new, Schema::String.new))
  end
end

#mount_point_schemaObject (private)



68
69
70
71
72
73
74
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 68

def mount_point_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:source_volume, Schema::String.new)
    struct.member(:container_path, Schema::String.new)
    struct.member(:read_only, Schema::Boolean.new)
  end
end

#port_mapping_schemaObject (private)



53
54
55
56
57
58
59
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 53

def port_mapping_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:container_port, Schema::Integer.new)
    struct.member(:host_port, Schema::Integer.new)
    struct.member(:protocol, Schema::String.new)
  end
end

#repository_credentials_schemaObject (private)



187
188
189
190
191
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 187

def repository_credentials_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:credentials_parameter, Schema::String.new)
  end
end

#secrets_schemaObject (private)



162
163
164
165
166
167
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 162

def secrets_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:name, Schema::String.new)
    struct.member(:value_from, Schema::String.new)
  end
end

#system_control_schemaObject (private)



180
181
182
183
184
185
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 180

def system_control_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:namespace, Schema::String.new)
    struct.member(:value, Schema::String.new)
  end
end

#system_controls_schemaObject (private)



176
177
178
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 176

def system_controls_schema
  Schema::UnorderedArray.new(system_control_schema)
end

#tmpfs_schemaObject (private)



141
142
143
144
145
146
147
148
149
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 141

def tmpfs_schema
  Schema::UnorderedArray.new(
    Schema::Structure.new.tap do |struct|
      struct.member(:container_path, Schema::String.new)
      struct.member(:mount_options, Schema::UnorderedArray.new(Schema::String.new))
      struct.member(:size, Schema::Integer.new)
    end
  )
end

#ulimit_schemaObject (private)



104
105
106
107
108
109
110
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 104

def ulimit_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:name, Schema::String.new)
    struct.member(:hard_limit, Schema::Integer.new)
    struct.member(:soft_limit, Schema::Integer.new)
  end
end

#ulimits_schemaObject (private)



100
101
102
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 100

def ulimits_schema
  Schema::UnorderedArray.new(ulimit_schema)
end

#volumes_from_schemaObject (private)



76
77
78
79
80
81
# File 'lib/hako/schedulers/ecs_definition_comparator.rb', line 76

def volumes_from_schema
  Schema::Structure.new.tap do |struct|
    struct.member(:source_container, Schema::String.new)
    struct.member(:read_only, Schema::Boolean.new)
  end
end