mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| # Licensed to the Apache Software Foundation (ASF) under one
 | |
| # or more contributor license agreements.  See the NOTICE file
 | |
| # distributed with this work for additional information
 | |
| # regarding copyright ownership.  The ASF licenses this file
 | |
| # to you under the Apache License, Version 2.0 (the
 | |
| # "License"); you may not use this file except in compliance
 | |
| # with the License.  You may obtain a copy of the License at
 | |
| # 
 | |
| #   http://www.apache.org/licenses/LICENSE-2.0
 | |
| # 
 | |
| # Unless required by applicable law or agreed to in writing,
 | |
| # software distributed under the License is distributed on an
 | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | |
| # KIND, either express or implied.  See the License for the
 | |
| # specific language governing permissions and limitations
 | |
| # under the License.
 | |
| 
 | |
| # Version @VERSION@
 | |
| #
 | |
| # A plugin for executing script needed by vmops cloud 
 | |
| 
 | |
| import os, sys, time
 | |
| import XenAPIPlugin
 | |
| sys.path.extend(["/opt/xensource/sm/", "/usr/lib/xcp/sm/", "/usr/local/sbin/", "/sbin/"])
 | |
| import util
 | |
| import base64
 | |
| import socket
 | |
| import stat
 | |
| import tempfile
 | |
| import subprocess
 | |
| import zlib
 | |
| import urllib2
 | |
| import traceback
 | |
| import cloudstack_pluginlib as lib
 | |
| import logging
 | |
| 
 | |
| lib.setup_logging("/var/log/cloud/storageplugin.log")
 | |
| 
 | |
| def echo(fn):
 | |
|     def wrapped(*v, **k):
 | |
|         name = fn.__name__
 | |
|         logging.debug("#### xen plugin enter  %s ####" % name )
 | |
|         res = fn(*v, **k)
 | |
|         logging.debug("#### xen plugin exit  %s ####" % name )
 | |
|         return res
 | |
|     return wrapped
 | |
| 
 | |
| @echo
 | |
| def downloadTemplateFromUrl(session, args):
 | |
|     destPath = args["destPath"]
 | |
|     srcUrl = args["srcUrl"]
 | |
|     try:
 | |
|         template = urllib2.urlopen(srcUrl)
 | |
|         destFile = open(destPath, "wb")
 | |
|         destFile.write(template.read())
 | |
|         destFile.close()
 | |
|         return "success"
 | |
|     except:
 | |
|         logging.debug("exception: " + str(sys.exc_info()))
 | |
|         return ""
 | |
|     
 | |
| @echo
 | |
| def getTemplateSize(session, args):
 | |
|    srcUrl = args["srcUrl"]
 | |
|    try:
 | |
|        template = urllib2.urlopen(srcUrl)
 | |
|        headers = template.info()
 | |
|        return str(headers["content-length"])
 | |
|    except:
 | |
|        return ""
 | |
| if __name__ == "__main__":
 | |
|     XenAPIPlugin.dispatch({"downloadTemplateFromUrl": downloadTemplateFromUrl
 | |
|                            ,"getTemplateSize": getTemplateSize
 | |
|                           })
 |