86dd6e1d0d0cc23f8e8776348fd8b3845be534e2
1 from charms
.reactive
import hook
2 from charms
.reactive
import RelationBase
3 from charms
.reactive
import scopes
6 class RequiresOpenVIMCompute(RelationBase
):
9 @hook('{requires:openvim-compute}-relation-{joined,changed}')
11 self
.set_state('{relation_name}.connected')
12 if self
.ready_to_ssh():
13 self
.set_state('{relation_name}.available')
15 @hook('{requires:openvim-compute}-relation-{broken,departed}')
17 self
.remove_state('{relation_name}.connected')
18 self
.remove_state('{relation_name}.available')
20 def send_ssh_key(self
, key
):
21 for c
in self
.conversations():
22 c
.set_remote('ssh_key', key
)
24 def authorized_nodes(self
):
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')]
30 def ready_to_ssh(self
):
31 return len(self
.authorized_nodes()) > 0