solum/solum/api/controllers/v1/datamodel/app.py

99 lines
2.7 KiB
Python

# Copyright 2015 - Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import wsme
from wsme import types as wtypes
from solum.api.controllers.v1.datamodel import types as api_types
class App(api_types.Base):
"""Representation of an App.
The App is the primary resource managed by Solum.
"""
# Inherited fields:
# uri
# uuid
# name is overridden.
# type
# description
# tags
# project_id
# user_id
version = wtypes.wsattr(int)
id = wtypes.text
name = wtypes.text
deleted = bool
languagepack = wtypes.text
stack_id = wtypes.text
ports = api_types.MultiType(api_types.PortType,
[api_types.PortType],
{wtypes.text: api_types.PortType})
source = {wtypes.text: wtypes.text}
workflow_config = {wtypes.text: wtypes.text}
trigger_uuid = wtypes.text
trigger_actions = [wtypes.text]
trigger_uri = wtypes.text
trust_id = wtypes.text
trust_user = wtypes.text
app_url = wtypes.text
status = wtypes.text
repo_token = wtypes.text
def __init__(self, *args, **kwargs):
super(App, self).__init__(*args, **kwargs)
@classmethod
def sample(cls):
return cls(
name="sampleapp",
description="sample app",
)
@classmethod
def from_db_model(cls, m, host_url):
json = m.as_dict()
json['type'] = m.__tablename__
json['uri'] = '%s/v1/apps/%s' % (host_url, m.id)
json['trigger_uri'] = ('%s/v1/triggers/%s' %
(host_url, m.trigger_uuid))
return cls(**(json))
def as_dict(self, db_model):
attrs = [
'name',
'id',
'description',
'languagepack',
'project_id',
'user_id',
'deleted',
'source',
'ports',
'trigger_actions',
'workflow_config',
'stack_id',
]
base = super(App, self).as_dict(db_model)
for a in attrs:
if getattr(self, a) is wsme.Unset:
continue
if getattr(self, a) is None:
continue
base[a] = getattr(self, a)
return base