Bug 2179084 - `pcs resource create` fails with a traceback if empty interval is specified for an operation
Summary: `pcs resource create` fails with a traceback if empty interval is specified f...
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: pcs
Version: 9.2
Hardware: Unspecified
OS: Unspecified
medium
low
Target Milestone: rc
: ---
Assignee: Tomas Jelinek
QA Contact: cluster-qe
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-03-16 15:39 UTC by Tomas Jelinek
Modified: 2023-08-10 15:40 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-152108 0 None None None 2023-03-16 15:41:41 UTC

Description Tomas Jelinek 2023-03-16 15:39:30 UTC
Description of problem:
`pcs resource create` fails with a traceback if empty interval is specified for an operation


Version-Release number of selected component (if applicable):
pcs-0.11.4-6


How reproducible:
always, easily


Steps to Reproduce:
1. pcs resource create test ocf:pacemaker:Dummy op monitor interval=


Actual results:
Traceback (most recent call last):
  File "/usr/sbin/pcs", line 33, in <module>
    sys.exit(load_entry_point('pcs==0.11.4', 'console_scripts', 'pcs')())
  File "/usr/lib/python3.9/site-packages/pcs/app.py", line 273, in main
    routing.create_router(cmd_map, [])(
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/routing.py", line 33, in _router
    return cmd_map[sub_cmd](lib, argv_next, modifiers)
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/routing.py", line 33, in _router
    return cmd_map[sub_cmd](lib, argv_next, modifiers)
  File "/usr/lib/python3.9/site-packages/pcs/resource.py", line 745, in resource_create
    lib.resource.create(
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/lib_wrapper.py", line 95, in decorated_run
    return run_with_middleware(run, cli_env, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/middleware.py", line 14, in run
    return next_in_line(env, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/middleware.py", line 42, in apply
    result_of_next = next_in_line(env, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/middleware.py", line 80, in apply
    result_of_next = next_in_line(env, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pcs/cli/common/lib_wrapper.py", line 86, in run
    lib_call_result = run_library_command(lib_env, *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pcs/lib/commands/resource.py", line 433, in create
    primitive_element = resource.primitive.create(
  File "/usr/lib/python3.9/site-packages/pcs/lib/cib/resource/primitive.py", line 232, in create
    return append_new(
  File "/usr/lib/python3.9/site-packages/pcs/lib/cib/resource/primitive.py", line 290, in append_new
    create_operations(
  File "/usr/lib/python3.9/site-packages/pcs/lib/cib/resource/operations.py", line 398, in create_operations
    append_new_operation(operations_element, id_provider, operation)
  File "/usr/lib/python3.9/site-packages/pcs/lib/cib/resource/operations.py", line 428, in append_new_operation
    options["interval"],
KeyError: 'interval'


Expected results:
No traceback, print a nice error message.


Additional info:
It works with an empty timeout:
# pcs resource create test ocf:pacemaker:Dummy op monitor timeout=
# pcs resource config test
Resource: test (class=ocf provider=pacemaker type=Dummy)
  Operations:
    migrate_from: test-migrate_from-interval-0s
      interval=0s
      timeout=20s
    migrate_to: test-migrate_to-interval-0s
      interval=0s
      timeout=20s
    monitor: test-monitor-interval-60s
      interval=60s
    reload: test-reload-interval-0s
      interval=0s
      timeout=20s
    reload-agent: test-reload-agent-interval-0s
      interval=0s
      timeout=20s
    start: test-start-interval-0s
      interval=0s
      timeout=20s
    stop: test-stop-interval-0s
      interval=0s
      timeout=20s


Note You need to log in before you can comment on or make changes to this bug.