kgranroth-tm opened a new issue, #115:
URL: https://github.com/apache/cloudstack-cloudmonkey/issues/115

   ### Summary
   Cloudmonkey requires a default profile in `.cmk/config` to read the 
`.cmk/profiles/*.cache` files and it will ignore the command line arg when 
loading said cache, preferring the default profile.
   
   ### System
   OS: MacOS 11
   CPU: darwin.x86-64
   CMK Version: 6.2.0 (build: 8aae61e, 2021-09-23T10:50:26+0530)
   
   ### Setup
   Create a sample `.cmk/config` with something like:
   ```
   profile = dev
   [dev]
   ...
   [prod]
   ...
   ```
   Then perform a sync:
   ```
   $ cmk sync
   Discovered 194 APIs
   ```
   Verify that it did create the sync cache for `dev`:
   ```
   $ ls ~/.cmk/profiles
   dev.cache
   ```
   Verify that my custom command did sync and is cached:
   ```
   $ jq '.api[] | select(.name=="myCustomCommand") | {name: .name}' 
~/.cmk/profiles/dev.cache   
   {
     "name": "myCustomCommand"
   }
   ```
   
   ### Attempt 1: Shouldn't work but does
   Let's try to use one of those recently synced custom commands for `prod`, 
which doesn't have any cache file at all (as seen above):
   ```
   cmk -d -p prod myCustomCommand
   [debug] Trying to load profile: prod
   [debug] cmdline args:cmk, -d, -p, prod, myCustomCommand
   [debug] ExecCmd args: myCustomCommand
   <actual results of working command>
   ```
   That works, even though it shouldn't. The debug output shows that it is 
loading `prod` profile but I would expect it to fail since there is no 
`prod.cache` with the custom commands. Instead, it is reading `dev.cache` for 
the custom commands and only use `prod` as the profile for the actual execution 
of the command.
   
   ### Attempt 2: Should work, but doesn't
   Let's remove the default profile from `.cmk/config` (setting it to `profile 
=` or entirely deleting the line both do the same):
   ```
   profile =
   [dev]
   ...
   [prod]
   ...
   ```
   Then, since `dev.cache` already exists, let's try and use that:
   ```
   $ cmk -d -p dev myCustomCommand 
   [debug] Trying to load profile: dev
   [debug] cmdline args:cmk, -d, -p, dev, myCustomCommand
   [debug] ExecCmd args: myCustomCommand
   Error: unknown command or API requested
   ```
   That _should_ work since there is a `dev.cache` file; there is a `[dev]` 
profile defined in the `.cmk/config`; and it does recognize that `-p dev` is 
valid. But because there is no `profile = dev` in `.cmk/config`, it will not 
work.
   
   ### Workarounds
   If `myCustomCommand` is the same in all profiles, then I can simply 
arbitrarily set `profile = dev` in `.cmk/config` and the command line `-p 
<profile>` will work for all profiles.
   
   Alternatively, I can have separate config files per profile and use the new 
`-c <config>` option, but that only works starting recently.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@cloudstack.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to