b974a63660
EXPERIMENTAL Glance v3 API has been removed in favor of standalone API (EXPERIMENTAL Artifacts API of v0.1). This patch introduces a new process entry point to run on a different port (9494 by default), with its own configuration file and a paste config. A controller stub for old /v3 api remains in the glnace.api package for the compatibility with existing paste configuration which may reference it. This stub returns a 301 redirects to glare endpoint if it is present or 410 errors otherwise. To reuse the existing version_negotiation middleware some refactoring has been made. Implements blueprint: move-v3-to-glare Change-Id: I5b7bd4cdcc5f2a40fc4a5f74bcc422fd700c4fb0
72 lines
3.0 KiB
Python
72 lines
3.0 KiB
Python
# Copyright (c) 2015 Mirantis, 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.
|
|
from datetime import datetime
|
|
|
|
from glance.common.glare import definitions
|
|
import glance.context
|
|
from glance.glare.domain import proxy
|
|
from glance.glare import location
|
|
from glance.tests.unit import utils as unit_test_utils
|
|
from glance.tests import utils
|
|
|
|
|
|
BASE_URI = 'http://storeurl.com/container'
|
|
UUID1 = 'c80a1a6c-bd1f-41c5-90ee-81afedb1d58d'
|
|
UUID2 = '971ec09a-8067-4bc8-a91f-ae3557f1c4c7'
|
|
USER1 = '54492ba0-f4df-4e4e-be62-27f4d76b29cf'
|
|
TENANT1 = '6838eb7b-6ded-434a-882c-b344c77fe8df'
|
|
TENANT2 = '2c014f32-55eb-467d-8fcb-4bd706012f81'
|
|
TENANT3 = '228c6da5-29cd-4d67-9457-ed632e083fc0'
|
|
|
|
|
|
class ArtifactStub(definitions.ArtifactType):
|
|
file = definitions.BinaryObject()
|
|
file_list = definitions.BinaryObjectList()
|
|
|
|
|
|
class TestStoreArtifact(utils.BaseTestCase):
|
|
def setUp(self):
|
|
self.store_api = unit_test_utils.FakeStoreAPI()
|
|
self.store_utils = unit_test_utils.FakeStoreUtils(self.store_api)
|
|
ts = datetime.now()
|
|
self.artifact_stub = ArtifactStub(id=UUID2, state='creating',
|
|
created_at=ts, updated_at=ts,
|
|
version='1.0', owner='me',
|
|
name='foo')
|
|
super(TestStoreArtifact, self).setUp()
|
|
|
|
def test_set_blob_data(self):
|
|
context = glance.context.RequestContext(user=USER1)
|
|
helper = proxy.ArtifactHelper(location.ArtifactProxy,
|
|
proxy_kwargs={
|
|
'context': context,
|
|
'store_api': self.store_api,
|
|
'store_utils': self.store_utils
|
|
})
|
|
artifact = helper.proxy(self.artifact_stub)
|
|
artifact.file = ('YYYY', 4)
|
|
self.assertEqual(4, artifact.file.size)
|
|
|
|
def test_set_bloblist_data(self):
|
|
context = glance.context.RequestContext(user=USER1)
|
|
helper = proxy.ArtifactHelper(location.ArtifactProxy,
|
|
proxy_kwargs={
|
|
'context': context,
|
|
'store_api': self.store_api,
|
|
'store_utils': self.store_utils
|
|
})
|
|
artifact = helper.proxy(self.artifact_stub)
|
|
artifact.file_list.append(('YYYY', 4))
|
|
self.assertEqual(4, artifact.file_list[0].size)
|