def test_0030_update_nat_rule(self): """Update a Nat Rule. Invokes the update_nat_rule of the NatRule. """ gateway = Environment. \ get_test_gateway(TestNatRule._client) gateway_obj = Gateway(TestNatRule._client, TestNatRule._name, href=gateway.get('href')) nat_rule = gateway_obj.get_nat_rules() rule_id = self.__get_snat_rule_id(nat_rule) nat_obj = NatRule(TestNatRule._client, self._name, rule_id) nat_obj.update_nat_rule( original_address=TestNatRule._new_snat_orig_addr, translated_address=TestNatRule._new_snat_trans_addr, description=TestNatRule._new_snat_desc) #Verify nat_rule = gateway_obj.get_nat_rules() match_found = False for natRule in nat_rule.natRules.natRule: if natRule.originalAddress == TestNatRule._new_snat_orig_addr and \ natRule.translatedAddress == TestNatRule._new_snat_trans_addr and \ natRule.description == TestNatRule._new_snat_desc: match_found = True self.assertTrue(match_found)
def get_nat_rule_from_definition(self, nat_definition): for rule in self.gateway.list_nat_rules(): nat_rule = NatRule( self.client, self.gateway_name, rule_id=rule['ID']) if self.compare_nat_rule(nat_rule.get_nat_rule_info(), nat_definition): return nat_rule.get_nat_rule_info() return {}
def update(self): response = dict() response['changed'] = False response['msg'] = list() for service_param in self.service_params: nat_rule_id = service_param.get("nat_rule_id") original_address = service_param.get("original_address") translated_address = service_param.get("translated_address") description = service_param.get("description", '') protocol = service_param.get("protocol", 'any') original_port = service_param.get("original_port", 'any') translated_port = service_param.get("translated_port", 'any') icmp_type = service_param.get("icmp_type", 'any') enabled = service_param.get("enabled", True) logging_enabled = service_param.get("logging_enabled", False) vnic = service_param.get("vnic", 0) nat_rule_obj = NatRule(client=self.gateway.client, gateway_name=self.gateway.name, rule_id=nat_rule_id) nat_rule_obj.href = self.get_nat_rule_href(nat_rule_id) nat_rule_obj.update_nat_rule(original_address, translated_address, description, protocol, original_port, translated_port, icmp_type, logging_enabled, enabled, vnic) response['msg'].append(nat_rule_id) response['msg'] = 'Nat rule(s) {0} are updated'.format(response['msg']) response['changed'] = True return response
def delete_nat_rule(self, nat_id=None, nat_definition=None): nat_rule = None if nat_definition: nat_rule = self.get_nat_rule_from_definition(nat_definition) elif nat_id: nat_rule = NatRule(self.client, self.gateway_name, rule_id=nat_id) elif not nat_rule: raise VCloudSDKException( 'Unable to find nat rule for deletion, because neither ' 'nat_id {nat_id}, nor nat_definition {definition} ' 'resolved to any known rules for gateway {gateway}.'.format( nat_id=nat_id, definition=nat_definition, gateway=self.gateway_name)) return nat_rule.delete_nat_rule()
def delete(self): response = dict() response['changed'] = False response['msg'] = list() for service_param in self.service_params: nat_rule_id = service_param.get("nat_rule_id") nat_rule_obj = NatRule(client=self.gateway.client, gateway_name=self.gateway.name, rule_id=nat_rule_id) nat_rule_obj.href = self.get_nat_rule_href(nat_rule_id) nat_rule_obj.delete_nat_rule() response['msg'].append(nat_rule_id) response['msg'] = 'Nat rule(s) {0} are deleted'.format(response['msg']) response['changed'] = True return response
def test_0015_get_nat_rule_info(self): """Get the details of nat rule. Invokes the get_nat_rule_info of the NatRule. """ gateway = Environment. \ get_test_gateway(TestNatRule._client) gateway_obj = Gateway(TestNatRule._client, TestNatRule._name, href=gateway.get('href')) nat_rule = gateway_obj.get_nat_rules() rule_id = self.__get_snat_rule_id(nat_rule) nat_obj = NatRule(TestNatRule._client, self._name, rule_id) nat_rule_info = nat_obj.get_nat_rule_info() #Verify self.assertTrue(len(nat_rule_info) > 0) self.assertEqual(nat_rule_info['Action'], TestNatRule._snat_action) self.assertEqual(nat_rule_info['OriginalAddress'], TestNatRule._snat_orig_addr)
def get_nat_rule(ctx, gateway_name, rule_id): """Get the Nat Rule resource. It will restore sessions if expired. It will reads the client and creates the Nat Rule resource object. """ restore_session(ctx, vdc_required=True) client = ctx.obj['client'] resource = NatRule(client, gateway_name, rule_id) return resource
def test_0090_delete_nat_rule(self): """Delete Nat Rule in the gateway. Invokes the delete_nat_rule of the NatRule. """ gateway = Environment. \ get_test_gateway(TestNatRule._client) gateway_obj = Gateway(TestNatRule._client, TestNatRule._name, href=gateway.get('href')) nat_rule = gateway_obj.get_nat_rules() nat_objects = [] for natRule in nat_rule.natRules.natRule: nat_objects.append( NatRule(TestNatRule._client, self._name, natRule.ruleId)) for nat_object in nat_objects: nat_object.delete_nat_rule() #Verify nat_rule = gateway_obj.get_nat_rules() self.assertFalse(hasattr(nat_rule.natRules, 'natRule'))