<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 19, 2016 at 3:07 PM, Chuck Payne <span dir="ltr"><<a href="mailto:terrorpup@gmail.com" target="_blank">terrorpup@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id=":1qf" class="" style="overflow:hidden">James,<br>
<br>
Thanks, I am working on getting ansible and spacewalk to work<br>
together. This is nice.</div></blockquote></div><br>Yeah, it's really easy to do some hefty tasks:</div><div class="gmail_extra"><br></div><div class="gmail_extra">```</div><div class="gmail_extra"><div class="gmail_extra">'use strict';</div><div class="gmail_extra"><br></div><div class="gmail_extra">const fs = require('fs');</div><div class="gmail_extra">const ty = require('then-yield');</div><div class="gmail_extra">const SatClient = require('sat5-xmlrpc');</div><div class="gmail_extra">const client = new SatClient({host: '<a href="http://rhn.example.com">rhn.example.com</a>'});</div><div class="gmail_extra"><br></div><div class="gmail_extra">const outputDir = '/tmp';</div><div class="gmail_extra"><br></div><div class="gmail_extra">function* doit() {</div><div class="gmail_extra"> try {</div><div class="gmail_extra"> const key = yield client.auth.login('user', 'supersecret');</div><div class="gmail_extra"><br></div><div class="gmail_extra"> const prodGroup = yield client.systemgroup.getDetails(key, 'PROD');</div><div class="gmail_extra"> const prodSystems = yield client.systemgroup.listSystemsMinimal(key, prodGroup.name);</div><div class="gmail_extra"><br></div><div class="gmail_extra"> const advisories = {};</div><div class="gmail_extra"><br></div><div class="gmail_extra"> for (let system of prodSystems) {</div><div class="gmail_extra"> const file = `${outputDir}/${<a href="http://system.name">system.name</a>}`;</div><div class="gmail_extra"> fs.appendFileSync(file, '# Errata Needed\n\n');</div><div class="gmail_extra"> const erratas = yield client.system.getRelevantErrata(key, <a href="http://system.id">system.id</a>);</div><div class="gmail_extra"> for (let errata of erratas) {</div><div class="gmail_extra"> let details;</div><div class="gmail_extra"> if (advisories.hasOwnProperty(errata.advisory_name)) {</div><div class="gmail_extra"> details = advisories[errata.advisory_name];</div><div class="gmail_extra"> } else {</div><div class="gmail_extra"> details = yield client.errata.getDetails(key, errata.advisory_name);</div><div class="gmail_extra"> advisories[errata.advisory_name] = details;</div><div class="gmail_extra"> }</div><div class="gmail_extra"><br></div><div class="gmail_extra"> let str = '';</div><div class="gmail_extra"> str += `+ ${errata.advisory_name}\n`;</div><div class="gmail_extra"> str += ` + type: ${details.type}\n`;</div><div class="gmail_extra"> str += ` + issued: ${details.issue_date}\n`;</div><div class="gmail_extra"> str += ` + sysnopsis: ${details.synopsis}\n`;</div><div class="gmail_extra"> fs.appendFile(file, str);</div><div class="gmail_extra"> }</div><div class="gmail_extra"> }</div><div class="gmail_extra"> } catch (e) {</div><div class="gmail_extra"> console.error(e);</div><div class="gmail_extra"> }</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra">ty.spawn(doit);</div></div><div class="gmail_extra">```<br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>James Sumners<br><a href="http://james.sumners.info/" target="_blank">http://james.sumners.info/</a> (technical profile)</div><div><a href="http://jrfom.com/" target="_blank">http://jrfom.com/</a> (personal site)</div><div><a href="http://haplo.bandcamp.com/" target="_blank">http://haplo.bandcamp.com/</a> (band page)</div></div></div></div></div>
</div></div>