Я не уверен, правильно ли я использую это. У меня есть один класс, определяющий required_keys и provide_data для того же отношения. Следующий код excecutes provide_data для отношения join / change, но не устанавливает отношения namenode_sshkey. Если я удаляю строку required_keys, код внезапно работает (но тогда я не могу использовать этот класс для указания необходимых данных для отношения).
[...]
{
'service': 'namenode',
'ports': [9000, 50070], # ports to open after start
'provided_data': [
NamenodeRelation()
],
'required_data': [
NamenodeRelation(),
{'role' : 'namenode', 'command' : 'hadoop-daemon.sh'}
],
'data_ready': [
configure_namenode,
helpers.render_template(
source='upstart.conf',
target='/etc/init/namenode.conf')
],
},
[...]
class NamenodeRelation(RelationContext):
name = 'namenode'
interface = 'dfs'
def __init__(self, *args, **kwargs):
self.required_keys = ['slave_IP', 'private-address']
RelationContext.__init__(self,name=self.name, *args, **kwargs)
def provide_data(self):
return {'namenode_sshkey' : get_ssh_key() }
Является ли это поведение предполагаемым или это ошибка?