|
@@ -1915,3 +1915,65 @@ class ProjectTest(DockerClientTestCase):
|
|
|
assert len(remote_secopts) == 1
|
|
|
assert remote_secopts[0].startswith('seccomp=')
|
|
|
assert json.loads(remote_secopts[0].lstrip('seccomp=')) == seccomp_data
|
|
|
+
|
|
|
+ @no_cluster('inspect volume by name defect on Swarm Classic')
|
|
|
+ def test_project_up_name_starts_with_illegal_char(self):
|
|
|
+ config_dict = {
|
|
|
+ 'version': '2.3',
|
|
|
+ 'services': {
|
|
|
+ 'svc1': {
|
|
|
+ 'image': 'busybox:latest',
|
|
|
+ 'command': 'ls',
|
|
|
+ 'volumes': ['foo:/foo:rw'],
|
|
|
+ 'networks': ['bar'],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ 'volumes': {
|
|
|
+ 'foo': {},
|
|
|
+ },
|
|
|
+ 'networks': {
|
|
|
+ 'bar': {},
|
|
|
+ }
|
|
|
+ }
|
|
|
+ config_data = load_config(config_dict)
|
|
|
+ project = Project.from_config(
|
|
|
+ name='_underscoretest', config_data=config_data, client=self.client
|
|
|
+ )
|
|
|
+ project.up()
|
|
|
+ self.addCleanup(project.down, None, True)
|
|
|
+
|
|
|
+ containers = project.containers(stopped=True)
|
|
|
+ assert len(containers) == 1
|
|
|
+ assert containers[0].name == 'underscoretest_svc1_1'
|
|
|
+ assert containers[0].project == '_underscoretest'
|
|
|
+
|
|
|
+ full_vol_name = 'underscoretest_foo'
|
|
|
+ vol_data = self.get_volume_data(full_vol_name)
|
|
|
+ assert vol_data
|
|
|
+ assert vol_data['Labels'][LABEL_PROJECT] == '_underscoretest'
|
|
|
+
|
|
|
+ full_net_name = '_underscoretest_bar'
|
|
|
+ net_data = self.client.inspect_network(full_net_name)
|
|
|
+ assert net_data
|
|
|
+ assert net_data['Labels'][LABEL_PROJECT] == '_underscoretest'
|
|
|
+
|
|
|
+ project2 = Project.from_config(
|
|
|
+ name='-dashtest', config_data=config_data, client=self.client
|
|
|
+ )
|
|
|
+ project2.up()
|
|
|
+ self.addCleanup(project2.down, None, True)
|
|
|
+
|
|
|
+ containers = project2.containers(stopped=True)
|
|
|
+ assert len(containers) == 1
|
|
|
+ assert containers[0].name == 'dashtest_svc1_1'
|
|
|
+ assert containers[0].project == '-dashtest'
|
|
|
+
|
|
|
+ full_vol_name = 'dashtest_foo'
|
|
|
+ vol_data = self.get_volume_data(full_vol_name)
|
|
|
+ assert vol_data
|
|
|
+ assert vol_data['Labels'][LABEL_PROJECT] == '-dashtest'
|
|
|
+
|
|
|
+ full_net_name = '-dashtest_bar'
|
|
|
+ net_data = self.client.inspect_network(full_net_name)
|
|
|
+ assert net_data
|
|
|
+ assert net_data['Labels'][LABEL_PROJECT] == '-dashtest'
|