Expand my Community achievements bar.

SOLVED

Auto Uploading and Installing Packages in AEM

Avatar

Level 2

Hi,

In our deployment scenario, the authoring and publishing server would be on different servers. The authoring team will create the content and publish it.
This published content will be ftped securely to a share.
We need to create a job, which will retrieve this published content zip and upload it in package manager and post uploading, install it.
Does AEM provides some commands to do this?
We are thinking to create a batch file or a dot net application (.exe) to acheive this, but need info on some AEM APIs which will help us do this.
 

Regards,
Aditya Nayak

1 Accepted Solution

Avatar

Correct answer by
Employee

Hi,

The Package Manager has an HTTP API for doing those types of tasks: http://dev.day.com/docs/en/crx/current/how_to/package_manager.html#Package%20Manager%20HTTP%20Servic...

Regards,

Justin

View solution in original post

11 Replies

Avatar

Correct answer by
Employee

Hi,

The Package Manager has an HTTP API for doing those types of tasks: http://dev.day.com/docs/en/crx/current/how_to/package_manager.html#Package%20Manager%20HTTP%20Servic...

Regards,

Justin

Avatar

Employee Advisor

Hi,

Is FTP the only protocol you can use? Is the standard CQ replication (HTTP, you can also use HTTPS, proxy-support available) not ok? I would not try to reinvent this mechanism.

Jörg

Avatar

Level 2

Hi,

I do see that you can use PackageManager Http Service API -
http://localhost:7402/crx/packmgr/service/<response-format>/<package-jcr-path>?cmd=<command>

If my package is at a location "C:\ContentRepository\MYCo-ContentPackage.zip", How am I going to pass this path in the API?

Regards,

Aditya Nayak

Avatar

Employee

You would use the upload command. If you look at the documentation, you pass in the package file in the package form parameter.

Avatar

Level 2

Is this possible withoput using CURL, Since, we do not support CURL in our organization.

Some sample http example would be appreciated.

Thanks,
Aditya Nayak

Avatar

Employee

curl is just an HTTP client. You can use whatever HTTP client you want.

Avatar

Level 2

Hi Justin,

I am using C#.NET to acheive this (not CURL). Following is my code snippet. I am getting "package file parameter missing" message.

        private static void UploadAEMPublishPackage()                 {                     string url = "http://localhost:4503/crx/packmgr/service/.json/?cmd=upload";                     WebRequest request = WebRequest.Create(url);                     request.Method = "POST";                     request.ContentType = "multipart/form-data";                                         request.Credentials = new NetworkCredential("admin", "admin");                                         FileStream fs = null;                     fs = File.OpenRead(@"D:\AdobeAEM\packages\MySiteTaxonomy-1.0.0.zip");                     byte[] buffer = new byte[fs.Length];                     fs.Read(buffer, 0, Convert.ToInt32(fs.Length));                                         Stream reqstr = request.GetRequestStream();                     reqstr.Write(buffer, 0, buffer.Length);                     reqstr.Close();                                         WebResponse response = request.GetResponse();                     StreamReader reader = new StreamReader(response.GetResponseStream());                     string str = reader.ReadLine();                     while (str != null)                     {                         Console.WriteLine(str);                         str = reader.ReadLine();                     }                 }

Avatar

Level 10

Upload service takes 2 parameters one is command (cmd=upload) & other is package (package=file). In your code just uploading file does not help & you need to pass with right mapping(package) parameters.  You might find [1] discussion helpful,

[1]    http://stackoverflow.com/questions/219827/multipart-forms-from-c-sharp-client

Avatar

Level 2

Hi,

I was able to access the publisher and upload the zip.

I am doing a form post to my publisher instance -
http://localhost:4503/crx/packmgr/service/.json/?cmd=upload
But get following message - 
This node already exists: /etc/packages

I am not using CuRL, but using C#.NET classes like HttpWebRequest and HttpWebResponse.

Any help for me troubleshoot this further is greatly appreciated?

Thanks,
Aditya

Avatar

Level 1

Justin - do you have an updated URL for your pointer? dev.day.com does not exist. Isn't it documented on adobe.com?