Remove unnecessary app catalog fields from base artifact type

Change-Id: I0d5a2c014e534cd7e7245e4cc2d9459582476cc5
This commit is contained in:
Mike Fedosin 2017-02-06 17:25:26 +03:00 committed by Mike Fedosin
parent d88720ef9d
commit 8c9ca78b4e
5 changed files with 2 additions and 168 deletions

View File

@ -129,40 +129,7 @@ class BaseArtifact(base.VersionedObject):
default=DEFAULT_ARTIFACT_VERSION,
filter_ops=attribute.FILTERS, nullable=False,
sortable=True, validators=[validators.Version()],
description="Artifact version(semver)."),
'provided_by': DictField(fields.String,
validators=[
validators.AllowedDictKeys(
("name", "href", "company")),
validators.RequiredDictKeys(
("name", "href", "company"))
],
default=None,
required_on_activate=False,
description="Info about artifact authors."),
'supported_by': DictField(fields.String,
validators=[
validators.RequiredDictKeys(("name",))
],
default=None,
required_on_activate=False,
description="Info about persons who "
"responsible for artifact "
"support"),
'release': ListField(fields.String,
validators=[validators.Unique()],
required_on_activate=False,
description="Target Openstack release "
"for artifact. It is usually the same"
" when artifact was uploaded."),
'icon': Blob(required_on_activate=False,
description="Artifact icon."),
'license': Field(fields.StringField,
required_on_activate=False,
description="Artifact license type."),
'license_url': Field(fields.StringField,
required_on_activate=False,
description="URL to artifact license."),
description="Artifact version(semver).")
}
db_api = artifact_api.ArtifactAPI()

View File

@ -18,7 +18,6 @@ from oslo_versionedobjects import fields
from glare.objects import base
from glare.objects.meta import attribute
from glare.objects.meta import fields as glare_fields
from glare.objects.meta import validators
@ -49,19 +48,6 @@ class Image(base.BaseArtifact):
'image': Blob(max_blob_size=1073741824000,
required_on_activate=False,
description="Image binary."),
'image_indirect_url': Field(fields.StringField,
required_on_activate=False,
description="URL where image is available "
"for users by accepting EULA "
"or some other form. It is "
"used when it is not possible "
"to upload image directly to "
"Glare. F.e. some Windows "
"cloud images requires EULA "
"acceptance before download."),
'cloud_user': Field(fields.StringField,
required_on_activate=False,
description="Default cloud user."),
'kernel_id': Field(fields.StringField,
required_on_activate=False,
validators=[validators.UUID()],
@ -103,13 +89,3 @@ class Image(base.BaseArtifact):
@classmethod
def get_type_name(cls):
return "images"
@classmethod
def validate_activate(cls, context, af, values=None):
blob_status = None
if af.image:
blob_status = af.image['status']
if (blob_status != glare_fields.BlobFieldType.ACTIVE and
not af.image_indirect_url):
raise ValueError("Either image or image_indirect_url must be "
"specified for Binary Image.")

View File

@ -62,11 +62,6 @@ class TestAll(base.TestArtifact):
url = '/all/%s' % art['id']
headers = {'Content-Type': 'application/octet-stream'}
# upload to 'all' is forbidden
self.put(url=url + '/icon', data='data', status=403,
headers=headers)
# update 'all' is forbidden
data = [{
"op": "replace",

View File

@ -60,29 +60,6 @@ fixture_base_props = {
u'required_on_activate': False,
u'type': [u'string',
u'null']},
u'icon': {u'additionalProperties': False,
u'description': u'Artifact icon.',
u'filter_ops': [],
u'glareType': u'Blob',
u'properties': {u'md5': {u'type': [u'string', u'null']},
u'sha1': {u'type': [u'string', u'null']},
u'sha256': {u'type': [u'string', u'null']},
u'content_type': {u'type': u'string'},
u'external': {u'type': u'boolean'},
u'size': {u'type': [u'number',
u'null']},
u'status': {u'enum': [u'saving',
u'active',
u'pending_delete'],
u'type': u'string'}},
u'required': [u'size',
u'md5', u'sha1', u'sha256',
u'external',
u'status',
u'content_type'],
u'required_on_activate': False,
u'type': [u'object',
u'null']},
u'id': {u'description': u'Artifact UUID.',
u'filter_ops': [u'eq',
u'neq',
@ -94,24 +71,6 @@ fixture_base_props = {
u'readOnly': True,
u'sortable': True,
u'type': u'string'},
u'license': {u'description': u'Artifact license type.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'String',
u'maxLength': 255,
u'required_on_activate': False,
u'type': [u'string',
u'null']},
u'license_url': {u'description': u'URL to artifact license.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'String',
u'maxLength': 255,
u'required_on_activate': False,
u'type': [u'string',
u'null']},
u'metadata': {u'additionalProperties': {u'type': u'string'},
u'default': {},
u'description': u'Key-value dict with useful information '
@ -142,33 +101,6 @@ fixture_base_props = {
u'required_on_activate': False,
u'sortable': True,
u'type': u'string'},
u'provided_by': {u'additionalProperties': False,
u'description': u'Info about artifact authors.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'StringDict',
u'maxProperties': 255,
u'properties': {u'company': {u'type': u'string'},
u'href': {u'type': u'string'},
u'name': {u'type': u'string'}},
u'required_on_activate': False,
u'type': [u'object',
u'null']},
u'release': {u'default': [],
u'description': u'Target Openstack release for artifact. It '
u'is usually the same when artifact was '
u'uploaded.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'StringList',
u'items': {u'type': u'string'},
u'maxItems': 255,
u'required_on_activate': False,
u'type': [u'array',
u'null'],
u'unique': True},
u'status': {u'default': u'drafted',
u'description': u'Artifact status.',
u'enum': [u'drafted',
@ -181,18 +113,6 @@ fixture_base_props = {
u'glareType': u'String',
u'sortable': True,
u'type': u'string'},
u'supported_by': {u'additionalProperties': {u'type': u'string'},
u'description': u'Info about persons who responsible '
u'for artifact support',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'StringDict',
u'maxProperties': 255,
u'required': [u'name'],
u'required_on_activate': False,
u'type': [u'object',
u'null']},
u'tags': {u'default': [],
u'description': u'List of tags added to Artifact.',
u'filter_ops': [u'eq',
@ -765,14 +685,6 @@ fixtures = {
u'required_on_activate': False,
u'type': [u'string',
u'null']},
u'cloud_user': {u'description': u'Default cloud user.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'String',
u'maxLength': 255,
u'required_on_activate': False,
u'type': [u'string', u'null']},
u'container_format': {u'description': u'Image container format.',
u'enum': [u'ami',
u'ari',
@ -831,20 +743,6 @@ fixtures = {
u'content_type'],
u'required_on_activate': False,
u'type': [u'object', u'null']},
u'image_indirect_url': {
u'description': u'URL where image is available for users by '
u'accepting EULA or some other form. It is '
u'used when it is not possible to upload '
u'image directly to Glare. F.e. some Windows '
u'cloud images requires EULA acceptance '
u'before download.',
u'filter_ops': [u'eq',
u'neq',
u'in'],
u'glareType': u'String',
u'maxLength': 255,
u'required_on_activate': False,
u'type': [u'string', u'null']},
u'instance_uuid': {
u'description': u'Metadata which can be used to record which '
u'instance this image is associated with. '

View File

@ -25,8 +25,7 @@ class TestArtifactAPI(base.BaseTestCase):
req = self.get_fake_request(user=base.users['user1'])
values = {'name': 'img', 'version': '1.0',
'description': "Test Image", 'tags': ['test'],
'metadata': {'type': 'image'},
'license': 'apache'}
'metadata': {'type': 'image'}}
res = resource.ArtifactsController().create(req, 'images', values)
self.assertEqual('img', res['name'])
@ -36,7 +35,6 @@ class TestArtifactAPI(base.BaseTestCase):
self.assertEqual('private', res['visibility'])
self.assertEqual('Test Image', res['description'])
self.assertEqual({'type': 'image'}, res['metadata'])
self.assertEqual('apache', res['license'])
def test_list_artifacts(self):
req = self.get_fake_request(user=base.users['user1'])