{"push_id":983214501,"size":5,"distinct_size":1,"ref":"refs/heads/develop","head":"5c01807c42486070c2b930c79ec9292eb659888d","before":"9e7acc1730c14f9fa9050b7c790a30b3e30adc65","commits":[{"sha":"a6750970a32ca643977cb55f259317fcc4f662fe","author":{"email":"7453cbd82c48d8acd14153e824a17ee83c61095c@us.ibm.com","name":"Eric Fried"},"message":"Make EntryWrapper.get work properly for CHILDren\n\nPreviously, an attempt to use EntryWrapper.get() to retrieve a CHILD\nobject would have looked like e.g.\n\n  cna_wrap = LPAR.get(adpt, root_id=lpar_uuid, child_type=CNA.schema_type,\n                      child_id=cna_uuid)\n\nThe first problem is that you had to ask for a CNA by calling get() on\nLPAR.\n\nThe second problem is that this internally resulted in:\n\n  resp = adpt.read(... maybe the right stuff to get a CNA ...)\n  return LPAR.wrap(resp)\n\nThat is, the final wrap was done from LPAR.  This will break (or, worse,\nmight actually return you an LPAR wrapper with a CNA in it) because resp\ncontains a ClientNetworkAdapter, not a LogicalPartition.\n\nWith this change set, retrieving a CHILD object is now possible via\nintuitive syntax, using new 'parent_type' and 'parent_uuid' kwargs.\n\n  cna_wrap = CNA.get(adpt, parent_type=lpar.LPAR, parent_uuid=lpar_uuid)\n\nThe parent_type arg may be specified as either the class (as above) or\nthe string:\n\n  cna_wrap = CNA.get(adpt, parent_type=lpar.LPAR.schema_type,\n                     parent_uuid=lpar_uuid)\n\n(The EntryWrapper.search API was also augmented to accept either the\nclass or the string for parent_type.)\n\nWhen retrieving an entry rather than a feed, the entry's UUID may be\nspecified via the new 'uuid' kwarg:\n\n  cna_wrap = CNA.get(adpt, parent_type=lpar.LPAR, parent_uuid=lpar_uuid,\n                     uuid=cna_uuid)\n\n...or, for compatibility, via 'child_id':\n\n  cna_wrap = CNA.get(adpt, parent_type=lpar.LPAR, parent_uuid=lpar_uuid,\n                     child_id=cna_uuid)\n\nRetrieving ROOT objects is backward compatible - though the new 'uuid'\nkwarg is now also available to use in place of 'root_id':\n\n  lpar_wrap = LPAR.get(adpt, uuid=lpar_uuid)\n\nCloses-Bug: 1544146\n\nChange-Id: I38023109ff818a6e883188d24c3bc41a18e4bd8f\n(cherry picked from commit 9bf478bb100c211c480aaabfdeed93b3d2b97409)","distinct":false,"url":"https://api.github.com/repos/powervm/pypowervm/commits/a6750970a32ca643977cb55f259317fcc4f662fe"},{"sha":"5e18ed0a0aecc504c82d906b9e215174e0c205a8","author":{"email":"7453cbd82c48d8acd14153e824a17ee83c61095c@us.ibm.com","name":"Eric Fried"},"message":"Merge \"Make EntryWrapper.get work properly for CHILDren\" into release/1.0.0.2","distinct":false,"url":"https://api.github.com/repos/powervm/pypowervm/commits/5e18ed0a0aecc504c82d906b9e215174e0c205a8"},{"sha":"932e9355c1bd0f96845f4ba7440c3447fe0dca55","author":{"email":"7453cbd82c48d8acd14153e824a17ee83c61095c@us.ibm.com","name":"Eric Fried"},"message":"Decorate wrapper properties with their XAGs\n\nGiven:\n- A REST property with schema name SomeProperty and associated extended\n  attribute group SomeXAG; and\n- A pypowervm.wrappers.entry_wrapper.Wrapper subclass named SomeObject\n  which is to contain a getter property named some_prop for the above:\n\nThe DEVELOPER, when adding the property to SomeObject, should decorate\nit as:\n\n    @pypowervm.wrappers.entry_wrapper.Wrapper.xag_property('SomeXAG')\n    def some_prop(self):\n        ...\n\nrather than\n\n    @property\n    def some_prop(self):\n        ...\n\nThe CONSUMER of SomeObject can then ask:\n\n    xag = SomeObject.get_xag_for_prop('some_prop')\n\nAt this point, the xag variable will contain 'SomeXAG'.\n\nFor any property not decorated with xag_property, get_xag_for_prop()\nwill return None.\n\nThis change set also introduces a new module, pypowervm.utils.wrappers,\nin which a utility called wrapper_class_iter is defined.  This\ndynamically loads all modules in pypowervm.wrappers, discovers\nsubclasses of pypowervm.wrappers.entry_wrapper.Wrapper therein, and\nyields them.\n\nChange-Id: Ia78af79b07e4d71a312ab3154e3e68565ee58048\n(cherry picked from commit 326f5562c226eb39064beb15be3a51e22f3e196f)","distinct":false,"url":"https://api.github.com/repos/powervm/pypowervm/commits/932e9355c1bd0f96845f4ba7440c3447fe0dca55"},{"sha":"41b9991924340e8d6ba6e5451b3cb646c6a6ea51","author":{"email":"4e39894354e2e456dc38787ccd1659ec15190e0a@us.ibm.com","name":"Drew Thorstensen"},"message":"Remove re-entrant lock bug in close vterm\n\nThe _close_vterm_local method got the same lock as a method it called.\nThis caused the code to hang when calling the close vterm.\n\nThis change set removes the duplicate lock.\n\nChange-Id: I46f6a251be67ad6177e21a5ae80e856cd5951d0d\nCloses-Bug: 1546748","distinct":false,"url":"https://api.github.com/repos/powervm/pypowervm/commits/41b9991924340e8d6ba6e5451b3cb646c6a6ea51"},{"sha":"5c01807c42486070c2b930c79ec9292eb659888d","author":{"email":"3fb2692d0513871e59e592869966aaccaed70341@us.ibm.com","name":"adreznec"},"message":"Merge remote-tracking branch 'remotes/origin/release/1.0.0.2' into develop\n\nConflicts:\n\tpypowervm/tasks/cna.py\n\nChange-Id: I8236d35eacc3bd757a9dcc4683c8b4a0b5dd6924","distinct":true,"url":"https://api.github.com/repos/powervm/pypowervm/commits/5c01807c42486070c2b930c79ec9292eb659888d"}]}