- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试检查引导文件系统空间,如果它超过 100 MB,则使用 ansible assert 模块传递条件。但条件检查无法正常运行
我尝试将字符串值转换为整数并进行比较,但条件检查仍然存在一些问题
- hosts: prod_gateways
gather_facts: True
become: True
tasks:
- name: Checking space
assert:
that:
- "[[ {{item.size_available|int}} > 104857600 ]]"
when: item.mount == "/boot"
with_items: "{{ ansible_mounts }}"
register: disk_free
- name: Fail when disk space needs attention
fail:
msg: "pda_output=[[ boot space is less then 100mb ]]"
when: disk_free is failed
预期结果: 如果我将 104857600 更改为 1048576000(1000 mb),条件应该会失败,因为可用空间有 873 mb。但条件仍然通过
实际结果:
TASK [Checking space] *******************************************************************************************************************
skipping: [140.83.115.208] => (item={u'block_used': 2022411, u'uuid': u'ab881282-6114-4296-b1ae-12a21e40cbdb', u'size_total': 21003628544, u'block_total': 5127839, u'mount': u'/', u'block_available': 3105428, u'size_available': 12719833088, u'fstype': u'ext4', u'inode_total': 1310720, u'inode_available': 1134075, u'device': u'/dev/mapper/vg_gateway-lv_root', u'inode_used': 176645, u'block_size': 4096, u'options': u'rw'})
ok: [140.83.115.208] => (item={u'block_used': 40877, u'uuid': u'91564fc4-0879-4459-a3fe-ce6686f228f2', u'size_total': 1040015360, u'block_total': 253910, u'mount': u'/boot', u'block_available': 213033, u'size_available': 872583168, u'fstype': u'ext4', u'inode_total': 65536, u'inode_available': 65481, u'device': u'/dev/md0', u'inode_used': 55, u'block_size': 4096, u'options': u'rw'}) => {
"changed": false,
"item": {
"block_available": 213033,
"block_size": 4096,
"block_total": 253910,
"block_used": 40877,
"device": "/dev/md0",
"fstype": "ext4",
"inode_available": 65481,
"inode_total": 65536,
"inode_used": 55,
"mount": "/boot",
"options": "rw",
"size_available": 872583168,
"size_total": 1040015360,
"uuid": "91564fc4-0879-4459-a3fe-ce6686f228f2"
},
"msg": "All assertions passed"
}
skipping: [140.83.115.208] => (item={u'block_used': 7436106, u'uuid': u'1824f3b5-7c7f-48dc-88fc-da40e02d72df', u'size_total': 33686405120, u'block_total': 8224220, u'mount': u'/home', u'block_available': 788114, u'size_available': 3228114944, u'fstype': u'ext4', u'inode_total': 2097152, u'inode_available': 2093635, u'device': u'/dev/mapper/vg_gateway-lv_home', u'inode_used': 3517, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 68527765, u'uuid': u'4cb2e3ce-ca82-40b7-9a32-865532612a1f', u'size_total': 352868540416, u'block_total': 86149546, u'mount': u'/orahome', u'block_available': 17621781, u'size_available': 72178814976, u'fstype': u'ext4', u'inode_total': 21889024, u'inode_available': 21472344, u'device': u'/dev/mapper/vg_gateway-lv_orahome', u'inode_used': 416680, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 7674455, u'uuid': u'201caae6-e6ba-467e-bda9-7419c7268223', u'size_total': 79132893184, u'block_total': 19319554, u'mount': u'/stage', u'block_available': 11645099, u'size_available': 47698325504, u'fstype': u'ext4', u'inode_total': 4915200, u'inode_available': 4911867, u'device': u'/dev/mapper/vg_gateway-lv_stage', u'inode_used': 3333, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 5176863, u'uuid': u'4a53a162-9b70-4511-9461-26330a82c465', u'size_total': 79132893184, u'block_total': 19319554, u'mount': u'/var', u'block_available': 14142691, u'size_available': 57928462336, u'fstype': u'ext4', u'inode_total': 4915200, u'inode_available': 4873288, u'device': u'/dev/mapper/vg_gateway-lv_var', u'inode_used': 41912, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 27504630, u'uuid': u'97229ed4-108c-44eb-bef8-e1afd61c30c2', u'size_total': 285227425792, u'block_total': 69635602, u'mount': u'/orabackup', u'block_available': 42130972, u'size_available': 172568461312, u'fstype': u'ext4', u'inode_total': 17694720, u'inode_available': 17694608, u'device': u'/dev/mapper/vg_backup-lv_orabackup', u'inode_used': 112, u'block_size': 4096, u'options': u'rw'})
TASK [Fail when disk space needs attention] *********************************************************************************************
skipping: [140.83.115.208]
最佳答案
您尝试使用的 [[...]]
语法是什么?你需要去掉它和 Jinja 模板标记,这会给你:
- name: Checking space
assert:
that:
- item.size_available|int > 104857600
when: item.mount == "/boot"
with_items: "{{ ansible_mounts }}"
register: disk_free
您可以找到其他 examples in the documentation .
它现在总是通过的原因是你在 bool 上下文中评估一个非空列表,它总是为“真”。您实际上拥有:
assert:
that: "[[]]"
...这是一个包含单个项目的列表(在您的示例中,内部列表可能包含一个 bool 值——您的 x > y
比较的结果——但是对行为没有任何影响)。
关于linux - 如何在ansible中使用断言模块比较整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833617/
我有以下实体字段: /** * @Assert\Regex( * pattern = "/^d+\.(jpg|png|gif)$/", * htmlPattern = "/^d+\.(j
我有一个显示查询结果的表。 我使用这个检查表包含结果: cy.get("table", {timeout: 60000}).find("tr[data-index]").should("have.le
void (assert)(int e) { assert(e); } 这里是如何工作的? 最佳答案 void (assert)(int e) 相当于 void assert(int) 为什么
大家好,我的第一次测试遇到了一些问题 我正在写这个 fragment ,但我一直遇到这个问题: java.lang.AssertionError at org.junit.Assert.fail(As
从表中,我获取字符串列表,并想检查当 val!= "A"时,表列表中是否存在字符串“x”: for (int i = 0; i list = new ArrayList(); for(int i=0
我想在现有代码中为 VHDL 断言操作添加一个错误计数器。基本上,我的代码如下所示: assert data = good_data report "Bad data" severity er
我有一个无法处理的问题,所以我想也许你可以帮助我。基本上我有一个函数,它接收 char* 作为参数并对其执行一些操作(我已经检查了这些步骤/函数,它们工作得很好)。如果函数中给出的 char* 是“”
我有一些代码用于检查输入日期是否正确。只需检查是否不超过 12 个月,给定月份中的日期是否正确,并且还应该考虑闰年(因此,基本上是正常的日期检查)。唯一不合适的是年份不应低于 2000。如果日期无效,
我有一个关于 Cypress 断言的问题,最近才开始使用这个测试平台,但是当 URL 返回一个随机数时卡住了,如下所示。 /Geocortex/Essentials/REST/sites/SITE?f
我有一个 Python mock对象,我想断言是否设置了该对象的任何属性。 我不相信PropertyMock将适用于我的目的,因为我必须知道是否设置了任何属性,而不是特定属性。 它也不像我可以模拟模拟
考虑这个简单的基类 Foo 有一个函数 foo 调用一个纯虚函数 foo_,用 Doxygen 记录: class Foo { public: /** \brief This functi
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我在这段代码中执行 malloc 时遇到问题, /*function starts*/ if(NULL==(partial_results=(bignum_t**)malloc(sizeof
大家好,我想知道如何将整个代码块放入一个断言中? 例如,我有一个数组,我想对数组的每个值进行断言。这是我的代码的样子: for (int value : values) { assert Wi
这不是我的作业——我只是在练习。我似乎无法完全理解这个断言概念。 1) Determine the pre-condition for x that guarantees the post-condi
是否可以在带有时间戳的断言失败时记录信息 例如 int a = 10 assert( a > 100 ); 那么它将失败并像时间戳一样输出 2013-12-02 , 17:00:05 assert f
由于我们公司不使用单元测试,所以我正在自学对自己的代码进行单元测试。我正在使用标准的 .net 测试框架进行一些非常基本的单元测试。 我的一个方法返回一个 IEnumerable我想测试它的输出。所以
我有一个如下所示的对象数组,并且只想针对数组中的某些字段进行断言。 对象数组 - var a = [{"key":"key2","value":"value2","updatedBy":"name1"
我正在尝试编写一个 PSL 断言来检查输入断言的数量是否与输出断言的数量相匹配。 例如: . 在输入上任何时候都可能发生任何事情,输出也可以在任何时候断言。确切时间未知,也不重要。我要验证的是没有信息
我想在Cypress中做一个断言如下: cy.get(a).should('be.visible').or(()=>{ cy.get(b).should('be.visible'); });
我是一名优秀的程序员,十分优秀!