def update_vip(self, new_vip): vs_ipaddress = new_vip['address'] vs_port = new_vip['protocol_port'] vs_name = new_vip['name'] vs_server_port = self._adx_server_port(vs_ipaddress, vs_port, vs_name) new_session_persistence = new_vip.get('session_persistence') LOG.debug('Update Session Persistence') if new_session_persistence is None: try: (self.slb_service.disableStickyOnVirtualServerPort( vs_server_port)) except suds.WebFault as e: raise adx_exception.ConfigError(msg=e.message) else: type = new_vip['session_persistence']['type'] if type == 'SOURCE_IP': try: (self.slb_service.enableStickyOnVirtualServerPort( vs_server_port)) except suds.WebFault as e: raise adx_exception.ConfigError(msg=e.message) else: error_message = ('Session Persistence of type %s ' 'not supported') % (type) LOG.error(error_message) raise adx_exception.UnsupportedFeature(msg=error_message)
def update_health_monitor(self, new_hm, old_hm): monitor_type = new_hm['type'] # Create Port Policy # if the Monitor Type is TCP / HTTP / HTTPS if monitor_type in ['HTTP', 'HTTPS', 'TCP']: self._create_update_port_policy(new_hm, False) elif monitor_type == 'PING': m = 'Health Monitor of type PING not supported' LOG.error(m) raise adx_exception.UnsupportedFeature(msg=m)
def create_health_monitor(self, healthmonitor): name = healthmonitor['id'] monitor_type = healthmonitor['type'] # Create Port Policy # if the Monitor Type is TCP / HTTP / HTTPS if monitor_type in ['HTTP', 'HTTPS', 'TCP']: if not self._does_port_policy_exist(healthmonitor): self._create_update_port_policy(healthmonitor) else: LOG.debug('Port Policy %s already exists on the device', name) elif monitor_type == 'PING': m = 'Health Monitor of type PING not supported' LOG.error(m) raise adx_exception.UnsupportedFeature(msg=m)
def delete_health_monitor(self, healthmonitor): name = healthmonitor['id'] monitor_type = healthmonitor['type'] if monitor_type in ['HTTP', 'HTTPS', 'TCP']: if not self._does_port_policy_exist(healthmonitor): LOG.debug('Health Monitor %s does not ' 'exist on the device', name) return if not self._is_port_policy_in_use(name): try: (self.slb_service.deletePortPolicy(name)) except suds.WebFault as e: raise adx_exception.ConfigError(msg=e.message) elif monitor_type == 'PING': m = 'Delete of PING Monitor not supported' LOG.error(m) raise adx_exception.UnsupportedFeature(msg=m)
def set_predictor_on_virtual_server(self, vip): try: server = self._adx_server(vip['address'], vip['name']) lb_method = vip['lb_method'] predictor_method_configuration = ( self.slb_factory.create('PredictorMethodConfiguration')) predictor = ADX_PREDICTOR_MAP.get(lb_method) if predictor: predictor_method_configuration.predictor = predictor else: error_message = ('Load Balancing Method/Predictor %s ' 'not supported') % (lb_method) LOG.error(error_message) raise adx_exception.UnsupportedFeature(msg=error_message) (self.slb_service.setPredictorOnVirtualServer( server, predictor_method_configuration)) except suds.WebFault as e: raise adx_exception.ConfigError(msg=e.message)
def create_virtual_server_port(self, vip): vs_name = vip['name'] vs_ip_address = vip['address'] vs_port = vip['protocol_port'] admin_state_up = vip.get('admin_state_up', 'DISABLED') l4_protocol = vip.get('l4_protocol') try: server_port = self._adx_server_port(vs_ip_address, vs_port, vs_name) vs_port_seq = (self.slb_factory.create( 'ArrayOfVirtualServerPortConfigurationSequence')) vs_port_config = ( self.slb_factory.create('VirtualServerPortConfiguration')) vs_port_config.virtualServer = server_port.srvr vs_port_config.port = server_port.port vs_port_config.adminState = admin_state_up if l4_protocol == 'TCP': vs_port_config.tcpOnly = True else: vs_port_config.udpOnly = True session_persistence = vip.get('session_persistence') if session_persistence: sp_type = session_persistence['type'] if sp_type == 'SOURCE_IP': vs_port_config.enableSticky = True else: error_message = ('Session Persistence of type %s ' 'not supported') % (sp_type) LOG.error(error_message) raise adx_exception.UnsupportedFeature(msg=error_message) (vs_port_seq.VirtualServerPortConfigurationSequence.append( vs_port_config)) (self.slb_service.createVirtualServerPortWithConfiguration( vs_port_seq)) except suds.WebFault as e: raise adx_exception.ConfigError(msg=e.message)