Esempio n. 1
0
def create_function(secret_info: Dict[str, str], code: str, envs: Dict):
    try:
        client = get_scf_client(secret_info)

        req = models.CreateFunctionRequest()
        params = {
            "FunctionName": config.QCLOUD_FUNCTION_NAME,
            "Handler": config.QCLOUD_FUNCTION_HANDLER,
            "Description": "for freedom check in function",
            "Code": {"ZipFile": code},
            "MemorySize": 128,
            "Timeout": 30,
            "Environment": {
                "Variables": [
                    {"Key": "USERNAME", "Value": envs.get("user_info")[0]},
                    {"Key": "PASSWORD", "Value": envs.get("user_info")[1]},
                    {"Key": "SERVER_CHAN_KEY", "Value": envs.get("server_chan_key")},
                ]
            },
            "Runtime": "Python3.6",
        }
        req.from_json_string(json.dumps(params))

        resp = client.CreateFunction(req)
        print(resp.to_json_string())

    except TencentCloudSDKException as err:
        print(err)
    def createFunction(self, functionname, invokeType, isVpc=False):

        if invokeType == LARGE_FILE_CODE:
            code = '{"CosBucketName": "%s", "CosObjectName": "/%s.zip"}'%(QC_COS_BUCKET, invokeType)
            handler = "index.main"
            runtime = 'Golang1'
        elif invokeType == MUTI_LITTLE_FILE_CODE:
            code = '{"CosBucketName": "%s", "CosObjectName": "/%s.zip"}'%(QC_COS_BUCKET, invokeType)
            handler = "index.main_handler"
            runtime = 'Nodejs8.9'
        else:
            zip64 = getCodeBase64(invokeType)
            code = '{"ZipFile": "%s"}' % zip64
            handler = INVOKE_HANDLER
            runtime = 'Python2.7'


        if isVpc:
            self.logger.info("create vpc [%s] function\n" % invokeType)
            params = '''{"FunctionName":"%s","Code":%s,"Timeout":60,"MemorySize":512, "Handler":"%s","Runtime":"%s","VpcConfig":{"VpcId":"%s","SubnetId":"%s"},"Namespace":"%s"}''' % (
            functionname, str(code), handler,QC_VPC,QC_SUBNET, runtime, QC_NAMESPACE)
        else:
            self.logger.info("create [%s] function\n" % invokeType)
            params = '''{"FunctionName":"%s","Code":%s,"Timeout":60,"MemorySize":512,"Handler":"%s","Runtime":"%s","Namespace":"%s"}''' % (functionname, str(code), handler, runtime,QC_NAMESPACE)

        crea = models.CreateFunctionRequest()
        crea.from_json_string(params)
        resp = self.client.CreateFunction(crea)
        self.logger.info("创建函数返回: %s\n" % resp)

        start_time = time.time()
        while time.time() - start_time < 3000:
            params = '''{"FunctionName":"%s","Namespace":"%s"}''' % (functionname,QC_NAMESPACE)
            getf = models.GetFunctionRequest()
            getf.from_json_string(params)
            resp = self.client.GetFunction(getf)

            self.logger.info(resp)
            if resp.Status == "Active":
                self.logger.info("恭喜!函数处于可用状态[%s]\n" % str(resp.Status))
                return resp
            elif "ing" in resp.Status:
                self.logger.info("函数处于不可用状态[%s],再次查询状态...\n" % str(resp.Status))
                time.sleep(2)
            elif "Failed" in resp.Status:
                self.logger.info("函数操作失败[%s]\n" % str(resp.Status))
                raise RuntimeError('Create Function Error!')
            else:
                self.logger.info("函数处于未知状态[%s]\n" % str(resp.Status))
                raise RuntimeError('Create Function Error!')
        return resp
Esempio n. 3
0
 def create_func(self, func, func_name, func_ns):
     req = models.CreateFunctionRequest()
     req.Namespace = func_ns
     req.FunctionName = func_name
     req.Handler = getattr(func, "Handler", None)
     req.Description = getattr(func, "Description", None)
     req.MemorySize = getattr(func, "MemorySize", None)
     req.Timeout = getattr(func, "Timeout", None)
     req.Runtime = getattr(func, "Runtime", None)
     req.Environment = self._model_envs(getattr(func, "Environment", None))
     req.VpcConfig = self._model_vpc(getattr(func, "VpcConfig", None))
     req.Code = self._model_code(getattr(func, "LocalZipFile", None),
                                 getattr(func, "CosBucketName", None),
                                 getattr(func, "CosObjectName", None))
     resp = self._client.CreateFunction(req)
     return resp.to_json_string()
Esempio n. 4
0
 def create_func(self, func, func_name, func_ns):
     req = models.CreateFunctionRequest()
     req.Namespace = func_ns
     req.FunctionName = func_name
     proper = func.get(tsmacro.Properties, {})
     req.Handler = proper.get(tsmacro.Handler)
     req.Description = proper.get(tsmacro.Desc)
     req.MemorySize = proper.get(tsmacro.MemSize)
     req.Timeout = proper.get(tsmacro.Timeout)
     req.Runtime = proper.get(tsmacro.Runtime)
     if req.Runtime:
         req.Runtime = req.Runtime[0].upper() + req.Runtime[1:].lower()
     req.Environment = self._model_envs(proper.get(tsmacro.Envi, {}))
     req.VpcConfig = self._model_vpc(proper.get(tsmacro.VpcConfig))
     req.Code = self._model_code(proper.get(tsmacro.LocalZipFile),
                                 proper.get(tsmacro.CosBucketName),
                                 proper.get(tsmacro.CosObjectName))
     resp = self._client.CreateFunction(req)
     return resp.to_json_string()