Rename 'net' to 'network mode' in various classes/methods

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
Aanand Prasad 2016-01-25 14:27:12 +00:00
parent a9c623fdf2
commit ed1b204804
9 changed files with 81 additions and 82 deletions

View File

@ -19,8 +19,8 @@ from .errors import CircularReference
from .errors import ComposeFileNotFound from .errors import ComposeFileNotFound
from .errors import ConfigurationError from .errors import ConfigurationError
from .interpolation import interpolate_environment_variables from .interpolation import interpolate_environment_variables
from .sort_services import get_container_name_from_net from .sort_services import get_container_name_from_network_mode
from .sort_services import get_service_name_from_net from .sort_services import get_service_name_from_network_mode
from .sort_services import sort_service_dicts from .sort_services import sort_service_dicts
from .types import parse_extra_hosts from .types import parse_extra_hosts
from .types import parse_restart_spec from .types import parse_restart_spec
@ -492,12 +492,12 @@ def validate_extended_service_dict(service_dict, filename, service):
"%s services with 'volumes_from' cannot be extended" % error_prefix) "%s services with 'volumes_from' cannot be extended" % error_prefix)
if 'net' in service_dict: if 'net' in service_dict:
if get_container_name_from_net(service_dict['net']): if get_container_name_from_network_mode(service_dict['net']):
raise ConfigurationError( raise ConfigurationError(
"%s services with 'net: container' cannot be extended" % error_prefix) "%s services with 'net: container' cannot be extended" % error_prefix)
if 'network_mode' in service_dict: if 'network_mode' in service_dict:
if get_service_name_from_net(service_dict['network_mode']): if get_service_name_from_network_mode(service_dict['network_mode']):
raise ConfigurationError( raise ConfigurationError(
"%s services with 'network_mode: service' cannot be extended" % error_prefix) "%s services with 'network_mode: service' cannot be extended" % error_prefix)
@ -575,7 +575,7 @@ def finalize_service(service_config, service_names, version):
if 'net' in service_dict: if 'net' in service_dict:
network_mode = service_dict.pop('net') network_mode = service_dict.pop('net')
container_name = get_container_name_from_net(network_mode) container_name = get_container_name_from_network_mode(network_mode)
if container_name and container_name in service_names: if container_name and container_name in service_names:
service_dict['network_mode'] = 'service:{}'.format(container_name) service_dict['network_mode'] = 'service:{}'.format(container_name)
else: else:

View File

@ -4,22 +4,22 @@ from __future__ import unicode_literals
from compose.config.errors import DependencyError from compose.config.errors import DependencyError
def get_service_name_from_net(net_config): def get_service_name_from_network_mode(network_mode):
return get_source_name_from_net(net_config, 'service') return get_source_name_from_network_mode(network_mode, 'service')
def get_container_name_from_net(net_config): def get_container_name_from_network_mode(network_mode):
return get_source_name_from_net(net_config, 'container') return get_source_name_from_network_mode(network_mode, 'container')
def get_source_name_from_net(net_config, source_type): def get_source_name_from_network_mode(network_mode, source_type):
if not net_config: if not network_mode:
return return
if not net_config.startswith(source_type+':'): if not network_mode.startswith(source_type+':'):
return return
_, net_name = net_config.split(':', 1) _, net_name = network_mode.split(':', 1)
return net_name return net_name
@ -41,7 +41,7 @@ def sort_service_dicts(services):
service for service in services service for service in services
if (name in get_service_names(service.get('links', [])) or if (name in get_service_names(service.get('links', [])) or
name in get_service_names_from_volumes_from(service.get('volumes_from', [])) or name in get_service_names_from_volumes_from(service.get('volumes_from', [])) or
name == get_service_name_from_net(service.get('network_mode')) or name == get_service_name_from_network_mode(service.get('network_mode')) or
name in service.get('depends_on', [])) name in service.get('depends_on', []))
] ]

View File

@ -15,7 +15,7 @@ from jsonschema import RefResolver
from jsonschema import ValidationError from jsonschema import ValidationError
from .errors import ConfigurationError from .errors import ConfigurationError
from .sort_services import get_service_name_from_net from .sort_services import get_service_name_from_network_mode
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -156,7 +156,7 @@ def validate_network_mode(service_config, service_names):
if 'networks' in service_config.config: if 'networks' in service_config.config:
raise ConfigurationError("'network_mode' and 'networks' cannot be combined") raise ConfigurationError("'network_mode' and 'networks' cannot be combined")
dependency = get_service_name_from_net(network_mode) dependency = get_service_name_from_network_mode(network_mode)
if not dependency: if not dependency:
return return

View File

@ -10,8 +10,8 @@ from docker.errors import NotFound
from . import parallel from . import parallel
from .config import ConfigurationError from .config import ConfigurationError
from .config.sort_services import get_container_name_from_net from .config.sort_services import get_container_name_from_network_mode
from .config.sort_services import get_service_name_from_net from .config.sort_services import get_service_name_from_network_mode
from .const import DEFAULT_TIMEOUT from .const import DEFAULT_TIMEOUT
from .const import IMAGE_EVENTS from .const import IMAGE_EVENTS
from .const import LABEL_ONE_OFF from .const import LABEL_ONE_OFF
@ -19,11 +19,11 @@ from .const import LABEL_PROJECT
from .const import LABEL_SERVICE from .const import LABEL_SERVICE
from .container import Container from .container import Container
from .network import Network from .network import Network
from .service import ContainerNet from .service import ContainerNetworkMode
from .service import ConvergenceStrategy from .service import ConvergenceStrategy
from .service import Net from .service import NetworkMode
from .service import Service from .service import Service
from .service import ServiceNet from .service import ServiceNetworkMode
from .utils import microseconds_from_time_nano from .utils import microseconds_from_time_nano
from .volume import Volume from .volume import Volume
@ -91,7 +91,7 @@ class Project(object):
networks = [] networks = []
links = project.get_links(service_dict) links = project.get_links(service_dict)
net = project.get_net(service_dict, networks) network_mode = project.get_network_mode(service_dict, networks)
volumes_from = get_volumes_from(project, service_dict) volumes_from = get_volumes_from(project, service_dict)
if config_data.version == 2: if config_data.version == 2:
@ -110,7 +110,7 @@ class Project(object):
use_networking=use_networking, use_networking=use_networking,
networks=networks, networks=networks,
links=links, links=links,
net=net, network_mode=network_mode,
volumes_from=volumes_from, volumes_from=volumes_from,
**service_dict) **service_dict)
) )
@ -197,27 +197,27 @@ class Project(object):
del service_dict['links'] del service_dict['links']
return links return links
def get_net(self, service_dict, networks): def get_network_mode(self, service_dict, networks):
net = service_dict.pop('network_mode', None) network_mode = service_dict.pop('network_mode', None)
if not net: if not network_mode:
if self.use_networking: if self.use_networking:
return Net(networks[0]) if networks else Net('none') return NetworkMode(networks[0]) if networks else NetworkMode('none')
return Net(None) return NetworkMode(None)
service_name = get_service_name_from_net(net) service_name = get_service_name_from_network_mode(network_mode)
if service_name: if service_name:
return ServiceNet(self.get_service(service_name)) return ServiceNetworkMode(self.get_service(service_name))
container_name = get_container_name_from_net(net) container_name = get_container_name_from_network_mode(network_mode)
if container_name: if container_name:
try: try:
return ContainerNet(Container.from_id(self.client, container_name)) return ContainerNetworkMode(Container.from_id(self.client, container_name))
except APIError: except APIError:
raise ConfigurationError( raise ConfigurationError(
"Service '{name}' uses the network stack of container '{dep}' which " "Service '{name}' uses the network stack of container '{dep}' which "
"does not exist.".format(name=service_dict['name'], dep=container_name)) "does not exist.".format(name=service_dict['name'], dep=container_name))
return Net(net) return NetworkMode(network_mode)
def start(self, service_names=None, **options): def start(self, service_names=None, **options):
containers = [] containers = []

View File

@ -47,7 +47,6 @@ DOCKER_START_KEYS = [
'extra_hosts', 'extra_hosts',
'ipc', 'ipc',
'read_only', 'read_only',
'net',
'log_driver', 'log_driver',
'log_opt', 'log_opt',
'mem_limit', 'mem_limit',
@ -113,7 +112,7 @@ class Service(object):
use_networking=False, use_networking=False,
links=None, links=None,
volumes_from=None, volumes_from=None,
net=None, network_mode=None,
networks=None, networks=None,
**options **options
): ):
@ -123,7 +122,7 @@ class Service(object):
self.use_networking = use_networking self.use_networking = use_networking
self.links = links or [] self.links = links or []
self.volumes_from = volumes_from or [] self.volumes_from = volumes_from or []
self.net = net or Net(None) self.network_mode = network_mode or NetworkMode(None)
self.networks = networks or [] self.networks = networks or []
self.options = options self.options = options
@ -472,7 +471,7 @@ class Service(object):
'options': self.options, 'options': self.options,
'image_id': self.image()['Id'], 'image_id': self.image()['Id'],
'links': self.get_link_names(), 'links': self.get_link_names(),
'net': self.net.id, 'net': self.network_mode.id,
'volumes_from': [ 'volumes_from': [
(v.source.name, v.mode) (v.source.name, v.mode)
for v in self.volumes_from if isinstance(v.source, Service) for v in self.volumes_from if isinstance(v.source, Service)
@ -480,7 +479,7 @@ class Service(object):
} }
def get_dependency_names(self): def get_dependency_names(self):
net_name = self.net.service_name net_name = self.network_mode.service_name
return (self.get_linked_service_names() + return (self.get_linked_service_names() +
self.get_volumes_from_names() + self.get_volumes_from_names() +
([net_name] if net_name else []) + ([net_name] if net_name else []) +
@ -636,7 +635,7 @@ class Service(object):
binds=options.get('binds'), binds=options.get('binds'),
volumes_from=self._get_volumes_from(), volumes_from=self._get_volumes_from(),
privileged=options.get('privileged', False), privileged=options.get('privileged', False),
network_mode=self.net.mode, network_mode=self.network_mode.mode,
devices=options.get('devices'), devices=options.get('devices'),
dns=options.get('dns'), dns=options.get('dns'),
dns_search=options.get('dns_search'), dns_search=options.get('dns_search'),
@ -774,22 +773,22 @@ class Service(object):
log.error(six.text_type(e)) log.error(six.text_type(e))
class Net(object): class NetworkMode(object):
"""A `standard` network mode (ex: host, bridge)""" """A `standard` network mode (ex: host, bridge)"""
service_name = None service_name = None
def __init__(self, net): def __init__(self, network_mode):
self.net = net self.network_mode = network_mode
@property @property
def id(self): def id(self):
return self.net return self.network_mode
mode = id mode = id
class ContainerNet(object): class ContainerNetworkMode(object):
"""A network mode that uses a container's network stack.""" """A network mode that uses a container's network stack."""
service_name = None service_name = None
@ -806,7 +805,7 @@ class ContainerNet(object):
return 'container:' + self.container.id return 'container:' + self.container.id
class ServiceNet(object): class ServiceNetworkMode(object):
"""A network mode that uses a service's network stack.""" """A network mode that uses a service's network stack."""
def __init__(self, service): def __init__(self, service):

View File

@ -131,7 +131,7 @@ class ProjectTest(DockerClientTestCase):
web = project.get_service('web') web = project.get_service('web')
net = project.get_service('net') net = project.get_service('net')
self.assertEqual(web.net.mode, 'container:' + net.containers()[0].id) self.assertEqual(web.network_mode.mode, 'container:' + net.containers()[0].id)
@v2_only() @v2_only()
def test_network_mode_from_container(self): def test_network_mode_from_container(self):
@ -168,7 +168,7 @@ class ProjectTest(DockerClientTestCase):
project.up() project.up()
web = project.get_service('web') web = project.get_service('web')
self.assertEqual(web.net.mode, 'container:' + net_container.id) self.assertEqual(web.network_mode.mode, 'container:' + net_container.id)
def test_net_from_service_v1(self): def test_net_from_service_v1(self):
project = Project.from_config( project = Project.from_config(
@ -191,7 +191,7 @@ class ProjectTest(DockerClientTestCase):
web = project.get_service('web') web = project.get_service('web')
net = project.get_service('net') net = project.get_service('net')
self.assertEqual(web.net.mode, 'container:' + net.containers()[0].id) self.assertEqual(web.network_mode.mode, 'container:' + net.containers()[0].id)
def test_net_from_container_v1(self): def test_net_from_container_v1(self):
def get_project(): def get_project():
@ -224,7 +224,7 @@ class ProjectTest(DockerClientTestCase):
project.up() project.up()
web = project.get_service('web') web = project.get_service('web')
self.assertEqual(web.net.mode, 'container:' + net_container.id) self.assertEqual(web.network_mode.mode, 'container:' + net_container.id)
def test_start_pause_unpause_stop_kill_remove(self): def test_start_pause_unpause_stop_kill_remove(self):
web = self.create_service('web') web = self.create_service('web')

View File

@ -26,7 +26,7 @@ from compose.const import LABEL_VERSION
from compose.container import Container from compose.container import Container
from compose.service import ConvergencePlan from compose.service import ConvergencePlan
from compose.service import ConvergenceStrategy from compose.service import ConvergenceStrategy
from compose.service import Net from compose.service import NetworkMode
from compose.service import Service from compose.service import Service
@ -752,17 +752,17 @@ class ServiceTest(DockerClientTestCase):
assert len(service.containers(stopped=True)) == 2 assert len(service.containers(stopped=True)) == 2
def test_network_mode_none(self): def test_network_mode_none(self):
service = self.create_service('web', net=Net('none')) service = self.create_service('web', network_mode=NetworkMode('none'))
container = create_and_start_container(service) container = create_and_start_container(service)
self.assertEqual(container.get('HostConfig.NetworkMode'), 'none') self.assertEqual(container.get('HostConfig.NetworkMode'), 'none')
def test_network_mode_bridged(self): def test_network_mode_bridged(self):
service = self.create_service('web', net=Net('bridge')) service = self.create_service('web', network_mode=NetworkMode('bridge'))
container = create_and_start_container(service) container = create_and_start_container(service)
self.assertEqual(container.get('HostConfig.NetworkMode'), 'bridge') self.assertEqual(container.get('HostConfig.NetworkMode'), 'bridge')
def test_network_mode_host(self): def test_network_mode_host(self):
service = self.create_service('web', net=Net('host')) service = self.create_service('web', network_mode=NetworkMode('host'))
container = create_and_start_container(service) container = create_and_start_container(service)
self.assertEqual(container.get('HostConfig.NetworkMode'), 'host') self.assertEqual(container.get('HostConfig.NetworkMode'), 'host')

View File

@ -349,7 +349,7 @@ class ProjectTest(unittest.TestCase):
), ),
) )
service = project.get_service('test') service = project.get_service('test')
self.assertEqual(service.net.id, None) self.assertEqual(service.network_mode.id, None)
self.assertNotIn('NetworkMode', service._get_container_host_config({})) self.assertNotIn('NetworkMode', service._get_container_host_config({}))
def test_use_net_from_container(self): def test_use_net_from_container(self):
@ -373,7 +373,7 @@ class ProjectTest(unittest.TestCase):
), ),
) )
service = project.get_service('test') service = project.get_service('test')
self.assertEqual(service.net.mode, 'container:' + container_id) self.assertEqual(service.network_mode.mode, 'container:' + container_id)
def test_use_net_from_service(self): def test_use_net_from_service(self):
container_name = 'test_aaa_1' container_name = 'test_aaa_1'
@ -407,7 +407,7 @@ class ProjectTest(unittest.TestCase):
) )
service = project.get_service('test') service = project.get_service('test')
self.assertEqual(service.net.mode, 'container:' + container_name) self.assertEqual(service.network_mode.mode, 'container:' + container_name)
def test_uses_default_network_true(self): def test_uses_default_network_true(self):
project = Project.from_config( project = Project.from_config(

View File

@ -15,16 +15,16 @@ from compose.const import LABEL_SERVICE
from compose.container import Container from compose.container import Container
from compose.service import build_ulimits from compose.service import build_ulimits
from compose.service import build_volume_binding from compose.service import build_volume_binding
from compose.service import ContainerNet from compose.service import ContainerNetworkMode
from compose.service import get_container_data_volumes from compose.service import get_container_data_volumes
from compose.service import ImageType from compose.service import ImageType
from compose.service import merge_volume_bindings from compose.service import merge_volume_bindings
from compose.service import NeedsBuildError from compose.service import NeedsBuildError
from compose.service import Net from compose.service import NetworkMode
from compose.service import NoSuchImageError from compose.service import NoSuchImageError
from compose.service import parse_repository_tag from compose.service import parse_repository_tag
from compose.service import Service from compose.service import Service
from compose.service import ServiceNet from compose.service import ServiceNetworkMode
from compose.service import warn_on_masked_volume from compose.service import warn_on_masked_volume
@ -407,7 +407,7 @@ class ServiceTest(unittest.TestCase):
'foo', 'foo',
image='example.com/foo', image='example.com/foo',
client=self.mock_client, client=self.mock_client,
net=ServiceNet(Service('other')), network_mode=ServiceNetworkMode(Service('other')),
links=[(Service('one'), 'one')], links=[(Service('one'), 'one')],
volumes_from=[VolumeFromSpec(Service('two'), 'rw', 'service')]) volumes_from=[VolumeFromSpec(Service('two'), 'rw', 'service')])
@ -421,7 +421,7 @@ class ServiceTest(unittest.TestCase):
} }
self.assertEqual(config_dict, expected) self.assertEqual(config_dict, expected)
def test_config_dict_with_net_from_container(self): def test_config_dict_with_network_mode_from_container(self):
self.mock_client.inspect_image.return_value = {'Id': 'abcd'} self.mock_client.inspect_image.return_value = {'Id': 'abcd'}
container = Container( container = Container(
self.mock_client, self.mock_client,
@ -430,7 +430,7 @@ class ServiceTest(unittest.TestCase):
'foo', 'foo',
image='example.com/foo', image='example.com/foo',
client=self.mock_client, client=self.mock_client,
net=container) network_mode=ContainerNetworkMode(container))
config_dict = service.config_dict() config_dict = service.config_dict()
expected = { expected = {
@ -589,20 +589,20 @@ class BuildUlimitsTestCase(unittest.TestCase):
class NetTestCase(unittest.TestCase): class NetTestCase(unittest.TestCase):
def test_net(self): def test_network_mode(self):
net = Net('host') network_mode = NetworkMode('host')
self.assertEqual(net.id, 'host') self.assertEqual(network_mode.id, 'host')
self.assertEqual(net.mode, 'host') self.assertEqual(network_mode.mode, 'host')
self.assertEqual(net.service_name, None) self.assertEqual(network_mode.service_name, None)
def test_net_container(self): def test_network_mode_container(self):
container_id = 'abcd' container_id = 'abcd'
net = ContainerNet(Container(None, {'Id': container_id})) network_mode = ContainerNetworkMode(Container(None, {'Id': container_id}))
self.assertEqual(net.id, container_id) self.assertEqual(network_mode.id, container_id)
self.assertEqual(net.mode, 'container:' + container_id) self.assertEqual(network_mode.mode, 'container:' + container_id)
self.assertEqual(net.service_name, None) self.assertEqual(network_mode.service_name, None)
def test_net_service(self): def test_network_mode_service(self):
container_id = 'bbbb' container_id = 'bbbb'
service_name = 'web' service_name = 'web'
mock_client = mock.create_autospec(docker.Client) mock_client = mock.create_autospec(docker.Client)
@ -611,23 +611,23 @@ class NetTestCase(unittest.TestCase):
] ]
service = Service(name=service_name, client=mock_client) service = Service(name=service_name, client=mock_client)
net = ServiceNet(service) network_mode = ServiceNetworkMode(service)
self.assertEqual(net.id, service_name) self.assertEqual(network_mode.id, service_name)
self.assertEqual(net.mode, 'container:' + container_id) self.assertEqual(network_mode.mode, 'container:' + container_id)
self.assertEqual(net.service_name, service_name) self.assertEqual(network_mode.service_name, service_name)
def test_net_service_no_containers(self): def test_network_mode_service_no_containers(self):
service_name = 'web' service_name = 'web'
mock_client = mock.create_autospec(docker.Client) mock_client = mock.create_autospec(docker.Client)
mock_client.containers.return_value = [] mock_client.containers.return_value = []
service = Service(name=service_name, client=mock_client) service = Service(name=service_name, client=mock_client)
net = ServiceNet(service) network_mode = ServiceNetworkMode(service)
self.assertEqual(net.id, service_name) self.assertEqual(network_mode.id, service_name)
self.assertEqual(net.mode, None) self.assertEqual(network_mode.mode, None)
self.assertEqual(net.service_name, service_name) self.assertEqual(network_mode.service_name, service_name)
def build_mount(destination, source, mode='rw'): def build_mount(destination, source, mode='rw'):