def operation(self, wsmancmds, cmdname, *args): ruri = wsmancmds[cmdname]["ResourceURI"] act = wsmancmds[cmdname]["Action"] sset = {} tset = wsmancmds[cmdname]["SelectorSet"] for i in tset["w:Selector"]: sset[i['@Name']] = i['#text'] toargs = self._build_ops(wsmancmds, cmdname, *args) wsm = RestRequest() wsm.set_header(self.endpoint, ruri, (ruri + "/" + act)) wsm.add_selectors(sset) wsm.add_body(ruri, act, toargs['retval']) return self._communicate(wsm)
def _communicate(self, wsm, name=None): try: self.proto.connect() self._logger.debug("Sending: " + wsm.get_text()) result = self.proto.ship_payload(wsm.get_text()) # Status = 202 - job created successfully # Status = 200 - job created successfully self._logger.debug("Received: " + str(result)) en = RestResponse().execute_str(result) out = self._parse_output(en, name) return out except Exception as ex: self._logger.debug(str(ex)) # fake as if the error came from the WSMAN subsystem sx = RestRequest() sx.add_error(ex) self._logger.debug(sx.get_text()) en = RestResponse().execute_str(sx.get_text()) out = self._parse_output(en) return out
def enumerate(self, clsName, resource, select={}, resetTransport=False): wsm = RestRequest() wsm.enumerate(to=self.proto.endpoint, ruri=resource, selectors=select) return self._communicate(wsm)
def identify(self): """ Identifies the target product """ wsm = RestRequest() wsm.identify() return self._communicate(wsm)