investigate manilachanges - csabahenk/manila GitHub Wiki

Investigate Manila changes - generic driver, security-service, share-network

###Questions

  1. What does this API/driver do?
  2. How does this API/driver affect the implementation of the generic gateway-mediated-multitenant driver?

###Generic Driver Generic driver creates Nova instances (service VMs) which service the shared filesystems into tenants' networks. So the generic driver creates a share by the following steps:

  • Creating service VM using Nova (one per network)
  • Creating volume using Cinder
  • Attaching newly created volume to a service VM
  • Exporting this volume

But Manila needs network access to the service VM for exporting the volume. The 2 proposed methods to enable this network connection are:

  1. create virtual network interfaces (VIFs) connected to the tenant network on the Manila node and use those to talk to service VMs
  2. assign global/floating IP to the service VM to which Manila can ssh.

It was agreed on Jan 16th that approach 1 would be implemented first. For such an approach, the following steps would be followed:

  • Create service VM.
  • Create Linux network name spaces (netn) {one netns for every neutron network}.
  • Allocate neutron port from private subnet in which service VM resides.
  • Inside netns create virtual interface, configure it with received neutron port parameters and bind it to integration bridge.
  • Neutron agent will do the remaining configurations.

###Changes to Share abstract driver The 2 new methods introduced in Manila share's abstract driver,

  1. get_network_allocation_number: returns the number of allocations (?) for creating Virtual network interfaces.
  2. setup_network: setup and configures VIFS with given(?) network parameters

These 2 methods appear not to be relevant for our Gluster driver for now. But I'm not sure.

###Configuring a share (at least my understanding) ** security-service -> share-network -> share **

Security service DB,

__tablename__ = 'security_services'
id = Column(String(36), primary_key=True)
project_id = Column(String(36), nullable=False)
type = Column(String(32), nullable=False)
dns_ip = Column(String(64), nullable=True)
server = Column(String(255), nullable=True)
domain = Column(String(255), nullable=True
sid = Column(String(255), nullable=True)
name = Column(String(255), nullable=True)
description = Column(String(255), nullable=True)
status = Column(Enum(constants.STATUS_NEW, constants.STATUS_ACTIVE,
                     constants.STATUS_ERROR),
                default=constants.STATUS_NEW)

Create a security service object,

manila security-service-create <type>
                               --dns-ip <dns ip adress used inside tenant’s network>
                               --server <security service ip address or hostname>
                               --domain <security service domain>
                               --sid <security service user or group used by tenant>
                               --name <security service name>
                               --description <field to store description for security service>

Create a share network object,

manila share-network-create --neutron-net-id <neutron network id>
                            --neutron-subnet-id <neutron subnet id>
                            --name <name>
                            --description <description>

Associate share network with a security service type.

manila share-network-security-service-add <share network id> <security service id>

And then associate a share with a share-network id (?)

References

  1. Manila chat logs Jan 9th, Jan 16th
  2. API-doc on security-service and share-network APIs
  3. Generic driver doc
⚠️ **GitHub.com Fallback** ⚠️