Remove unnecessary app catalog fields from base artifact type
Change-Id: I0d5a2c014e534cd7e7245e4cc2d9459582476cc5
This commit is contained in:
parent
d88720ef9d
commit
8c9ca78b4e
|
@ -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()
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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. '
|
||||
|
|
|
@ -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'])
|
||||
|
|
Loading…
Reference in New Issue