def apply(self, obj): url=urlfix(self.request['URL'], 'PROPPATCH') if isDavCollection(obj): url=url+'/' result=StringIO() errors=[] result.write('<?xml version="1.0" encoding="utf-8"?>\n' \ '<d:multistatus xmlns:d="DAV:">\n' \ '<d:response>\n' \ '<d:href>%s</d:href>\n' % quote(url)) propsets=obj.propertysheets for value in self.values: status='200 OK' if len(value) > 2: name, ns, val, md=value propset=propsets.get(ns, None) if propset is None: propsets.manage_addPropertySheet('', ns) propset=propsets.get(ns) if propset.hasProperty(name): try: propset._updateProperty(name, val, meta=md) except: errors.append(str(sys.exc_info()[1])) status='409 Conflict' else: try: propset._setProperty(name, val, meta=md) except: errors.append(str(sys.exc_info()[1])) status='409 Conflict' else: name, ns=value propset=propsets.get(ns, None) if propset is None or not propset.hasProperty(name): # removing a non-existing property is not an error! # according to RFC 2518 status='200 OK' else: try: propset._delProperty(name) except: errors.append('%s cannot be deleted.' % name) status='409 Conflict' result.write('<d:propstat xmlns:n="%s">\n' \ ' <d:prop>\n' \ ' <n:%s/>\n' \ ' </d:prop>\n' \ ' <d:status>HTTP/1.1 %s</d:status>\n' \ '</d:propstat>\n' % (ns, name, status)) errmsg='\n'.join(errors) or 'The operation succeded.' result.write('<d:responsedescription>\n' \ '%s\n' \ '</d:responsedescription>\n' \ '</d:response>\n' \ '</d:multistatus>' % errmsg) result=result.getvalue() if not errors: return result # This is lame, but I cant find a way to keep ZPublisher # from sticking a traceback into my xml response :( transaction.abort() result=result.replace( '200 OK', '424 Failed Dependency') return result
return filtered_tasks @staticmethod def get_modinput_configs(): modinput = sys.stdin.read() return conf.parse_modinput_configs(modinput) if __name__ == "__main__": from ta_util2 import credentials as cred from cStringIO import StringIO utils.setup_logging("ta_cisco_ucs") session_key = cred.CredentialManager.get_session_key("admin", "admin") mod = ("""<?xml version="1.0" encoding="UTF-8"?>""" "<input>" "<server_host>Kens-MacBook-Pro.local</server_host>" "<server_uri>https://127.0.0.1:8089</server_uri>" "<session_key>123</session_key>" "<checkpoint_dir>.</checkpoint_dir>" "<configuration></configuration>" "</input>") mod = StringIO(mod.replace("123", session_key)) stdin = sys.stdin sys.stdin = mod ucs_config = CiscoUcsConfig() sys.stdin = stdin ucs_config.encrypt_credentials() ucs_tasks = ucs_config.get_tasks() print ucs_tasks
def apply(self, obj): url=urlfix(self.request['URL'], 'PROPPATCH') if isDavCollection(obj): url=url+'/' result=StringIO() errors=[] result.write('<?xml version="1.0" encoding="utf-8"?>\n' \ '<d:multistatus xmlns:d="DAV:">\n' \ '<d:response>\n' \ '<d:href>%s</d:href>\n' % quote(url)) propsets=obj.propertysheets for value in self.values: status='200 OK' if len(value) > 2: name, ns, val, md=value propset=propsets.get(ns, None) if propset is None: propsets.manage_addPropertySheet('', ns) propset=propsets.get(ns) propdict=propset._propdict() if propset.hasProperty(name): try: propset._updateProperty(name, val, meta=md) except: errors.append(str(sys.exc_info()[1])) status='409 Conflict' else: try: propset._setProperty(name, val, meta=md) except: errors.append(str(sys.exc_info()[1])) status='409 Conflict' else: name, ns=value propset=propsets.get(ns, None) if propset is None or not propset.hasProperty(name): # removing a non-existing property is not an error! # according to RFC 2518 status='200 OK' else: try: propset._delProperty(name) except: errors.append('%s cannot be deleted.' % name) status='409 Conflict' if result != '200 OK': abort=1 result.write('<d:propstat xmlns:n="%s">\n' \ ' <d:prop>\n' \ ' <n:%s/>\n' \ ' </d:prop>\n' \ ' <d:status>HTTP/1.1 %s</d:status>\n' \ '</d:propstat>\n' % (ns, name, status)) errmsg='\n'.join(errors) or 'The operation succeded.' result.write('<d:responsedescription>\n' \ '%s\n' \ '</d:responsedescription>\n' \ '</d:response>\n' \ '</d:multistatus>' % errmsg) result=result.getvalue() if not errors: return result # This is lame, but I cant find a way to keep ZPublisher # from sticking a traceback into my xml response :( get_transaction().abort() result=result.replace( '200 OK', '424 Failed Dependency') return result