# -*- 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)
# -*- 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
# -*- 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"]
# -*- 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