예제 #1
0
# -*- coding: utf-8 -*-
__author__ = 'wan'
from cloudsdk.api.instance import InstanceSupport
from _toolbox.logger import LogFactory

logger = LogFactory.logger(__name__)


class TecentInstanceSupport(InstanceSupport):
    def __init__(self, ctx):
        setattr(ctx, 'host', "cvm.{0}".format(ctx.host))
        InstanceSupport.__init__(self, ctx)

    def launch(self,
               image=None,
               flavor=None,
               hostname=None,
               bandwidth=None,
               **kwargs):
        """
        :param image: image id
        :param flavor: not valid
        :param hostname: not valid
        :param bandwidth:
        :param kwargs: cpu,ram,size,period
        :return:
        """
        self.request.invoke(Action='RunInstances',
                            imageId=image,
                            imageType=1,
                            **kwargs)
예제 #2
0
# -*- coding: utf-8 -*-
# db operation
# provider curd method
__author__ = 'wan'
from pymongo.mongo_client import MongoClient

from _toolbox.logger import LogFactory
from _toolbox.logger import log
from . import DBUtils
from . import DefaultConditionUtil

logger = LogFactory.logger(__file__)


class DBServer():
    def __init__(self, collection_name, table):
        self.collection_name = collection_name
        self.table = table
        cfg = DBUtils.read_config()
        url = "mongodb://{0}:{1}/".format(cfg.host, cfg.port)
        logger.debug("The db url", url)
        self._client = MongoClient(url)
        # can not connect to any db except admin server
        username, password = getattr(cfg, 'username',
                                     ''), getattr(cfg, 'password', '')
        if not (len(username) <= 0 or len(password) <= 0):
            self._client.admin.authenticate(cfg.username, cfg.password)
        db = self._client[collection_name]
        self.table = db[table]

    @log
예제 #3
0
파일: rest.py 프로젝트: bellamusic/cloudsdk
# -*- coding: utf-8 -*-
__author__ = 'wan'
import base64

from _toolbox.logger import LogFactory


logger = LogFactory.logger(__name__)


class RestClient():
    def __init__(self, scheme="http", host="localhost", port=80, **kwargs):
        """
        :param scheme: str,support http or https
        :param host: str,the host name
        :param port: int,the port
        :return: init method
        """
        try:
            class_name = "{0}Client".format(scheme.upper())
            module = __import__("cloudsdk.rest.http", fromlist=[class_name])
            self.client = getattr(module, class_name)(host, port, **kwargs)
        except NotImplementedError, e:
            logger.info("The class not implement", self.__class__)
            raise NotImplementedError("The class not found " + e)
        add_dynamic_method(self, self._create)
        self.headers = {}

    def _msg(self, method="get", url=None, body=dict(), callback=None):
        """
        :param method: str,support ["get", "post", "delete", "patch", "put", "head", "unlink", "link"]
예제 #4
0
파일: ext.py 프로젝트: bellamusic/cloudsdk
# -*- coding: utf-8 -*-
__author__ = 'wan'
import yaml

from _toolbox.utils import ScaleError
from _toolbox.utils import RestError
from scaling.rest.rest import Handler
from scaling._scaling.context import ScaleContext
from scaling._scaling.scale import ScaleProxy
from scaling.rule.manager import RuleManager
from _toolbox.logger import LogFactory
from _toolbox.logger import log


logger = LogFactory.logger(__file__)


class ExtHandler(Handler):
    def invoke(self, data=None, **conditions):
        return {'hello': 'world'}


"""
rule handler support add remove update and get rule data
1.provider standard rest api
2.relation to the db
3.example:
    add:
        method:POST
        header:application/json
        url:http://<host:port>/everhomes/metric/rule/action/add