@@ -121,6 +121,15 @@ def test_create_all_source_options(self):
121121 self .assertRaises (tests_utils .ParserException ,
122122 self .check_parser , self .cmd , arglist , [])
123123
124+ def test_create_all_remote_options (self ):
125+ arglist = [
126+ '--remote-ip' , '10.10.0.0/24' ,
127+ '--remote-group' , self ._security_group .id ,
128+ self ._security_group .id ,
129+ ]
130+ self .assertRaises (tests_utils .ParserException ,
131+ self .check_parser , self .cmd , arglist , [])
132+
124133 def test_create_bad_ethertype (self ):
125134 arglist = [
126135 '--ethertype' , 'foo' ,
@@ -215,7 +224,7 @@ def test_create_proto_option(self):
215224 self .assertEqual (self .expected_columns , columns )
216225 self .assertEqual (self .expected_data , data )
217226
218- def test_create_source_group (self ):
227+ def test_create_remote_group (self ):
219228 self ._setup_security_group_rule ({
220229 'port_range_max' : 22 ,
221230 'port_range_min' : 22 ,
@@ -250,6 +259,34 @@ def test_create_source_group(self):
250259 self .assertEqual (self .expected_columns , columns )
251260 self .assertEqual (self .expected_data , data )
252261
262+ def test_create_source_group (self ):
263+ self ._setup_security_group_rule ({
264+ 'remote_group_id' : self ._security_group .id ,
265+ })
266+ arglist = [
267+ '--ingress' ,
268+ '--src-group' , self ._security_group .name ,
269+ self ._security_group .id ,
270+ ]
271+ verifylist = [
272+ ('ingress' , True ),
273+ ('src_group' , self ._security_group .name ),
274+ ('group' , self ._security_group .id ),
275+ ]
276+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
277+
278+ columns , data = self .cmd .take_action (parsed_args )
279+
280+ self .network .create_security_group_rule .assert_called_once_with (** {
281+ 'direction' : self ._security_group_rule .direction ,
282+ 'ethertype' : self ._security_group_rule .ethertype ,
283+ 'protocol' : self ._security_group_rule .protocol ,
284+ 'remote_group_id' : self ._security_group_rule .remote_group_id ,
285+ 'security_group_id' : self ._security_group .id ,
286+ })
287+ self .assertEqual (self .expected_columns , columns )
288+ self .assertEqual (self .expected_data , data )
289+
253290 def test_create_source_ip (self ):
254291 self ._setup_security_group_rule ({
255292 'protocol' : 'icmp' ,
@@ -279,6 +316,35 @@ def test_create_source_ip(self):
279316 self .assertEqual (self .expected_columns , columns )
280317 self .assertEqual (self .expected_data , data )
281318
319+ def test_create_remote_ip (self ):
320+ self ._setup_security_group_rule ({
321+ 'protocol' : 'icmp' ,
322+ 'remote_ip_prefix' : '10.0.2.0/24' ,
323+ })
324+ arglist = [
325+ '--protocol' , self ._security_group_rule .protocol ,
326+ '--remote-ip' , self ._security_group_rule .remote_ip_prefix ,
327+ self ._security_group .id ,
328+ ]
329+ verifylist = [
330+ ('protocol' , self ._security_group_rule .protocol ),
331+ ('remote_ip' , self ._security_group_rule .remote_ip_prefix ),
332+ ('group' , self ._security_group .id ),
333+ ]
334+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
335+
336+ columns , data = self .cmd .take_action (parsed_args )
337+
338+ self .network .create_security_group_rule .assert_called_once_with (** {
339+ 'direction' : self ._security_group_rule .direction ,
340+ 'ethertype' : self ._security_group_rule .ethertype ,
341+ 'protocol' : self ._security_group_rule .protocol ,
342+ 'remote_ip_prefix' : self ._security_group_rule .remote_ip_prefix ,
343+ 'security_group_id' : self ._security_group .id ,
344+ })
345+ self .assertEqual (self .expected_columns , columns )
346+ self .assertEqual (self .expected_data , data )
347+
282348 def test_create_network_options (self ):
283349 self ._setup_security_group_rule ({
284350 'direction' : 'egress' ,
@@ -527,6 +593,15 @@ def test_create_all_source_options(self):
527593 self .assertRaises (tests_utils .ParserException ,
528594 self .check_parser , self .cmd , arglist , [])
529595
596+ def test_create_all_remote_options (self ):
597+ arglist = [
598+ '--remote-ip' , '10.10.0.0/24' ,
599+ '--remote-group' , self ._security_group .id ,
600+ self ._security_group .id ,
601+ ]
602+ self .assertRaises (tests_utils .ParserException ,
603+ self .check_parser , self .cmd , arglist , [])
604+
530605 def test_create_bad_protocol (self ):
531606 arglist = [
532607 '--protocol' , 'foo' ,
@@ -617,6 +692,38 @@ def test_create_source_group(self):
617692 self .assertEqual (expected_columns , columns )
618693 self .assertEqual (expected_data , data )
619694
695+ def test_create_remote_group (self ):
696+ expected_columns , expected_data = self ._setup_security_group_rule ({
697+ 'from_port' : 22 ,
698+ 'to_port' : 22 ,
699+ 'group' : {'name' : self ._security_group .name },
700+ })
701+ arglist = [
702+ '--dst-port' , str (self ._security_group_rule .from_port ),
703+ '--remote-group' , self ._security_group .name ,
704+ self ._security_group .id ,
705+ ]
706+ verifylist = [
707+ ('dst_port' , (self ._security_group_rule .from_port ,
708+ self ._security_group_rule .to_port )),
709+ ('remote_group' , self ._security_group .name ),
710+ ('group' , self ._security_group .id ),
711+ ]
712+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
713+
714+ columns , data = self .cmd .take_action (parsed_args )
715+
716+ self .compute .security_group_rules .create .assert_called_once_with (
717+ self ._security_group .id ,
718+ self ._security_group_rule .ip_protocol ,
719+ self ._security_group_rule .from_port ,
720+ self ._security_group_rule .to_port ,
721+ self ._security_group_rule .ip_range ['cidr' ],
722+ self ._security_group .id ,
723+ )
724+ self .assertEqual (expected_columns , columns )
725+ self .assertEqual (expected_data , data )
726+
620727 def test_create_source_ip (self ):
621728 expected_columns , expected_data = self ._setup_security_group_rule ({
622729 'ip_protocol' : 'icmp' ,
@@ -649,6 +756,38 @@ def test_create_source_ip(self):
649756 self .assertEqual (expected_columns , columns )
650757 self .assertEqual (expected_data , data )
651758
759+ def test_create_remote_ip (self ):
760+ expected_columns , expected_data = self ._setup_security_group_rule ({
761+ 'ip_protocol' : 'icmp' ,
762+ 'from_port' : - 1 ,
763+ 'to_port' : - 1 ,
764+ 'ip_range' : {'cidr' : '10.0.2.0/24' },
765+ })
766+ arglist = [
767+ '--protocol' , self ._security_group_rule .ip_protocol ,
768+ '--remote-ip' , self ._security_group_rule .ip_range ['cidr' ],
769+ self ._security_group .id ,
770+ ]
771+ verifylist = [
772+ ('protocol' , self ._security_group_rule .ip_protocol ),
773+ ('remote_ip' , self ._security_group_rule .ip_range ['cidr' ]),
774+ ('group' , self ._security_group .id ),
775+ ]
776+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
777+
778+ columns , data = self .cmd .take_action (parsed_args )
779+
780+ self .compute .security_group_rules .create .assert_called_once_with (
781+ self ._security_group .id ,
782+ self ._security_group_rule .ip_protocol ,
783+ self ._security_group_rule .from_port ,
784+ self ._security_group_rule .to_port ,
785+ self ._security_group_rule .ip_range ['cidr' ],
786+ None ,
787+ )
788+ self .assertEqual (expected_columns , columns )
789+ self .assertEqual (expected_data , data )
790+
652791 def test_create_proto_option (self ):
653792 expected_columns , expected_data = self ._setup_security_group_rule ({
654793 'ip_protocol' : 'icmp' ,
0 commit comments