zoukankan      html  css  js  c++  java
  • trove instance service 总结

    def create(self, req, body, tenant_id):
    # TODO(hub-cap): turn this into middleware
    LOG.info(_LI("Creating a database instance for tenant '%s'"),
    tenant_id)
    LOG.debug("req : '%s' ", strutils.mask_password(req))
    LOG.debug("body : '%s' ", strutils.mask_password(body))
    context = req.environ[wsgi.CONTEXT_KEY]
    context.notification = notification.DBaaSInstanceCreate(context,
    request=req)
    datastore_args = body['instance'].get('datastore', {})
    datastore, datastore_version = (
    datastore_models.get_datastore_version(**datastore_args))
    image_id = datastore_version.image_id
    name = body['instance']['name']
    flavor_ref = body['instance']['flavorRef']
    flavor_id = utils.get_id_from_href(flavor_ref)

    configuration = self._configuration_parse(context, body)
    databases = populate_validated_databases(
    body['instance'].get('databases', []))
    database_names = [database.get('_name', '') for database in databases]
    users = None
    try:
    users = populate_users(body['instance'].get('users', []),
    database_names)
    except ValueError as ve:
    raise exception.BadRequest(msg=ve)

    if 'volume' in body['instance']:
    volume_info = body['instance']['volume']
    volume_size = int(volume_info['size'])
    volume_type = volume_info.get('type')
    else:
    volume_size = None
    volume_type = None

    if 'restorePoint' in body['instance']:
    backupRef = body['instance']['restorePoint']['backupRef']
    backup_id = utils.get_id_from_href(backupRef)
    else:
    backup_id = None

    availability_zone = body['instance'].get('availability_zone')
    nics = body['instance'].get('nics')

    slave_of_id = body['instance'].get('replica_of',
    # also check for older name
    body['instance'].get('slave_of'))
    replica_count = body['instance'].get('replica_count')
    modules = body['instance'].get('modules')
    locality = body['instance'].get('locality')
    if locality:
    locality_domain = ['affinity', 'anti-affinity']
    locality_domain_msg = ("Invalid locality '%s'. "
    "Must be one of ['%s']" %
    (locality,
    "', '".join(locality_domain)))
    if locality not in locality_domain:
    raise exception.BadRequest(msg=locality_domain_msg)
    if slave_of_id:
    dupe_locality_msg = (
    'Cannot specify locality when adding replicas to existing '
    'master.')
    raise exception.BadRequest(msg=dupe_locality_msg)

    instance = models.Instance.create(context, name, flavor_id,
    image_id, databases, users,
    datastore, datastore_version,
    volume_size, backup_id,
    availability_zone, nics,
    configuration, slave_of_id,
    replica_count=replica_count,
    volume_type=volume_type,
    modules=modules,
    locality=locality)

    view = views.InstanceDetailView(instance, req=req)
    return wsgi.Result(view.data(), 200)



    基本就是四步走,首先是请求上下文,然后创建实例对象,然后操作,最后返回wsgi
  • 相关阅读:
    MongoDB 分片管理(一)检查集群状态
    MongoDB 副本集
    MongoDB 集群设置集合分片生效及查看集合分片情况
    mongodb 导入json文件遇到的坑
    GreenPlum/postgres copy命令导出/导入数据
    Mongo mongoexport/mongoimport介绍
    mongoDB之监控工具mongostat
    Oracle ORA-00600[2662] 解决
    ORA-00600[2662]问题 汇总
    MySQL的基本使用
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/5796225.html
Copyright © 2011-2022 走看看