Merge changes from quantum-framework

This commit is contained in:
Brad Hall 2011-06-06 14:17:43 -07:00
commit 1f5e880341
2 changed files with 116 additions and 3 deletions

29
README Normal file
View File

@ -0,0 +1,29 @@
# -- Welcome!
You have come across a cloud computing network fabric controller. It has identified
itself as "Quantum." It aims to tame your (cloud) networking!
# -- Basics:
1) Quantum REST API: Quantum supports a REST-ful programmatic interface to manage your
cloud networking fabric.
2) Quantum Plugins: Quantum sports a plug-able architecture that allows Quantum's REST API
to be backed by various entities that can create a cloud-class virtual networking fabric.
The advantages of this plug-able architecture is two-folds:
a) Allows for ANY open-source project or commercial vendor to write a Quantum plug-in.
b) Allows Quantum users to not be tied down to a single Quantum implementation and
enables them to switch out a plug-in by simple editing a config file - plugins.ini
# -- Configuring Quantum plug-in
# -- Launching the Quantum Service
# -- Making requests against the Quantum Service
# -- CLI tools to program the Quantum-managed network fabric
# -- Writing your own Quantum plug-in

View File

@ -35,14 +35,33 @@ class QuantumPluginBase(object):
Returns a dictionary containing all
<network_uuid, network_name> for
the specified tenant.
:returns: a list of mapping sequences with the following signature:
[ {'net-id': uuid that uniquely identifies the particular quantum network,
'net-name': a human-readable name associated with network referenced by net-id
},
....
{'net-id': uuid that uniquely identifies the particular quantum network,
'net-name': a human-readable name associated with network referenced by net-id
}
]
:raises: None
"""
pass
@abstractmethod
def create_network(self, tenant_id, net_name):
"""
Creates a new Virtual Network, and assigns it
a symbolic name.
:returns: a sequence of mappings with the following signature:
{'net-id': uuid that uniquely identifies the particular quantum network,
'net-name': a human-readable name associated with network referenced by net-id
}
:raises:
"""
pass
@ -51,14 +70,27 @@ class QuantumPluginBase(object):
"""
Deletes the network with the specified network identifier
belonging to the specified tenant.
:returns: a sequence of mappings with the following signature:
{'net-id': uuid that uniquely identifies the particular quantum network
}
:raises: exception.NetworkInUse
:raises: exception.NetworkNotFound
"""
pass
@abstractmethod
def get_network_details(self, tenant_id, net_id):
"""
retrieved a list of all the remote vifs that
are attached to the network
Retrieves a list of all the remote vifs that
are attached to the network.
:returns: a sequence of mappings with the following signature:
{'net-id': uuid that uniquely identifies the particular quantum network
'net-name': a human-readable name associated with network referenced by net-id
'net-ifaces': ['vif1_on_network_uuid', 'vif2_on_network_uuid',...,'vifn_uuid']
}
:raises: exception.NetworkNotFound
"""
pass
@ -67,6 +99,12 @@ class QuantumPluginBase(object):
"""
Updates the symbolic name belonging to a particular
Virtual Network.
:returns: a sequence of mappings representing the new network attributes, with the following signature:
{'net-id': uuid that uniquely identifies the particular quantum network
'net-name': the new human-readable name associated with network referenced by net-id
}
:raises: exception.NetworkNotFound
"""
pass
@ -75,6 +113,15 @@ class QuantumPluginBase(object):
"""
Retrieves all port identifiers belonging to the
specified Virtual Network.
:returns: a list of mapping sequences with the following signature:
[ {'port-id': uuid representing a particular port on the specified quantum network
},
....
{'port-id': uuid representing a particular port on the specified quantum network
}
]
:raises: exception.NetworkNotFound
"""
pass
@ -82,6 +129,12 @@ class QuantumPluginBase(object):
def create_port(self, tenant_id, net_id, port_state=None):
"""
Creates a port on the specified Virtual Network.
:returns: a mapping sequence with the following signature:
{'port-id': uuid representing the created port on specified quantum network
}
:raises: exception.NetworkNotFound
:raises: exception.StateInvalid
"""
pass
@ -89,7 +142,14 @@ class QuantumPluginBase(object):
def update_port(self, tenant_id, net_id, port_id, port_state):
"""
Updates the state of a specific port on the
specified Virtual Network
specified Virtual Network.
:returns: a mapping sequence with the following signature:
{'port-id': uuid representing the updated port on specified quantum network
'port-state': update port state( UP or DOWN)
}
:raises: exception.StateInvalid
:raises: exception.PortNotFound
"""
pass
@ -100,6 +160,13 @@ class QuantumPluginBase(object):
if the port contains a remote interface attachment,
the remote interface is first un-plugged and then the port
is deleted.
:returns: a mapping sequence with the following signature:
{'port-id': uuid representing the deleted port on specified quantum network
}
:raises: exception.PortInUse
:raises: exception.PortNotFound
:raises: exception.NetworkNotFound
"""
pass
@ -108,6 +175,14 @@ class QuantumPluginBase(object):
"""
This method allows the user to retrieve a remote interface
that is attached to this particular port.
:returns: a mapping sequence with the following signature:
{'port-id': uuid representing the port on specified quantum network
'net-id': uuid representing the particular quantum network
'attachment': uuid of the virtual interface bound to the port, None otherwise
}
:raises: exception.PortNotFound
:raises: exception.NetworkNotFound
"""
pass
@ -116,6 +191,11 @@ class QuantumPluginBase(object):
"""
Attaches a remote interface to the specified port on the
specified Virtual Network.
:returns: None
:raises: exception.NetworkNotFound
:raises: exception.PortNotFound
:raises: exception.AlreadyAttached (? should the network automatically unplug/replug)
"""
pass
@ -124,6 +204,10 @@ class QuantumPluginBase(object):
"""
Detaches a remote interface from the specified port on the
specified Virtual Network.
:returns: None
:raises: exception.NetworkNotFound
:raises: exception.PortNotFound
"""
pass