jssimporter / JSSImporter

JSSImporter is deprecated. Please see the wiki for alternatives
Apache License 2.0
145 stars 38 forks source link

Missing value if a package uploaded to JSS #124

Closed doschupp closed 6 years ago

doschupp commented 6 years ago

At the moment you don't see/get a message when a (new) package has been uploaded to your jss repo. You also can't detect an upload in the optional report plist (--report-plist).

Because of a missing value, you can't detect an upload with a script and send a mail if a new version from software XYZ was uploaded.

It would be great if you can review my changes below or implement something similar. This could also be interesting for many others?

(JSSImporter.py)

630c630
<                     "Extension_Attributes", "Policy", "Icon", "Version"],
---
>                     "Extension_Attributes", "Policy", "Icon", "Version", "Package_Uploaded"],
640c640,641
<                     "Version": ""
---
>                     "Version": "",
>                     "Package_Uploaded": ""
684a686,689
>             jss_package_uploaded = self.get_report_string(changes["jss_repo_updated"])
>             if jss_package_uploaded:
>                 data["Package_Uploaded"] = "True"
> 

After these changes you get following when you run AutoPkg (CLI):

The following changes were made to the JSS:
    Name           Package                          Categories  Groups                                     Scripts  Extension Attributes        Policy                     Icon  Version        Package Uploaded  
    ----           -------                          ----------  ------                                     -------  --------------------        ------                     ----  -------        ----------------  
    Google Chrome  Google Chrome-63.0.3239.132.pkg              Software: Google Chrome nicht installiert                                       Google Chrome                    63.0.3239.132  True                    
    Google Chrome  Google Chrome-63.0.3239.132.pkg              AutoInstall: Google Chrome                          AutoInstall: Google Chrome  AutoInstall Google Chrome        63.0.3239.132                    
    Google Chrome  Google Chrome-63.0.3239.132.pkg              Software: Google Chrome nicht aktuell                                           Update Google Chrome             63.0.3239.132                    
    Google Chrome                                               Software: Google Chrome installiert                                             Google Chrome entfernen          63.0.3239.132   

and report plist:

....
    <key>summary_results</key>
    <dict>
        <key>jss_importer_summary_result</key>
        <dict>
            <key>data_rows</key>
            <array>
                <dict>
                    <key>Categories</key>
                    <string></string>
                    <key>Extension_Attributes</key>
                    <string></string>
                    <key>Groups</key>
                    <string>Software: Google Chrome nicht installiert</string>
                    <key>Icon</key>
                    <string></string>
                    <key>Name</key>
                    <string>Google Chrome</string>
                    <key>Package</key>
                    <string>Google Chrome-63.0.3239.132.pkg</string>
                    <key>Package_Uploaded</key>
                    <string>True</string>
                    <key>Policy</key>
                    <string>Google Chrome</string>
                    <key>Scripts</key>
                    <string></string>
                    <key>Version</key>
                    <string>63.0.3239.132</string>
                </dict>
....

"Now" your script can detect an upload with the key "<key>Package_Uploaded</key>".

sheagcraig commented 6 years ago

Sounds great to me @Nerthil. Can you send me a PR for this?

sheagcraig commented 6 years ago

Aww yeah-nice work!

doschupp commented 6 years ago

Thx for merging. Yes that's really useful. We use this to automate our packaging process with the continuous integration solution from GitLab :)

But, I tested my changes with the pre-release (1.0.1) and it currently doesn't work as aspected (anymore). I would make a new merge request when I found the problem.

sheagcraig commented 6 years ago

Ah-yeah, look back in the commit log. I think we had a bug in the reporting where it was using incorrect names for things...

Probably git blame would help too.

doschupp commented 6 years ago

Found it (Commit 318ad028f88e910c3ed1b6a65d66b1f4bc26426c). But I'm not sure, why it was changed from added to updated? The commit message says that it is never populated, but it is set when a package was added?! Or am I wrong?

493c493
< if self.env["jss_changed_objects"]["jss_package_added"]:
> if self.env["jss_changed_objects"]["jss_package_updated"]:
doschupp commented 6 years ago

Checked it again. And yes, my changes are still working correctly. I thought it was my fault, but because of the "jss_package_updated" changes the JSSImporter uploads the packages on every run.