2 # Copyright (c) 2019 Erik Schilling
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 from emuvim
.api
.osm
.osm_component_base
import OSMComponentBase
18 from emuvim
.api
.util
.process_utils
import wait_until
21 class Kafka(OSMComponentBase
):
22 def __init__(self
, net
, ip
, zookeeper_ip
, version
='latest', name_prefix
=''):
23 OSMComponentBase
.__init
__(self
)
24 subnet_separator_index
= ip
.find('/')
25 ip_without_subnet
= ip
if subnet_separator_index
== -1 else ip
[:subnet_separator_index
]
26 self
.instance
= net
.addDocker(
27 '{}kafka'.format(name_prefix
), ip
=ip
, dimage
='wurstmeister/kafka:%s' % version
,
28 environment
={'KAFKA_ADVERTISED_HOST_NAME': ip_without_subnet
,
29 'KAFKA_ADVERTISED_PORT': '9092',
30 'KAFKA_ZOOKEEPER_CONNECT': '%s:2181' % zookeeper_ip
,
31 'KAFKA_CREATE_TOPICS': 'admin:1:1,ns:1:1,vim_account:1:1,wim_account:1:1,sdn:1:1,nsi:1:1'
35 OSMComponentBase
.start(self
)
36 wait_until('nc -z %s 9092' % self
.instance
.dcinfo
['NetworkSettings']['IPAddress'])