Skip to content

Commit d89da32

Browse files
rcervenlcarva
authored andcommitted
enforce version label
1 parent e4bf011 commit d89da32

File tree

2 files changed

+44
-19
lines changed

2 files changed

+44
-19
lines changed

osbs/api.py

+18-6
Original file line numberDiff line numberDiff line change
@@ -438,22 +438,34 @@ def create_prod_build(self, git_uri, git_ref,
438438
customize_conf=customize_conf)
439439
labels = utils.Labels(df_parser.labels)
440440

441-
try:
442-
_, name_value = labels.get_name_and_value(utils.Labels.LABEL_TYPE_NAME)
443-
_, component = labels.get_name_and_value(utils.Labels.LABEL_TYPE_COMPONENT)
444-
except KeyError:
441+
required_missing = False
442+
req_labels = {}
443+
# version label isn't used here, but is required label in Dockerfile
444+
# and is used and required for atomic reactor
445+
# if we don't catch error here, it will fail in atomic reactor later
446+
for label in [utils.Labels.LABEL_TYPE_NAME,
447+
utils.Labels.LABEL_TYPE_COMPONENT,
448+
utils.Labels.LABEL_TYPE_VERSION]:
449+
try:
450+
_, req_labels[label] = labels.get_name_and_value(label)
451+
except KeyError:
452+
required_missing = True
453+
logger.error("required label missing from Dockerfile : %s",
454+
labels.get_name(label))
455+
456+
if required_missing:
445457
raise OsbsValidationException("required label missing from Dockerfile")
446458

447459
build_request.set_params(
448460
git_uri=git_uri,
449461
git_ref=git_ref,
450462
git_branch=git_branch,
451463
user=user,
452-
component=component,
464+
component=req_labels[utils.Labels.LABEL_TYPE_COMPONENT],
453465
build_image=self.build_conf.get_build_image(),
454466
build_imagestream=self.build_conf.get_build_imagestream(),
455467
base_image=df_parser.baseimage,
456-
name_label=name_value,
468+
name_label=req_labels[utils.Labels.LABEL_TYPE_NAME],
457469
registry_uris=self.build_conf.get_registry_uris(),
458470
registry_secrets=self.build_conf.get_registry_secrets(),
459471
source_registry_uri=self.build_conf.get_source_registry_uri(),

tests/test_api.py

+26-13
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ def test_get_pod_for_build(self, osbs):
9595

9696
def test_create_build_with_deprecated_params(self, osbs):
9797
class MockParser(object):
98-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
98+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
99+
'version': 'version1.0'}
99100
baseimage = 'fedora23/python'
100101
(flexmock(utils)
101102
.should_receive('get_df_parser')
@@ -125,7 +126,8 @@ class MockParser(object):
125126
def test_create_prod_build(self, osbs, name_label_name):
126127
# TODO: test situation when a buildconfig already exists
127128
class MockParser(object):
128-
labels = {name_label_name: 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
129+
labels = {name_label_name: 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
130+
'version': 'version1.0'}
129131
baseimage = 'fedora23/python'
130132
(flexmock(utils)
131133
.should_receive('get_df_parser')
@@ -143,7 +145,8 @@ class MockParser(object):
143145
def test_create_prod_build_build_request(self, osbs, inner_template,
144146
outer_template, customize_conf):
145147
class MockParser(object):
146-
labels = {'name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
148+
labels = {'name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
149+
'version': 'test_version'}
147150
baseimage = 'fedora23/python'
148151

149152
(flexmock(utils)
@@ -182,7 +185,8 @@ def test_create_worker_build(self, osbs, inner_template, outer_template,
182185
customize_conf, platform, release,
183186
raises_exception):
184187
class MockParser(object):
185-
labels = {'name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
188+
labels = {'name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
189+
'version' : 'test_version'}
186190
baseimage = 'fedora23/python'
187191

188192
(flexmock(utils)
@@ -227,7 +231,8 @@ class MockParser(object):
227231
@pytest.mark.parametrize('unique_tag_only', [True, False, None])
228232
def test_create_prod_build_unique_tag_only(self, osbs, unique_tag_only):
229233
class MockParser(object):
230-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
234+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
235+
'version': 'version1.0'}
231236
baseimage = 'fedora23/python'
232237
(flexmock(utils)
233238
.should_receive('get_df_parser')
@@ -319,7 +324,8 @@ def test_component_is_changed_from_label(self, osbs, component_label_name):
319324
"""
320325

321326
class MockParser(object):
322-
labels = {'Name': 'fedora23/something', component_label_name: TEST_COMPONENT}
327+
labels = {'Name': 'fedora23/something', component_label_name: TEST_COMPONENT,
328+
'version': 'version1.0'}
323329
baseimage = 'fedora23/python'
324330
(flexmock(utils)
325331
.should_receive('get_df_parser')
@@ -334,7 +340,8 @@ class MockParser(object):
334340

335341
def test_missing_component_argument_doesnt_break_build(self, osbs):
336342
class MockParser(object):
337-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
343+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
344+
'version': 'version1.0'}
338345
baseimage = 'fedora23/python'
339346
(flexmock(utils)
340347
.should_receive('get_df_parser')
@@ -346,7 +353,8 @@ class MockParser(object):
346353

347354
def test_create_prod_build_set_required_version(self, osbs106):
348355
class MockParser(object):
349-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
356+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
357+
'version': 'version1.0'}
350358
baseimage = 'fedora23/python'
351359
(flexmock(utils)
352360
.should_receive('get_df_parser')
@@ -364,7 +372,8 @@ class MockParser(object):
364372
def test_create_prod_with_secret_build(self, osbs):
365373
# TODO: test situation when a buildconfig already exists
366374
class MockParser(object):
367-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
375+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
376+
'version': 'version1.0'}
368377
baseimage = 'fedora23/python'
369378
(flexmock(utils)
370379
.should_receive('get_df_parser')
@@ -379,7 +388,8 @@ class MockParser(object):
379388
def test_create_prod_without_koji_build(self, osbs):
380389
# TODO: test situation when a buildconfig already exists
381390
class MockParser(object):
382-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
391+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
392+
'version': 'version1.0'}
383393
baseimage = 'fedora23/python'
384394
(flexmock(utils)
385395
.should_receive('get_df_parser')
@@ -633,7 +643,8 @@ def test_build_image(self):
633643
assert config.get_build_image() == build_image
634644

635645
class MockParser(object):
636-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
646+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
647+
'version': 'version1.0'}
637648
baseimage = 'fedora23/python'
638649
(flexmock(utils)
639650
.should_receive('get_df_parser')
@@ -1217,7 +1228,8 @@ def test_scratch_param_to_create_build(self):
12171228
osbs = OSBS(config, config)
12181229

12191230
class MockParser(object):
1220-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
1231+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
1232+
'version': 'version1.0'}
12211233
baseimage = 'fedora23/python'
12221234

12231235
kwargs = {
@@ -1312,7 +1324,8 @@ def test_reactor_config_secret(self):
13121324
osbs = OSBS(config, config)
13131325

13141326
class MockParser(object):
1315-
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT}
1327+
labels = {'Name': 'fedora23/something', 'com.redhat.component': TEST_COMPONENT,
1328+
'version' : 'test_version'}
13161329
baseimage = 'fedora23/python'
13171330
(flexmock(utils)
13181331
.should_receive('get_df_parser')

0 commit comments

Comments
 (0)