Class: Kitsune::Kit::Adapters::FakeProvider

Inherits:
Provider
  • Object
show all
Defined in:
lib/kitsune/kit/adapters/fake_provider.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(servers: [], dns_records: [], failures: {}) ⇒ FakeProvider

Returns a new instance of FakeProvider.



12
13
14
15
16
17
18
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 12

def initialize(servers: [], dns_records: [], failures: {})
  super()
  @servers = servers.dup
  @dns_records = dns_records.dup
  @failures = failures
  @calls = []
end

Instance Attribute Details

#callsObject (readonly)

Returns the value of attribute calls.



10
11
12
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 10

def calls
  @calls
end

#dns_recordsObject (readonly)

Returns the value of attribute dns_records.



10
11
12
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 10

def dns_records
  @dns_records
end

#serversObject (readonly)

Returns the value of attribute servers.



10
11
12
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 10

def servers
  @servers
end

Instance Method Details

#create_server(spec:) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 44

def create_server(spec:)
  record(:create_server, spec: spec)
  fail_if_requested!(:create_server)
  server = ServerRecord.new(
    id: SecureRandom.uuid,
    name: spec.fetch(:name),
    status: "new",
    public_ip: nil,
    region: spec.fetch(:region),
    size: spec.fetch(:size),
    image: spec.fetch(:image),
    tags: spec.fetch(:tags, [])
  )
  @servers << server
  server
end

#delete_dns_record(id:, zone:) ⇒ Object



91
92
93
94
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 91

def delete_dns_record(id:, zone:)
  record(:delete_dns_record, id: id, zone: zone)
  !!@dns_records.reject! { |record| record.id == id && record.zone == zone }
end

#delete_server(id:) ⇒ Object



72
73
74
75
76
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 72

def delete_server(id:)
  record(:delete_server, id: id)
  fail_if_requested!(:delete_server)
  !!@servers.reject! { |server| server.id == id }
end

#find_dns_record(zone:, name:, type:) ⇒ Object



78
79
80
81
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 78

def find_dns_record(zone:, name:, type:)
  record(:find_dns_record, zone: zone, name: name, type: type)
  @dns_records.find { |record| record.zone == zone && record.name == name && record.type == type }
end

#find_server(name:, tags: []) ⇒ Object



32
33
34
35
36
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 32

def find_server(name:, tags: [])
  record(:find_server, name: name, tags: tags)
  fail_if_requested!(:find_server)
  @servers.find { |server| server.name == name && (tags.empty? || (tags - server.tags).empty?) }
end

#find_server_by_id(id:) ⇒ Object



38
39
40
41
42
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 38

def find_server_by_id(id:)
  record(:find_server_by_id, id: id)
  fail_if_requested!(:find_server_by_id)
  @servers.find { |server| server.id.to_s == id.to_s }
end

#upsert_dns_record(record:) ⇒ Object



83
84
85
86
87
88
89
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 83

def upsert_dns_record(record:)
  record(:upsert_dns_record, record: record)
  existing = find_dns_record(zone: record.zone, name: record.name, type: record.type)
  saved = record.with(id: existing&.id || SecureRandom.uuid)
  existing ? @dns_records[@dns_records.index(existing)] = saved : @dns_records << saved
  saved
end

#validate_credentials!Object



20
21
22
23
24
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 20

def validate_credentials!
  record(:validate_credentials)
  fail_if_requested!(:validate_credentials)
  true
end

#validate_server_spec!(spec:) ⇒ Object



26
27
28
29
30
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 26

def validate_server_spec!(spec:)
  record(:validate_server_spec, spec: spec)
  fail_if_requested!(:validate_server_spec)
  true
end

#wait_until_ready(id:, timeout:) ⇒ Object

Raises:

  • (KeyError)


61
62
63
64
65
66
67
68
69
70
# File 'lib/kitsune/kit/adapters/fake_provider.rb', line 61

def wait_until_ready(id:, timeout:)
  record(:wait_until_ready, id: id, timeout: timeout)
  fail_if_requested!(:wait_until_ready)
  server = @servers.find { |candidate| candidate.id == id }
  raise KeyError, "server not found: #{id}" unless server

  ready = server.with(status: "active", public_ip: server.public_ip || "203.0.113.10")
  @servers[@servers.index(server)] = ready
  ready
end