cloudcomputinghust/CAL

View on GitHub
calplus/v1/compute/client.py

Summary

Maintainability
A
45 mins
Test Coverage
import calplus.conf
from calplus.base import BaseClient

CONF = calplus.conf.CONF


class Client(BaseClient):
    """Top-level object to access CAL API
    This class must be extended base.Singleton class to make
    sure only one instance of this one is ever created."""

    def __init__(self, provider, cloud_config, *args, **kwargs):
        BaseClient.__init__(self, CONF.compute.driver_path,
                            provider, cloud_config)

    def create(self, image, flavor,
               network_id, name, number, **kwargs):
        return self.driver.create(image, flavor,
               network_id, name, number, **kwargs)

    def show(self, instance_id):
        return self.driver.show(instance_id)

    def list(self, **search_opts):
        return self.driver.list(**search_opts)

    def delete(self, instance_id):
        return self.driver.delete(instance_id)

    def shutdown(self, instance_id):
        return self.driver.shutdown(instance_id)

    def start(self, instance_id):
        return self.driver.start(instance_id)

    def reboot(self, instance_id):
        return self.driver.reboot(instance_id)

    def resize(self, instance_id, configuration):
        """
        In OpenStack
        :param instance_id:
        :param configuration: flavor_id
        :return:
        """
        self.driver.resize(instance_id, configuration)

    def add_sg(self, instance_id, new_sg):
        """Add a security group"""
        pass

    def delete_sg(self, instance_id, new_sg):
        """Delete a security group"""
        pass

    def list_sg(self, instance_id):
        """List all security group"""
        pass

    def add_nic(self, instance_id, net_id):
        """Add a Network Interface Controller"""
        return self.driver.add_nic(instance_id, net_id)

    def delete_nic(self, instance_id, attachment_id):
        """Delete a Network Interface Controller

        In OpenStack
        :param instance_id:
        :param attachment_id: port_id
        :return:
        """
        return self.driver.delete_nic(instance_id, attachment_id)

    def list_nic(self, instance_id):
        """List all Network Interface Controller"""
        return self.driver.list_nic(instance_id)

    def add_private_ip(self, instance_id, new_sg):
        """Add private IP"""
        pass

    def delete_private_ip(self, instance_id, new_sg):
        """Delete private IP"""
        pass

    def associate_public_ip(self, instance_id, public_ip_id, private_ip=None):
        """Associate a external IP"""
        return self.driver.associate_public_ip(
            instance_id, public_ip_id, private_ip)

    def disassociate_public_ip(self, public_ip_id):
        """"Disassociate a external IP"""
        return self.driver.disassociate_public_ip(public_ip_id)

    def list_ip(self, instance_id):
        """Add all IPs"""
        return self.driver.list_ip(instance_id)