bheisig / i-doit-cli

Access your CMDB on the command line interface
GNU Affero General Public License v3.0
13 stars 1 forks source link

Missing documentation: How to upload a file? #26

Open wernerflamme opened 5 years ago

wernerflamme commented 5 years ago

I chanced in issuing idoitcli create file/"Patches MYHOST_2011-05-03.txt" The file entry showed up in idoit. But how do I upload the file via idoitcli?

Expected behavior

idoitcli list or idoitcli create -h should show some hints how to upload files to idoit. From using the API, I know that there would be 3 steps:

Actual behavior

There are no hints available how to achieve this.

Steps to reproduce the behavior

Get a file and try to upload :grin:

I'm sorry if I missed available docs, but I've been too thick to find them. :disappointed:

Regards, Werner

bheisig commented 5 years ago

Hello Werner,

Sorry for the late reply. Uploading files is currently not supported by idoitcli. But it makes sense to implement this feature because – like you wrote – the i-doit JSON-RPC API is able to upload base64 encoded files. My idea is to add a new command called upload:

idoitcli upload path/to/file.txt --object 123 --new

The optional option --object assigns the file to an object identified by its title or identifier. The other optional option --new enforces to create a new file object before uploading. Otherwise, it will try to identify an existing file object by the title file.txt.

What do you think?

wernerflamme commented 5 years ago

Hello Benjamin, I think this is great. Currently I'm building my own JSON query and using idoitcli call "$MYQUERY" to do it.

Maybe you can include the possibility to add the uploaded file as a new version to an already existing file object? Like, I created a file object (cmdb.object.create 'COBJTYPEFILE) named "Patchlist myhost" and upload the new files as versions now (cmdb.category.create, CCMDBSUBCAT__FILE_VERSIONS). My files are named hostname_timestamp.txt, so I use the hostname to find "Patchlist $hostname" and add version "$timestamp". This would better be extra parameters though...

BTW, I found out (by replaying the samples from the API sample page) that I even don't need to include my apikey since idoitcli adds it if it's missing. This is a noteable feature since it allows better sharing of scripts using idoitcli :+1: