Skip to main content

Debugging extension_start

On this page, we will cover the following:

  1. Debugging extension_start

Step 1 - Debugging extension_start

So far, we have launched/debugged two different dynamic choice commands. Now, to put it all together, we will add two configurations for extension_start: one that will delete a file and another for appending contents to a file.

Add an entry to delete a file. You may need to change which file and what directory to delete in:

configurations.yml
configurations.yml
properties:
agent:
log_level: Info
api:
dynamic_choice_commands:
exclude_file_ext:
- name: efe1
log_level: Inherited
fields:
target_directory:
- name: efe2
log_level: Trace
fields:
target_directory:
file:
- name: list_all_files
log_level: Inherited
fields:
exclude_file_ext:
- ""
target_directory:
- name: exclude_json_files
log_level: Inherited
fields:
exclude_file_ext:
- json
target_directory:

extension_start:
- name: delete_file_msi
log_level: Inherited
runtime_dir:
fields:
action:
- Delete
file:
- file.msi

Notice that extension_start accepts an array of configurations similar to how dynamic choice commands were configured above. extension_start has some additional unique properties, one of them being runtime_directory. From the Controller, it is possible to set the runtime directory before launching the Extension (once again, not possible for dynamic choice commands). So, the runtime_directory property is added to mimic that behavior. For extension_start, we don’t need to use the target_directory field, though we could if we wanted to (with some extra steps of changing to that directory manually).

Launch delete_file_msi (or whatever you named it). Inspect the directory specified in runtime_directory and the specified file should have been removed.

Now, we will add another configuration entry to extension_start to show how configurations.yml detects dependent fields and issues errors. Go ahead and add an entry similar to the one shown below:

configurations.yml
configurations.yml
properties:
agent:
log_level: Info
api:
dynamic_choice_commands:
exclude_file_ext:
- name: efe1
log_level: Inherited
fields:
target_directory:
- name: efe2
log_level: Trace
fields:
target_directory:
file:
- name: list_all_files
log_level: Inherited
fields:
exclude_file_ext:
- ""
target_directory:
- name: exclude_json_files
log_level: Inherited
fields:
exclude_file_ext:
- json
target_directory:

extension_start:
- name: delete_file_msi
log_level: Inherited
runtime_dir:
fields:
action:
- Delete
file:
- file.msi
- name: append_to_file_txt
log_level: Inherited
runtime_dir:
fields:
action:
- Append
file:
- file.txt
backup: true

configurations.yml should be reporting an error now. If you hover over the fields property under append_to_file_txt, it should say Missing property "contents". The contents field was set to be required if the value of action is Append (you can verify this by opening the template in the Controller and checking the contents field). The .schema file has logic to enforce this behavior as well, which is why configurations.yml is complaining. Go ahead and add the contents field along with some sample contents:

configurations.yml
- name: append_to_file_txt
log_level: Inherited
runtime_dir:
fields:
action:
- Append
contents: |
this is line 1
this is line 2
this is line 3
file:
- file.txt
backup: true

Now, launch append_to_file_txt (or whatever you named it). Inspect the directory specified in runtime_directory and the specified file should have been appended with contents and a backup should have been made with .bkp extension.