Example #1
0
 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
Example #2
0
        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
Example #3
0
 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