コード例 #1
0
ファイル: users.py プロジェクト: altai/altai-api
def user_to_view(user, invite=None, send_code=False):
    roles = user.list_roles()
    projects = [
        link_for_project(r.tenant['id'], r.tenant['name']) for r in roles
        if _role_is_visible(r)
    ]
    is_admin = any((r.role["name"].lower() == 'admin' for r in roles
                    if r.tenant['name'] == app.config['SYSTENANT']))
    href = lambda endpoint: url_for(endpoint, user_id=user.id)
    result = {
        u'id': user.id,
        u'href': href('users.get_user'),
        u'name': user.name,
        u'email': user.email,
        u'fullname': getattr(user, 'fullname', ''),
        u'admin': is_admin,
        u'projects': projects,
        u'completed-registration': user.enabled,
        u'links': {
            u'ssh-keys': href('users_ssh_keys.list_users_ssh_keys'),
            u'send-invite': href('users.send_invite_for_user')
        }
    }

    if not user.enabled and invite is None:
        invite = InvitesDAO.get_for_user(user.id)

    if invite is not None and not invite.complete:
        result['invited-at'] = invite.created_at
        if send_code:
            result['invitation-code'] = invite.code
    return result
コード例 #2
0
ファイル: images.py プロジェクト: altai/altai-api
def _image_to_view(image, tenant=None):
    result = link_for_image(image.id, image.name)
    result.update({
        u'status':
        image.status,
        u'disk-format':
        image.disk_format,
        u'container-format':
        image.container_format,
        u'created':
        timestamp_from_openstack(image.created_at),
        u'md5sum':
        image.checksum,
        u'size':
        image.size,
        u'data-href':
        url_for('images.get_image_data', image_id=image.id)
    })
    if image.owner == auth.default_tenant_id():
        result[u'global'] = True
    else:
        result[u'global'] = False
        result[u'project'] = link_for_project(image.owner,
                                              tenant.name if tenant else None)

    if 'kernel_id' in image.properties:
        result['kernel'] = link_for_image(image.properties['kernel_id'])
    if 'ramdisk_id' in image.properties:
        result['ramdisk'] = link_for_image(image.properties['ramdisk_id'])

    return result
コード例 #3
0
ファイル: users.py プロジェクト: altai/altai-api
def user_to_view(user, invite=None, send_code=False):
    roles = user.list_roles()
    projects = [link_for_project(r.tenant['id'], r.tenant['name'])
                for r in roles if _role_is_visible(r)]
    is_admin = any((r.role["name"].lower() == 'admin'
                    for r in roles
                    if r.tenant['name'] == app.config['SYSTENANT']))
    href = lambda endpoint: url_for(endpoint, user_id=user.id)
    result = {
        u'id': user.id,
        u'href': href('users.get_user'),
        u'name': user.name,
        u'email': user.email,
        u'fullname': getattr(user, 'fullname', ''),
        u'admin': is_admin,
        u'projects': projects,
        u'completed-registration': user.enabled,
        u'links': {
            u'ssh-keys': href('users_ssh_keys.list_users_ssh_keys'),
            u'send-invite': href('users.send_invite_for_user')
        }
    }

    if not user.enabled and invite is None:
        invite = InvitesDAO.get_for_user(user.id)

    if invite is not None and not invite.complete:
        result['invited-at'] = invite.created_at
        if send_code:
            result['invitation-code'] = invite.code
    return result
コード例 #4
0
ファイル: audit_log.py プロジェクト: altai/altai-api
def _record_to_dict(record, user_name, project_name):
    if record.user_id:
        user_ref = {
            u'id': record.user_id,
            u'name': user_name,
            u'href': url_for('users.get_user', user_id=record.user_id)
        }
    else:
        user_ref = None

    if record.project_id:
        project_ref = link_for_project(record.project_id, project_name)
    else:
        project_ref = None

    result = {
        'id': record.record_id,
        'href': url_for('audit_log.get_log_record',
                        record_id=record.record_id),
        'user': user_ref,
        'project': project_ref
    }
    for name in ('resource', 'method', 'response_status', 'message',
                 'remote_address', 'timestamp', 'extra'):
        result[name] = getattr(record, name)
    return result
コード例 #5
0
ファイル: fw_rule_sets.py プロジェクト: altai/altai-api
def _sg_to_view(secgroup, project_name=None):
    result = link_for_security_group(secgroup)
    result.update(
        (('description', secgroup.description),
         ('project', link_for_project(secgroup.tenant_id, project_name)),
         ('rules-href',
          url_for('fw_rules.list_fw_rules', fw_rule_set_id=secgroup.id))))
    return result
コード例 #6
0
ファイル: fw_rule_sets.py プロジェクト: altai/altai-api
def _sg_to_view(secgroup, project_name=None):
    result = link_for_security_group(secgroup)
    result.update((
        ('description', secgroup.description),
        ('project', link_for_project(secgroup.tenant_id, project_name)),
        ('rules-href', url_for('fw_rules.list_fw_rules',
                               fw_rule_set_id=secgroup.id))
    ))
    return result
コード例 #7
0
ファイル: networks.py プロジェクト: altai/altai-api
def _net_to_dict(net):
    """Convert novaclient.v1_1.Network resource to dict"""
    d = {}
    d["id"] = net.id
    d["href"] = flask.url_for('networks.get_network', net_id=net.id)
    d["name"] = net.label
    d["vlan"] = int(net.vlan)
    d["cidr"] = net.cidr

    if net.project_id:
        d["used"] = True
        d["project"] = link_for_project(net.project_id)
    else:
        d["used"] = False

    return d
コード例 #8
0
ファイル: networks.py プロジェクト: altai/altai-api
def _net_to_dict(net):
    """Convert novaclient.v1_1.Network resource to dict"""
    d = {}
    d["id"] = net.id
    d["href"] = flask.url_for('networks.get_network', net_id=net.id)
    d["name"] = net.label
    d["vlan"] = int(net.vlan)
    d["cidr"] = net.cidr

    if net.project_id:
        d["used"] = True
        d["project"] = link_for_project(net.project_id)
    else:
        d["used"] = False

    return d
コード例 #9
0
ファイル: instances.py プロジェクト: altai/altai-api
def _instance_to_view(server):
    client = admin_client_set()
    project_link = link_for_project(server.tenant_id)
    flavor = client.compute.flavors.get(server.flavor["id"])
    user_link = link_for_user_id(server.user_id)
    image_link = link_for_image(server.image["id"])
    instancedata = InstanceDataDAO.get(server.id)

    href_for = lambda endpoint: url_for(endpoint, instance_id=server.id)

    result = {
        u"id": server.id,
        u"href": href_for("instances.get_instance"),
        u"name": server.name,
        u"project": project_link,
        u"created-by": user_link,
        u"image": image_link,
        u"instance-type": {
            u"id": flavor.id,
            u"name": flavor.name,
            u"href": url_for("instance_types.get_instance_type", instance_type_id=flavor.id),
        },
        u"created": timestamp_from_openstack(server.created),
        u"state": server.status,
        u"ipv4": [elem["addr"] for val in server.addresses.itervalues() for elem in val if elem["version"] == 4],
        u"links": {
            u"reboot": href_for("instances.reboot_instance"),
            u"reset": href_for("instances.reset_instance"),
            u"remove": href_for("instances.remove_instance"),
            u"vnc": href_for("instances.instance_vnc_console"),
            u"console-output": href_for("instances.instance_console_output"),
            u"fw-rules": href_for("instance_fw_rule_sets" ".list_instance_fw_rule_sets"),
        },
    }
    if instancedata:
        if instancedata.expires_at is not None:
            result[u"expires-at"] = instancedata.expires_at
        if instancedata.remind_at is not None:
            result[u"remind-at"] = instancedata.remind_at
    if g.is_admin and hasattr(server, _HOST_ATTRIBUTE):
        result["node"] = link_for_node(getattr(server, _HOST_ATTRIBUTE))
    return result
コード例 #10
0
ファイル: images.py プロジェクト: altai/altai-api
def _image_to_view(image, tenant=None):
    result = link_for_image(image.id, image.name)
    result.update({
        u'status': image.status,
        u'disk-format': image.disk_format,
        u'container-format': image.container_format,
        u'created': timestamp_from_openstack(image.created_at),
        u'md5sum': image.checksum,
        u'size': image.size,
        u'data-href': url_for('images.get_image_data', image_id=image.id)
    })
    if image.owner == auth.default_tenant_id():
        result[u'global'] = True
    else:
        result[u'global'] = False
        result[u'project'] = link_for_project(image.owner,
                                              tenant.name if tenant else None)

    if 'kernel_id' in image.properties:
        result['kernel'] = link_for_image(image.properties['kernel_id'])
    if 'ramdisk_id' in image.properties:
        result['ramdisk'] = link_for_image(image.properties['ramdisk_id'])

    return result