在我的 juju 模型中,我运行了一些应用程序,并且在其中一个应用程序上附加了一个 subordanite charm:
Unit Workload Agent Machine Public address Ports Message
mycharm/0* active idle 4 192.168.1.34 80/tcp ready
wordpress/0* unknown idle 2 192.168.1.48 80/tcp
trustysub/0* active idle 192.168.1.48 ready
现在我想让我的trustysub
下属 charm 知道他所附属的单位的 unit_name ( wordpress/0
)。因此,当我添加关系时juju add-relation wordpress trustysub
,我可以将的单位名称写入Wordpress
文件或其他地方。
@when('myrelation.available')
def write_unit_name():
# code to get unitname
f = open('myfile', 'w')
f.write('unitname')
f.close()
status_set('active', 'ready')
我的metadata.yml
样子是这样的:
name: trustysub
summary: test charm
maintainer: Sebastien Pattyn <[email protected]>
description: |
This subordinate charm writes the unitname from the charm it has a relationship with, to a file
tags: ['misc']
subordinate: true
requires:
subrelation:
interface: juju-info
scope: container
series: ['trusty']
任何想法我应该在我的代码中添加什么来获取我的下属魅力中的 Wordpress 的单元名称
答案1
这Charmhelpers.core.hookenv包中有一些函数可用于获取有关关系的信息。导入包将使您能够使用该remote_unit()
方法返回远程单元。这将返回当前关系钩子的特定远程单元。
你可以这样使用它。
from charmhelpers.core.hookenv import remote_unit
@when('myrelation.available')
def write_unit_name():
f = open('myfile', 'w')
f.write(remote_unit())
f.close()
status_set('active', 'ready')