organizing the world of cq rest infinitive possibilities by arkadiusz kita

77
Organizing The World of Adobe CQ REST infinitive possibilities Arkadiusz.Kita@Cognifide.com 9th April 2014

Upload: aemhub2014

Post on 11-Nov-2014

502 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Organizing The Worldof

Adobe CQ REST infinitive possibilities

[email protected]

9th April 2014

Page 2: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Arkadiusz Kita CQ Developer

Page 3: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Wednesday morning, 9th April 2014...

...another beautiful day at work!

There is time for my favouritecoffee!

Page 4: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Wednesday morning, 9th April 2014...

...another beautiful day at work!

...but wait - there is an importante-mail in my inbox!

Page 5: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

1 The client needs PoC ASAP

2 Next week 1 mln hits campaign!

3 Agency is ready for content entry!

Mainframe

4 Ad-hoc infrastructure!

5 Monitoring/maintenance required!

Page 6: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

1 The client needs PoC ASAP

2 Next week 1 mln hits campaign!

3 Agency is ready for content entry!

Mainframe

4 Ad-hoc infrastructure!

5 Monitoring/maintenance required!

Page 7: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

1 The client needs PoC ASAP

2 Next week 1 mln hits campaign!

3 Agency is ready for content entry!

Mainframe

4 Ad-hoc infrastructure!

5 Monitoring/maintenance required!

Page 8: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

1 The client needs PoC ASAP

2 Next week 1 mln hits campaign!

3 Agency is ready for content entry!

Mainframe

4 Ad-hoc infrastructure!

5 Monitoring/maintenance required!

Page 9: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

1 The client needs PoC ASAP

2 Next week 1 mln hits campaign!

3 Agency is ready for content entry!

Mainframe

4 Ad-hoc infrastructure!

5 Monitoring/maintenance required!

Page 10: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

It seems like huge pressure and a lot of work to do...

Page 11: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

...or maybe rather a lot of CQ clicks!

Page 12: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Managing a cloud of...

...thousands of AEM/CQ instances

...hundreds of dev, test, qa, uat, live environments...tens of client deployments

in a consistent way!

Page 13: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Managing a cloud of...

...thousands of AEM/CQ instances...hundreds of dev, test, qa, uat, live environments

...tens of client deployments

in a consistent way!

Page 14: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Managing a cloud of...

...thousands of AEM/CQ instances...hundreds of dev, test, qa, uat, live environments

...tens of client deployments

in a consistent way!

Page 15: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Managing a cloud of...

...thousands of AEM/CQ instances...hundreds of dev, test, qa, uat, live environments

...tens of client deployments

in a consistent way!

Page 16: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Providing condensed...

checklists knowledge know-how

...for developers/administrators

in a reusable way!

Page 17: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Providing condensed...

checklists

knowledge know-how

...for developers/administrators

in a reusable way!

Page 18: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Providing condensed...

checklists knowledge

know-how

...for developers/administrators

in a reusable way!

Page 19: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Providing condensed...

checklists knowledge know-how

...for developers/administrators

in a reusable way!

Page 20: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Providing condensed...

checklists knowledge know-how

...for developers/administrators

in a reusable way!

Page 21: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Last but not least!

1 Automating repetetive tasks

2 Improving safety and security by not touching anything twice3 Focusing on real challenges!!! Discovering new possibilities!4 Being happy, not bored!5 Loving what you do!

Page 22: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Last but not least!

1 Automating repetetive tasks2 Improving safety and security by not touching anything twice

3 Focusing on real challenges!!! Discovering new possibilities!4 Being happy, not bored!5 Loving what you do!

Page 23: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Last but not least!

1 Automating repetetive tasks2 Improving safety and security by not touching anything twice3 Focusing on real challenges!!! Discovering new possibilities!

4 Being happy, not bored!5 Loving what you do!

Page 24: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Last but not least!

1 Automating repetetive tasks2 Improving safety and security by not touching anything twice3 Focusing on real challenges!!! Discovering new possibilities!4 Being happy, not bored!

5 Loving what you do!

Page 25: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Last but not least!

1 Automating repetetive tasks2 Improving safety and security by not touching anything twice3 Focusing on real challenges!!! Discovering new possibilities!4 Being happy, not bored!5 Loving what you do!

Page 26: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Use AEM/CQ REST infinitive possibilities!

UNIXUNIXTry the github.com/Cognifide/CQ-Unix-Toolkit!

Start using it!Help us develop it!

Page 27: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 28: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 29: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 30: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 31: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 32: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

What is the CQ Unix Toolkit?

+ + = UNIXUNIX

open source user-friendly curl wrapper

set of independent simple micro tools

AEM/CQ HTTP REST semi-code/semi-documentation

allows to control CQ/dispatcher by HTTP

Commons are extracted into one cqapi tool.

Page 33: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Use cases

Page 34: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 1 — distributed REST knowledge

No common place for AEM/CQ REST documentation!

Page 35: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 36: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 37: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 38: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 39: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 40: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 41: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 42: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 2 — hacking packages

1 Installing hotfixes/releases automaticallycqput; cqrun

2 Synchronizing content between instancescqpkg; cqput; cqbld; cqcp; cqrun; cqsnp

3 Making path-based backupscqpkg; cqput; cqbld; cqcp

4 Uninstalling deleted packagescqsnp

5 Clearing content pathscqpkg; cqput; cqrun

6 Moving paths from repository externallycqpkg; cqput; cqrun; cqsnp; cqsnp

7 Deleting unknown/garbage packagescqls; cqdel; cqsnp

Page 43: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 44: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring

2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 45: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status

3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 46: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks

4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 47: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction

5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 48: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge

6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 49: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection

7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 50: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool

8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 51: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)

$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 52: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 3 — monitoring/maintenance

1 cqmon – Sling JMX monitoring2 cqwfl – running/stale workflows status3 cqchk – repository consistency checks4 cqtpm – TarPM compaction5 cqmrg – Lucene indexes merge6 cqgc – DataStore garbage collection7 cqdam – AEM/CQ DAM Health Tool8 cqosgi + diff – bundle states (by using patterns)$ cqosgi -m > pattern-file;$ cqosgi -s org.apache.sling.jcr.davexStopping bundle: org.apache.sling.jcr.davex (#109)$ cqosgi -m | diff -q - pattern-fileFiles - and pattern-file differ

Page 53: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 54: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management

2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 55: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages

3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 56: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots

4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 57: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache

5 cqcfg – change bundle configuration remotelyconfigure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 58: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 59: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Case 4 — common devops tasks

1 cqosgi – automated bundle management2 cqpkg – create ad-hoc empty packages3 cqrepkg – fast offline repackaging for your content snapshots4 cqclr – clear dispatcher cache5 cqcfg – change bundle configuration remotely

configure SMTP clienttune Sling Main servlet

6 cqjcr – list JCR nodes, change and add themdynamically-scoped backups:cqjcr; cqpkg; cqbld; cqcp; cqdelchange Sling redirect/disable ContentFinder

Page 60: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Development

Create new tools with us!Organize the AEM/CQ REST World!

Page 61: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

DevelopmentCreate new tools with us!

Organize the AEM/CQ REST World!

Page 62: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 1 — Capture day to day requests

Page 63: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 2 — Write user-friendly usage messages

$ cqbldUsage: cqbld [OPTION...] package-nameBuild (rebuild) already uploaded package by group id and name in CQ PackageManager using instance URL. Examples: cqbld -u admin pack # Build package named pack cqbld -u admin -g GRP pack # Build package named pack in group GRP cqbld -i http://localhost:5510 # Build package for localhost instance on tcp -g com.group stuff # port 5510 named stuff in group:com.group -p secret # with password provided: secret

Options:

-u use specified usernamed for connection -p use provided password for authentication -i use specified instance URL to connect -g locate package by additional group ID

Page 64: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 3 — Choose descriptive code over comments

# Invoke curl tool with current referer and # instance URL and credentials to get list # of packages STATUS=`$CURLBIN -s --write-out "%{http_code}"\ -u "$u:$p" -H "Referer: $url/crx/packmgr"\ -F cmd=ls "$url/crx/packmgr/service.jsp"`

Page 65: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 3 — Choose descriptive code over comments

# Invoke curl tool with current referer and # instance URL and credentials to get list # of packages STATUS=`$CURLBIN -s --write-out "%{http_code}"\ -u "$u:$p" -H "Referer: $url/crx/packmgr"\ -F cmd=ls "$url/crx/packmgr/service.jsp"`

Page 66: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 3 — Choose descriptive code over comments

PACKAGE_MANAGER_PATH="/crx/packmgr"REFERER="${instance}${PACKAGE_MANAGER_PATH}" AUTH="${username}:${password}" FILEPATH="${PACKAGE_MANAGER_PATH}/service.jsp" FULL_URL="${instance}${FILEPATH}" REFERER_HEADER= "Referer: ${REFERER}" COMMAND="cmd=ls"

Use shellcheck.net to validate POSIX shell syntax!

Page 67: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 3 — Choose descriptive code over comments

STATUS=$("${CURLBIN}" \ -s \ --write-out "%{http_code}" \ -u "${AUTH}" \ -H "${REFERER_HEADER}" \ -F "${COMMAND}" \ "${FULL_URL}")

Page 68: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 3 — Choose descriptive code over comments

STATUS=$("${CURLBIN}" \ -s \ --write-out "%{http_code}" \ -u "${AUTH}" \ -H "${REFERER_HEADER}" \ -F "${COMMAND}" \ "${FULL_URL}")

Page 69: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 4 — Use POSIX getopts for custom parameters

while getopts ":abc${apigetopts}" optdo case "${opt}" in

...

\?) echo "Invalid option: -${OPTARG}" >&2; _usage;; :) echo "Option -${OPTARG} requires an argument." >&2;

_usage;; esac done

Page 70: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 5 — Use cqapi to detect/handle curl command

cqapi

shared code, status, parsing common options, error handling

Page 71: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 6 — Use the most usable REST HTTP

pick!

rate!

choose!

Page 72: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 7 — Reserve API cmdline options for CQ/AEM connectivity

-u username-i instance URL-p password

Page 73: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 8 — Avoid including external custom dependencies

This can be harmful,hard in use and notportable!

Page 74: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 9 — Keep It Simple Stupid

KiSS

Keep toolkit filesas small as possibleup to 400 LOC

Manage complexity!Simplify logic!

Page 75: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Rule 9 — Keep It Simple Stupid

KiSS

Keep toolkit filesas small as possibleup to 400 LOC

Manage complexity!Simplify logic!

Page 76: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Thank you!

Q&A

Page 77: Organizing the world of CQ rest infinitive possibilities by Arkadiusz Kita

Resources

https://github.com/Cognifide/CQ-Unix-Toolkit

Presentation symbols provided by Tango Desktop Project

blog entry on Cognifide website