Implement cross pod l3 networking functionality. In this first
patch, we finish the logic to prepare related resources when user
issues router-interface-add request, including bottom router,
bottom network, bridge network, etc.
In the first step, we only consider the scenario that networks
do not cross pods. Each tenant has a cross-pods VLAN network
(the bridge network mentioned above) to connect different tenant
networks in different pods and we use extra routes to route
packets between pods. We ultilize the AZ hint attribute of network
to figure out which pod the network belongs to, so we do not need
to wait for the creation of the first VM to know which pod to
create the bottom network.
The configuration of extra routes will be implemented in the
second patch.
Change-Id: Ia455812732bc825c9367df0e2c4e23c512d8f401
This patch is to implement basic volume operation: post/get_one
/get_all/detail/delete through Cinder API gateway
Some TODO work was left in the code for later implementation
BP: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: Id338894592a2522dc3e138d754d278c604b21758
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
One AZ(availability zone) can have multiple pods, but one pod will
belong to only one AZ. Tricircle will serve as the OpenStack API
gateway to bottom pods.
BP: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: Ie7fc4faaa5ae4ca7c0e0153e993ea3f9f0cc252b
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
One AZ(availability zone) can have multiple pods, but one pod will
belong to only one AZ. For pod_map model, it intends to support one
pod's az mapped to one top AZ, so that multiple bottom AZs in one pod
could be under different top AZ, this model is two complicated,
simplify the modle to only allow one pod under one top AZ.
BP: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: I4c924ca491aa4de7b9e20c21f7c12c59c2ab70fc
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
As we discuss, pod is a more suitable term to represent bottom
OpenStack instance, so migrate Site model to Pod model. Also the
original Site API is removed and README is updated.
Change-Id: I3bf9b8150866cafaba371e7911d8016650b0532b
Allow one AZ has many pods, and each pod is one bottom OpenStack managed
by Tricircle. Tricircle forward regarding request according to the AZ pod
mapping. And one Tenant will be bound to one pod in one AZ, so that
resources of one tenant will be collocated inside one pod in one AZ.
During the AZ pod mapping creation, also automaticly adding aggregate
and az information according to pod_name(the bottom OpenStack region
name)
BP: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: I0d60687e36190b279837eba24a3d3c65386ea4c5
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
Currently network plugin imports neutron.db.l3_db, which results
in database model init failure because of some dependency errors.
Since l3 functionality is not implemented yet in network plugin,
remove this import to avoid the failure.
Change-Id: I1e9585f5061d334bfb7752d9934f65b50c1d471b
Allow one AZ has many pods, and each pod is one bottom OpenStack managed
by Tricircle. Tricircle forward regarding request according to the AZ pod
mapping. And one Tenant will be bound to one pod in one AZ, so that resources
of one tenant will be collocated inside one pod in one AZ.
BP: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: Iee9572366539b4263ed7b51cbfe0e9cac1ce795f
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
Deploy stateless Tricircle in one node using DevStack. Script
starts an extra Neutron server for bottom region, and updates
Keystone endpoint to move original Nova service to bottom region
as well as to register Tricircle Nova gateway as compute service
in top region.
This patch also updates readme file to introduce stateless
Tricircle depolyment.
Change-Id: I5c63d96bf2f7c93cc8ff56388f805425347bd8ea
Implement controller for server, flavor and aggregate. Query and
creation operations are covered so we can basically boot a server
with flavor, image, availability zone and network.
Work not done in this patch:
(1) More booting parameters support
(2) Updating and deleting operation support
(3) Test
Change-Id: I77a5c5dd48a67dd6bb104601e95a4eb29bd802e1
Blueprint: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
The host ip setting HOST_IP=172.16.10.10 in local.conf.sample
for devstack should be removed. So that the host ip 127.0.0.1
will be used by default
Bug: https://bugs.launchpad.net/tricircle/+bug/1526204
Change-Id: Ided0f889de7317c6890a61334a6c917893d5d57e
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
Implement Neutron plugin for stateless architecture. For creating operation,
it simply stores a resource entry in top layer database; for updating and
deleting operations it checks if there exists a resource routing entry, if
so, it not only updates database in top layer but also sends request to bottom
layers; for query, it returns data in bottom layers if routing entry exists,
otherwise returns data in top layer.
Plugin does not maintain routing entries itself, the creator of bottom layer
resources is responsible to add routing entries.
For test purpose, DevStack plugin script is updated to start two other Neutron
servers to simulate bottom layer services.
Blueprint: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: I238a8274e1d54df7c82c477321d4c827265db67d
Initial patch to implement the framework of Tricircle, this is
the part for XJob, establish rpc connection to message bus, and one
sample rpc call 'testrpc' from Nova-APIGW.
Blueprint: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
Change-Id: I8e538de187c075ad06e090edb7061ae6caa1deda
Signed-off-by: Chaoyi Huang <joehuang@huawei.com>
Initial patch to implement the framework of Tricircle, this is
the part for Nova api gateway and Cinder api gateway, keystone
authentication integrated.
Change-Id: I7e33948d4850cf1eabeb9c865fc79c2475323988
Blueprint: https://blueprints.launchpad.net/tricircle/+spec/implement-stateless
In stateless architecture, we have our own nova and cinder api
gateway, which require tables to store resource models. Neutron
doesn't need this because we use its original tables. A resource
routing table is also added to map resources from top to bottom.
Besides, database access functions are moved from "models" module
to a new "api" module.
Change-Id: Ib4577fa494c232302dbbd6681b7d84b9a9cef00d
Init patch for stateless architecture. API, db and client modules
are borrowed from master branch, but dispatcher and proxy modules
are removed. Also adapt OpenStack new project template.
Change-Id: I9f84cb029195cf26e9ad71ae3cbd69b2cc765bb2
Just using cascading neutron object(net, subnet, port) uuid as name
of cascaded neutron object when creating these objects in nova.
Change-Id: I627d482c62e5f8c552623030104790f89da70533
Before, the cascading don't know the aggregates and resource info of
the cascadeds managed by proxys, so we cannot using the most filters
to choose the proper host with nova scheduler.
By updating the aggregates(includes hosts and metadata) and resource
used info in cascaded to the cascading periodically, this problem can
be solved.
Change-Id: If369f0023130c24544bbdbb3c1afbef05527d783
when cinderClient being generated, b/c this will be helpful to break
out from recursion when cinderclient being constructed from invalid
user/password
Change-Id: Id179b03b5d60af0af8cccfb64a7fad1ca709bf83
Add re-check logic when create network faild with the Conflict Exception
whose status_code is 409, it's means another task of creating the same
network is happend and done. So there is no need to create it again, instead
we query if the network exists(by name). If we can not find the network,
then the exception raised.
Change-Id: I44a6909b3119be748d4445a0f560454c19687276
When creating cascading port in nova proxy, add the 'name' field which
contains a cascading network_name and port uuid.
Change-Id: I730a0ca953513b9f965155141d04b90b39963432
When creating cascading port in nova proxy, add the 'name' field which
contains a cascading network_name and port uuid.
Change-Id: I40418f24f4f4813b90add46fe11457819c2bf6ec
add flag to cinder-proxy for volume status sync based on timestamp between cascading and cascaded OpenStack
Change-Id: I0d396a729df7d9d1265012b6052405181e3d7531