c8y(1)

πŸ“¦ version 2.56.1, in nixpkgs unstable

πŸ’… c8y(1) β€” the operations-assert-count 411

okay so bestie, you're looking at the c8y(1) manual, and specifically the page for c8y-operations-assert-count. yes it's a mouthful, no you're not gonna say it out loud. let's go πŸŽ€

✨ NAME ✨

c8y-operations-assert-count β€” literally just asserts an operation count. that's it. that's the whole vibe check πŸ¦‹

✨ SYNOPSIS ✨

c8y operations assert count [flags]

✨ DESCRIPTION ✨

okay so the whole point: this command checks that a device has a specific amount of operations, and then it passes your input through completely untouched. like a bouncer who checks your ID and then just... lets you walk in πŸ’…

if the assertion is true, the input value β€” whether that's from stdin or an explicit argument value β€” gets passed untouched to stdout. and why do we care? because it's lowkey iconic for filtering a list of devices by whether they have a specific entity count, and then feeding those results into some downstream command (in the pipeline, bestie, in the pipeline 🫢).

real talk: by default, a failed assertion will not set the exit code to a non-zero value. so the command "fails" but the exit code is like πŸ™‚ everything's fine. if you actually want a non-zero exit code in that case, use the --strict option. that's the whole tea β˜•

✨ OPTIONS ✨

  • --attempts=-1 β€” number of attempts before giving up, per id (-1 = unlimited, go off king πŸ‘‘)
  • --bulkOperationId="" β€” bulk operation id. only retrieve operations related to the given bulk operation.
  • --dateFrom="" β€” start date or date and time of operation.
  • --dateTo="" β€” end date or date and time of operation.
  • --device=[] β€” the ManagedObject which is the source of this event. (accepts pipeline 🫢)
  • --duration="30s" β€” timeout duration. like 30s or 1m (that's 1 minute, bestie)
  • --fragmentType="" β€” the type of fragment that must be part of the operation. i.e. c8y_Restart
  • -h, --help[=false] β€” help for count
  • --interval="5s" β€” interval to check on the status, i.e. 10s or 1min
  • --maximum=-1 β€” maximum operation count (inclusive). a value of -1 disables this check entirely ✨
  • --minimum=-1 β€” minimum operation count (inclusive). a value of -1 disables this check entirely ✨
  • --status="" β€” operation status, can be one of SUCCESSFUL, FAILED, EXECUTING or PENDING.
  • --strict[=false] β€” strict mode, fail if no match is found (the drama is the point πŸ’€)

✨ OPTIONS INHERITED FROM PARENT COMMANDS ✨

look bestie, these aren't even this command's options, they're inherited from the parent commands. but they're still here, and we're still covering every single one. no cap 🌸

  • --abortOnErrors=10 β€” abort batch when reaching specified number of errors
  • --allowEmptyPipe[=false] β€” don't fail when piped input is empty (stdin)
  • --cache[=false] β€” enable cached responses
  • --cacheBodyPaths=[] β€” cache should limit hashing of selected paths in the json body. empty indicates all values
  • --cacheTTL="60s" β€” cache time-to-live (TTL) as a duration, i.e. 60s, 2m
  • -c, --compact[=false] β€” compact instead of pretty-printed output when using json output. pretty print is the default if output is the terminal
  • --confirm[=false] β€” prompt for confirmation
  • --confirmText="" β€” custom confirmation text
  • --currentPage=0 β€” current page which should be returned
  • --customQueryParam=[] β€” add custom URL query parameters. i.e. --customQueryParam 'withCustomOption=true,myOtherOption=myvalue'
  • --debug[=false] β€” set very verbose log messages
  • --delay="0ms" β€” delay after each request, i.e. 5ms, 1.2s
  • --delayBefore="0ms" β€” delay before each request, i.e. 5ms, 1.2s
  • --dry[=false] β€” dry run. don't send any data to the server
  • --dryFormat="markdown" β€” dry run output format. i.e. json, dump, markdown or curl
  • --examples[=false] β€” show examples for the current command
  • --filter=[] β€” apply a client side filter to response before returning it to the user
  • --flatten[=false] β€” flatten json output by replacing nested json properties with properties where their names are represented by dot notation
  • -f, --force[=false] β€” do not prompt for confirmation. ignored when using --confirm
  • -H, --header=[] β€” custom headers. i.e. --header "Accept: value, AnotherHeader: myvalue"
  • --includeAll[=false] β€” include all results by iterating through each page
  • -k, --insecure[=false] β€” allow insecure server connections when using SSL
  • -l, --logMessage="" β€” add custom message to the activity log
  • --maxJobs=0 β€” maximum number of jobs. 0 = unlimited (use with caution! ⚠️)
  • --noAccept[=false] β€” ignore Accept header will remove the Accept header from requests, however PUT and POST requests will only see the effect
  • --noCache[=false] β€” force disabling of cached responses (overwrites cache setting)
  • -M, --noColor[=false] β€” don't use colors when displaying log entries on the console
  • --noLog[=false] β€” disables the activity log for the current command
  • --noProgress[=false] β€” disable progress bars
  • --noProxy[=false] β€” ignore the proxy settings
  • -n, --nullInput[=false] β€” don't read the input (stdin). useful if using in shell for/while loops
  • -o, --output="table" β€” output format i.e. table, json, csv, csvheader
  • --outputFile="" β€” save JSON output to file (after select/view)
  • --outputFileRaw="" β€” save raw response to file (before select/view)
  • --outputTemplate="" β€” jsonnet template to apply to the output
  • -p, --pageSize=5 β€” maximum results per page
  • --progress[=false] β€” show progress bar. this will also disable any other verbose output
  • --proxy="" β€” proxy setting, i.e. http://10.0.0.1:8080
  • -r, --raw[=false] β€” show raw response. this mode will force output=json and view=off
  • --retries=3 β€” max number of attempts when a failed http call is encountered
  • --select=[] β€” comma separated list of properties to return. wildcards and globstar accepted, i.e. --select 'id,name,type,**.serialNumber'
  • --session="" β€” session configuration
  • --sessionMode="" β€” override default session mode for a single command which would normally be disabled
  • -P, --sessionPassword="" β€” override session password
  • -U, --sessionUsername="" β€” override session username. i.e. peter or t1234/peter (with tenant)
  • --silentExit[=false] β€” silent status codes do not affect the exit code
  • --silentStatusCodes="" β€” status codes which will not print out an error message
  • --timeout="600s" β€” request timeout duration, i.e. 60s, 2m
  • --totalPages=0 β€” total number of pages to get
  • -v, --verbose[=false] β€” verbose logging
  • --view="auto" β€” use views when displaying data on the terminal. disable using --view off
  • --withError[=false] β€” errors will be printed on stdout instead of stderr
  • --withTotalElements[=false] β€” request Cumulocity to include the total elements in the response statistics under .statistics.totalElements (introduced in 10.13)
  • -t, --withTotalPages[=false] β€” request Cumulocity to include the total pages in the response statistics under .statistics.totalPages
  • --workers=1 β€” number of workers

✨ EXAMPLE ✨

okay these examples are genuinely giving main character energy, watch this 🎬

$ c8y operations assert count --device 1234 --minimum 1
# => 1234 (if the ID exists)
# => <no response> (if the ID does not exist)
# Assert that a device exists, and has at least 1 operation

that one's the "does this device even exist and does it have at least one operation" check. simple, effective, slay ✨

$ c8y operations assert count --device 1234 --minimum 5 --maximum 10 --dateFrom -1d --strict
# Assert that the device with id=1111 should have between 5 and 10 operations (inclusive) in the last day
# Return an error if not

okay so this one has a range (5 to 10, inclusive bestie, don't forget inclusive) and it's looking at the last day, and it's --strict so it will actually throw hands if it doesn't match. yes the comment says id=1111 while the flag says 1234 β€” that's the original's business, not mine, I'm just the messenger πŸ’€

$ c8y devices list | c8y operations assert count --maximum 0 --dateFrom -7d
# Find a list of devices which have not created any operations in the last 7 days

pipeline queen πŸ‘‘ β€” list 'em, then filter down to the ones that have been absolute ghosts for the last 7 days. --maximum 0 meaning zero operations allowed, a true nothing-burger detector.

✨ SEE ALSO ✨

c8y-operations-assert(1) β€” go read that one next, bestie 🫢


and that's the page!! this little gem came from the c8y manual, dated Jan 1980 (yes, literally Jan 1980, the vintage of it all πŸŽ€), and it's page c8y(1) in the man set. mwah, go assert some counts πŸ’–πŸ¦‹βœ¨

πŸ“¦ where this page comes from