<?php

class network{ 
	
	protected $app;
	
	protected $libClass;
	
	

	

	
	public function __construct($app){
		$this->app = $app;
		$this->libClass = $app->getLibClass("network");
		
	}


	public function action($action){
		
		 $this->{$action.""}();
		
	}

	
	public function create_network()
	{
		$options = array();
		if (isset($this->app->getPostParam("name")))
		{
			$options['name'] = $this->app->getPostParam("name"); 
		}
		if (isset($this->app->getPostParam("adminStateUp")))
		{
			$options['adminStateUp'] = $this->app->getPostParam("adminStateUp"); 
		}
		if (isset($this->app->getPostParam("shared")))
		{
			$options['shared'] = $this->app->getPostParam("shared"); 
		}
		if (isset($this->app->getPostParam("tenantId")))
		{
			$options['tenantId'] = $this->app->getPostParam("tenantId"); 
		}
		try
		{
		$network = $this->libClass->createNetworks($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}		

		
	}

	public function create_subnet()
	{	$options = array();
		if (isset($this->app->getPostParam("networkId")))
		{
			$options['networkId'] = $networkId; 
		}
		if (isset($this->app->getPostParam("ipVersion")))
		{
			$options['ipVersion'] = $this->app->getPostParam("ipVersion"); 
		}
		if (isset($this->app->getPostParam("cidr")))
		{
			$options['cidr'] = $this->app->getPostParam("cidr"); 
		}
		if (isset($this->app->getPostParam("tenantId")))
		{
			$options['tenantId'] = $this->app->getPostParam("tenantId"); 
		}
		if (isset($this->app->getPostParam("name")))
		{
			$options['name'] = $$this->app->getPostParam("name"); 
		}
		if (isset($this->app->getPostParam("gatewayIp")))
		{
			$options['gatewayIp'] = $this->app->getPostParam("gatewayIp"); 
		}
		if (isset($this->app->getPostParam("dnsNameservers")))
		{
			$options['dnsNameservers'] = $this->app->getPostParam("dnsNameservers"); 
		}
		if (isset($this->app->getPostParam("allocationPools")))
		{
			$options['allocationPools'] = $this->app->getPostParam("allocationPools"); 
		}
		if (isset($this->app->getPostParam("hostRoutes")))
		{
			$options['hostRoutes'] = $this->app->getPostParam("hostRoutes"); 
		}
		if (isset($this->app->getPostParam("enableDhcp")))
		{
			$options['enableDhcp'] = $this->app->getPostParam("enableDhcp"); 
		}
		if (isset($this->app->getPostParam("tenantId")))
		{
			$options['tenantId'] = $this->app->getPostParam("tenantId"); 
		}
		
		try
		{
		$subnet = $this->libClass->createSubnet($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	

		
	}
	
	public function list_network_ids()
	{
		try
		{
			$ln = $this->libClass->listNetworks();
		
			$list_ids = array();

		
			foreach($ln as $n)
			{
			
				$list_ids[] =  $n->id;
		

			}
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	

	$this->app->setOutput("ListNetworkIds", $list_ids);
	}

	public function list_network_names()
	{
		try
		{
			$ln = $this->libClass->listNetworks();
		
			$list_names = array();

		
			foreach($ln as $n)
			{
			
				$list_names[] =  $n->name;
		

			}
		
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	

	$this->app->setOutput("ListNetworkNames", $list_names);
	}

	public function list_cidr()
	{
		try
		{
				$ls = $this->libClass->listSubnets();
				$list_cidr = array();
				foreach ($ls as $subnet)
				 {
		     		
					$list_cidr[] = $subnet->cidr;
				 }

				$this->app->setOutput("ListCidr", $list_cidr);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}
	
	public function getNetwork()
	{
		$network="";
		
		try
		{	$newtork = $this->libClass->getNetwork($this->app->getPostParam("networkId"));
			$network->retrieve();

			
		}

		
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	

	$this->app->setOutput("Network", $network);
	}

	public function getNetwork($netId)
	{
		$network="";
		
		try
		{	$newtork = $this->libClass->getNetwork($netId);
			$network->retrieve();

			
		}

		
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	

	return $network;
	}

	public function getSubnet()
	{
		$sbnet="";
		
		try
		{	$subnet = $this->libClass->getSubnet($this->app->getPostParam("subnetId"));
			$subnet->retrieve();

			
		}

		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
		$this->app->setOutput("Subnet", subnet);
	
	}

	public function getSubnet($subnetId)
	{
		$subnet="";
		
		try
		{	$subnet = $this->libClass->getSubnet($subnetId);
			$subnet->retrieve();

			
		}

		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
		return $subnet;
	
	}		

        public function updateNetwork()
     	{	
		$options = array();
		if(isset($this->app->getPostParam("name")))
		{
			$options['name'] = $this->app->getPostParam("name");	
		}
		if(isset($this->app->getPostParam("shared")))
		{
			$options['shared'] = $this->app->getPostParam("shared");	
		}
		if(isset($this->app->getPostParam("adminStateUp")))
		{
			$options['adminStateUp'] = $this->app->getPostParam("adminStateUp");	
		}
		try
		{		
			$network = getNetwork($this->app->getPostParam("networkId"));
		
			$network->update($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}
	
	public function updateSubnet()
     	{	
		$options = array();
		if(isset($this->app->getPostParam("name")))
		{
			$options['name'] = $this->app->getPostParam("name");	
		}
		if(isset($this->app->getPostParam("networkId")))
		{
			$options['networkId'] = $this->app->getPostParam("networkId");	
		}
		if(isset($this->app->getPostParam("ipVersion")))
		{
			$options['ipVersion'] = $this->app->getPostParam("ipVersion");	
		}
		if(isset($this->app->getPostParam("cidr")))
		{
			$options['cidr'] = $this->app->getPostParam("cidr");	
		}
		try
		{
			$subnet = getSubnet($this->app->getPostParam("networkId"));
		
			$subnet->update($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}

	public function deleteNetwork()
     	{
		try
		{
				
			$network = getNetwork($this->app->getPostParam("networkId"));
			$network->delete();
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}

	public function deleteSubnet()
     	{
		try
		{		
			$subnet = getNetwork($this->app->getPostParam("subnetId"));
			$subnet->delete();
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}

	public function createPort()
	{
		$options = array();
		if (isset($this->app->getPostParam("networkId")))
		{
			$options['networkId'] = $this->app->getPostParam("networkId"); 
		}
		if (isset($this->app->getPostParam("name")))
		{
			$options['name'] = $this->app->getPostParam("name"); 
		}
		if (isset($this->app->getPostParam("adminStateUp")))
		{
			$options['adminStateUp'] = $this->app->getPostParam("adminStateUp"); 
		}
		if (isset($this->app->getPostParam("macAddress")))
		{
			$options['macAddress'] = $this->app->getPostParam("macAddress"); 
		}
		if (isset($this->app->getPostParam("fixedIps")))
		{
			$options['fixedIps'] = $this->app->getPostParam("fixedIps"); 
		}
		if (isset($this->app->getPostParam("deviceId")))
		{
			$options['deviceId'] = $this->app->getPostParam("deviceId"); 
		}
		if (isset($this->app->getPostParam("deviceOwner")))
		{
			$options['deviceOwner'] = $this->app->getPostParam("deviceOwner"); 
		}
		if (isset($this->app->getPostParam("securityGroups")))
		{
			$options['securityGroups'] = $this->app->getPostParam("securityGroups"); 
		}
		if (isset($this->app->getPostParam("tenantId")))
		{
			$options['tenantId'] = $this->app->getPostParam("tenantId"); 
		}
		try
		{
			$this->libClass->createPort($options);	
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		 }
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}

	public function listPorts()
	{
		try
		{		
			$this->app->setOutput("listPorts", $this->libClass->listPorts()); 
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}

	public function getPort()
	{
		try
		{
			$port = $this->libClass->getport($this->app->getPostParam("portId"));
			$this->app->setOutput("Port", $port);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	
	}

	public function getPort($portId)
	{
		try
		{
			$port = $this->libClass->getport($portId);
			return $port;
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	
	}		

	public function updatePort()
	{
		$options = array();
		
		if (isset($this->app->getPostParam("networkId")))
		{
			$options['networkId'] = $this->app->getPostParam("networkId"); 
		}
		if (isset($this->app->getPostParam("name")))
		{
			$options['name'] =$this->app->getPostParam("name"); 
		}
		if (isset($this->app->getPostParam("adminStateUp")))
		{
			$options['adminStateUp'] =$this->app->getPostParam("adminStateUp"); 
		}
		if (isset($this->app->getPostParam("macAddress")))
		{
			$options['macAddress'] = $this->app->getPostParam("macAddress"); 
		}
		if (isset($this->app->getPostParam("fixedIps")))
		{
			$options['fixedIps'] = $this->app->getPostParam("fixedIps"); 
		}
		if (isset($this->app->getPostParam("deviceId")))
		{
			$options['deviceId'] = $this->app->getPostParam("deviceId"); 
		}
		if (isset($this->app->getPostParam("deviceOwner")))
		{
			$options['deviceOwner'] = $this->app->getPostParam("deviceOwner"); 
		}
		if (isset($this->app->getPostParam("networkId")))
		{
			$options['securityGroups'] = $this->app->getPostParam("securityGroups"); 
		}
		if (isset($this->app->getPostParam("tenantId")))
		{
			$options['tenantId'] = $this->app->getPostParam("tenantId"); 
		}
		try
		{
			$port = getPort($this->app->getPostParam("networkId"));
			$port->update($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}	
	}

	public function deletePort()
     	{
		
		try
		{
			$port = getPort($this->app->getPostParam("portId"));
			$port->delete();
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}
	
	public function createSecurityGroup()
	{
		$options = array();
		if (isset($this->app->getPostParam("name")))
		{
			$options['name'] = $this->app->getPostParam("name"); 
		}
		if (isset($this->app->getPostParam("description")))
		{
			$options['description'] = $this->app->getPostParam("description"); 
		}
		try
		{
			$this->libClass->createSecurityGroup($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	
	}

	public function createSecurityGroupRule()
	{
		$options = array();
		if (isset($this->app->getPostParam("securityGroupId")))
		{
			$options['securityGroupId'] = $this->app->getPostParam("securityGroupId"); 
		}
		if (isset($this->app->getPostParam("direction")))
		{
			$options['direction'] = $this->app->getPostParam("direction"); 
		}
		if (isset($this->app->getPostParam("ethertype")))
		{
			$options['ethertype'] = $this->app->getPostParam("ethertype"); 
		}
		if (isset($this->app->getPostParam("portRangeMin")))
		{
			$options['portRangeMin'] = $this->app->getPostParam("portRangeMin"); 
		}
		if (isset($this->app->getPostParam("portRangeMax")))
		{
			$options['portRangeMax'] = $this->app->getPostParam("portRangeMax"); 
		}
		if (isset($this->app->getPostParam("protocol")))
		{
			$options['protocol'] = $this->app->getPostParam("protocol"); 
		}
		if (isset($this->app->getPostParam("remoteGroupId")))
		{
			$options['remoteGroupId'] = $this->app->getPostParam("remoteGroupId"); 
		}
		if (isset($this->app->getPostParam("remoteIpPrefix")))
		{
			$options['remoteIpPrefix'] = $this->app->getPostParam("remoteIpPrefix"); 
		}
		try
		{
			$this->libClass->createSecurityGroupRule($options);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}


	public function listSecurityGroupe()
	{
		try
		{
			$this->app->setOutput("listSecurityGroups", $this->libClass->listSecurityGroups());
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}

	public function listSecurityGroupeRule()
	{
		try
		{
		 
		$this->app->setOutput("listSecurityGroupeRule", $this->libClass->listSecurityGroupRules());

		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}

	public function getSecurityGroupe()
	{
		try
		{
			$securityGroupe = $this->libClass->getSecurityGroupe($this->app->getPostParam("securityGroupeId"));
			$this->app->setOutput("securityGroupe", $securityGroupe);
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	
	}

	public function getSecurityGroupe($securityGroupeId)
	{
		try
		{
			$securityGroupe = $this->libClass->getSecurityGroupe($securityGroupeId);
			return $securityGroupe;
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	
	}

	public function deleteSecurityGroupe()
     	{	
		try
		{
		
			$securityGroupe = getSecurityGroupe($this->app->getPostParam("securityGroupeId"));
			$securityGroupe->delete();
		}
		catch(BadResponseError $e)
		{
			$this->app->getErrorInstance->BadResponseHandler($e);
       		}
		catch(UserInputError $e)
		{
			$this->app->getErrorInstance->UserInputHandler($e);
        	}
		catch(BaseError $e)
		{
			$this->app->getErrorInstance->BaseErrorHandler($e);
       		}
		catch(NotImplementedError $e)
		{
			$this->app->getErrorInstance->NotImplementedHandler($e);
        	}
	}