在下属魅力中获取远程单位名称

在下属魅力中获取远程单位名称

在我的 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')

相关内容