]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/cephadm/tests/test_agent.py
a4b1dc1b24368241435df62b257bdabe94c5e228
1 from unittest
.mock
import MagicMock
2 from cephadm
.agent
import Root
5 class FakeDaemonDescription
:
6 def __init__(self
, ip
, ports
, hostname
, service_name
='', daemon_type
=''):
9 self
.hostname
= hostname
10 self
._service
_name
= service_name
11 self
.daemon_type
= daemon_type
13 def service_name(self
):
14 return self
._service
_name
18 def get_daemons_by_service(self
, service_type
):
19 return [FakeDaemonDescription('1.2.3.4', [9100], 'node0'),
20 FakeDaemonDescription('1.2.3.5', [9200], 'node1')]
22 def get_daemons_by_type(self
, daemon_type
):
23 return [FakeDaemonDescription('1.2.3.4', [9100], 'node0', 'ingress', 'haproxy'),
24 FakeDaemonDescription('1.2.3.5', [9200], 'node1', 'ingress', 'haproxy')]
28 def get_addr(self
, name
: str):
32 class FakeServiceSpec
:
33 def __init__(self
, port
):
34 self
.monitor_port
= port
37 class FakeSpecDescription
:
38 def __init__(self
, port
):
39 self
.spec
= FakeServiceSpec(port
)
42 class FakeSpecStore():
43 def __init__(self
, mgr
):
45 self
._specs
= {'ingress': FakeSpecDescription(9049)}
47 def __contains__(self
, name
):
48 return name
in self
._specs
50 def __getitem__(self
, name
):
51 return self
._specs
['ingress']
57 self
.check_mon_command
= MagicMock(side_effect
=self
._check
_mon
_command
)
58 self
.mon_command
= MagicMock(side_effect
=self
._check
_mon
_command
)
59 self
.template
= MagicMock()
60 self
.log
= MagicMock()
61 self
.inventory
= FakeInventory()
62 self
.cache
= FakeCache()
63 self
.spec_store
= FakeSpecStore(self
)
65 def list_servers(self
):
69 'ceph_version': '16.2',
70 'services': [{'type': 'mgr'}, {'type': 'mon'}]},
72 'ceph_version': '16.2',
73 'services': [{'type': 'mgr'}, {'type': 'mon'}]}
78 def _check_mon_command(self
, cmd_dict
, inbuf
=None):
79 prefix
= cmd_dict
.get('prefix')
80 if prefix
== 'get-cmd':
81 return 0, self
.config
, ''
82 if prefix
== 'set-cmd':
83 self
.config
= cmd_dict
.get('value')
84 return 0, 'value set', ''
85 return -1, '', 'error'
87 def get_module_option_ex(self
, module
, option
, default_value
):
91 class TestCephadmService
:
93 def test_get_sd_config_prometheus(self
):
96 cfg
= root
.get_sd_config('mgr-prometheus')
98 # check response structure
101 assert 'labels' in entry
102 assert 'targets' in entry
105 assert cfg
[0]['targets'] == ['node0:9283', 'node1:9283']
107 def test_get_sd_config_node_exporter(self
):
110 cfg
= root
.get_sd_config('node-exporter')
112 # check response structure
115 assert 'labels' in entry
116 assert 'targets' in entry
119 assert cfg
[0]['targets'] == ['1.2.3.4:9100']
120 assert cfg
[0]['labels'] == {'instance': 'node0'}
121 assert cfg
[1]['targets'] == ['1.2.3.5:9200']
122 assert cfg
[1]['labels'] == {'instance': 'node1'}
124 def test_get_sd_config_alertmgr(self
):
127 cfg
= root
.get_sd_config('alertmanager')
129 # check response structure
132 assert 'labels' in entry
133 assert 'targets' in entry
136 assert cfg
[0]['targets'] == ['1.2.3.4:9100', '1.2.3.5:9200']
138 def test_get_sd_config_haproxy(self
):
141 cfg
= root
.get_sd_config('haproxy')
143 # check response structure
146 assert 'labels' in entry
147 assert 'targets' in entry
150 assert cfg
[0]['targets'] == ['1.2.3.4:9049']
151 assert cfg
[0]['labels'] == {'instance': 'ingress'}
153 def test_get_sd_config_invalid_service(self
):
156 cfg
= root
.get_sd_config('invalid-service')