86dd6e1d0d0cc23f8e8776348fd8b3845be534e2
[osm/openvim.git] / charm / openvim / interface-openvim-compute / requires.py
1 from charms.reactive import hook
2 from charms.reactive import RelationBase
3 from charms.reactive import scopes
4
5
6 class RequiresOpenVIMCompute(RelationBase):
7 scope = scopes.UNIT
8
9 @hook('{requires:openvim-compute}-relation-{joined,changed}')
10 def changed(self):
11 self.set_state('{relation_name}.connected')
12 if self.ready_to_ssh():
13 self.set_state('{relation_name}.available')
14
15 @hook('{requires:openvim-compute}-relation-{broken,departed}')
16 def departed(self):
17 self.remove_state('{relation_name}.connected')
18 self.remove_state('{relation_name}.available')
19
20 def send_ssh_key(self, key):
21 for c in self.conversations():
22 c.set_remote('ssh_key', key)
23
24 def authorized_nodes(self):
25 return [{
26 'user': c.get_remote('user'),
27 'address': c.get_remote('private-address'),
28 } for c in self.conversations() if c.get_remote('ssh_key_installed')]
29
30 def ready_to_ssh(self):
31 return len(self.authorized_nodes()) > 0