I am trying to come up with a way to automate the process of publishing from our test server to our prod server. I have an integration that can confirms with the project leader that the Dashboard is ready to be published and that moves the ready integrations from one server to the other.
Is there a way to auto publish the dashboards or a folder I can copy them into? I know the app folder has the current dashboards in it but they are not named they have code titles.
This is good for getting them from Test but we really need help with getting them into Prod and possibility publishing over a older version of an App.
Our process currently is Exporting all dashboard which are ready for production to a specific folder. That folder is checked every hour. Anything in there is moved to the prod server into another specific folder.
We then have our Admin publish them from this folder but if we could have that be automated it would save him time and we wouldnt have to worry about accidentally publishing over the wrong application.
I looked in Apps and all the names are not the same as they would be if one would export them out so over writing them there is impossible. Unless there is a way to turn on conventional naming or name the QVF file the same as the App name. Either way we could back up that folder before copying over any of the apps before moving them into that folder. Then the changes in the app would take place the next time someone tried load the dashboard.
Yes, so we would need to find the corresponding API call for ImportApp which for some reason I'm not able to find. The exported file may have a GUID for a filename, but during the script, we can keep track of the filename and even export the GUID-Filename relationship to another file which will be used at a later date. Your pseudo-code/shell would look like something like this.
var list = qs.api.listapps().filter(predicatething);
var dict = lists.select( n => (n.guid, n.name));
//write dict to textfile.txt
list.ForEach( n => n.SaveQvF();
var dictCsv = readDictIntoCsv();
foreach( n in dictCsv )
var appLocation = ....
var importResult = qs.api.importapp(n.stream, n.appname, overwrite=true)
Unfortunately, I have yet to find the ImportApp service call.