1 from manage
import OpenstackManage
2 from openstack_dummies
import *
9 class OpenstackApiEndpoint():
11 Base class for an OpenStack datacenter.
12 It holds information about all connected endpoints.
16 def __init__(self
, listenip
, port
):
19 self
.compute
= compute
.OpenstackCompute()
20 self
.openstack_endpoints
= dict()
21 self
.openstack_endpoints
['keystone'] = KeystoneDummyApi(self
.ip
, self
.port
)
22 self
.openstack_endpoints
['neutron'] = NeutronDummyApi(self
.ip
, self
.port
+ 4696, self
.compute
)
23 self
.openstack_endpoints
['nova'] = NovaDummyApi(self
.ip
, self
.port
+ 3774, self
.compute
)
24 self
.openstack_endpoints
['heat'] = HeatDummyApi(self
.ip
, self
.port
+ 3004, self
.compute
)
25 self
.openstack_endpoints
['glance'] = GlanceDummyApi(self
.ip
, self
.port
+ 4242, self
.compute
)
27 self
.rest_threads
= list()
28 self
.manage
= OpenstackManage()
29 self
.manage
.add_endpoint(self
)
30 OpenstackApiEndpoint
.dc_apis
.append(self
)
32 def connect_datacenter(self
, dc
):
34 Connect a datacenter to this endpoint.
35 An endpoint can only be connected to a single datacenter.
37 :param dc: Datacenter object
41 for ep
in self
.openstack_endpoints
.values():
42 ep
.manage
= self
.manage
44 ("Connected DC(%s) to API endpoint %s(%s:%d)" % (dc
.label
, self
.__class
__.__name
__, self
.ip
, self
.port
))
46 def connect_dc_network(self
, dc_network
):
48 Connect the datacenter network to the endpoint.
50 :param dc_network: Datacenter network reference
51 :type dc_network: :class:`.net`
53 self
.manage
.net
= dc_network
54 self
.compute
.nets
[self
.manage
.floating_network
.id] = self
.manage
.floating_network
55 logging
.info("Connected DCNetwork to API endpoint %s(%s:%d)" % (
56 self
.__class
__.__name
__, self
.ip
, self
.port
))
60 Start all connected OpenStack endpoints that are connected to this API endpoint.
62 for component
in self
.openstack_endpoints
.values():
63 component
.compute
= self
.compute
64 component
.manage
= self
.manage
65 thread
= threading
.Thread(target
=component
._start
_flask
, args
=())
67 thread
.name
= component
.__class
__
72 Stop all connected OpenStack endpoints that are connected to this API endpoint.
74 for component
in self
.openstack_endpoints
.values():
75 url
= "http://" + component
.ip
+ ":" + str(component
.port
) + "/shutdown"