@@ -119,6 +119,15 @@ def test_create_all_source_options(self):
119119 self .assertRaises (tests_utils .ParserException ,
120120 self .check_parser , self .cmd , arglist , [])
121121
122+ def test_create_all_remote_options (self ):
123+ arglist = [
124+ '--remote-ip' , '10.10.0.0/24' ,
125+ '--remote-group' , self ._security_group .id ,
126+ self ._security_group .id ,
127+ ]
128+ self .assertRaises (tests_utils .ParserException ,
129+ self .check_parser , self .cmd , arglist , [])
130+
122131 def test_create_bad_ethertype (self ):
123132 arglist = [
124133 '--ethertype' , 'foo' ,
@@ -213,7 +222,7 @@ def test_create_proto_option(self):
213222 self .assertEqual (self .expected_columns , columns )
214223 self .assertEqual (self .expected_data , data )
215224
216- def test_create_source_group (self ):
225+ def test_create_remote_group (self ):
217226 self ._setup_security_group_rule ({
218227 'port_range_max' : 22 ,
219228 'port_range_min' : 22 ,
@@ -248,6 +257,34 @@ def test_create_source_group(self):
248257 self .assertEqual (self .expected_columns , columns )
249258 self .assertEqual (self .expected_data , data )
250259
260+ def test_create_source_group (self ):
261+ self ._setup_security_group_rule ({
262+ 'remote_group_id' : self ._security_group .id ,
263+ })
264+ arglist = [
265+ '--ingress' ,
266+ '--src-group' , self ._security_group .name ,
267+ self ._security_group .id ,
268+ ]
269+ verifylist = [
270+ ('ingress' , True ),
271+ ('src_group' , self ._security_group .name ),
272+ ('group' , self ._security_group .id ),
273+ ]
274+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
275+
276+ columns , data = self .cmd .take_action (parsed_args )
277+
278+ self .network .create_security_group_rule .assert_called_once_with (** {
279+ 'direction' : self ._security_group_rule .direction ,
280+ 'ethertype' : self ._security_group_rule .ethertype ,
281+ 'protocol' : self ._security_group_rule .protocol ,
282+ 'remote_group_id' : self ._security_group_rule .remote_group_id ,
283+ 'security_group_id' : self ._security_group .id ,
284+ })
285+ self .assertEqual (self .expected_columns , columns )
286+ self .assertEqual (self .expected_data , data )
287+
251288 def test_create_source_ip (self ):
252289 self ._setup_security_group_rule ({
253290 'protocol' : 'icmp' ,
@@ -277,6 +314,35 @@ def test_create_source_ip(self):
277314 self .assertEqual (self .expected_columns , columns )
278315 self .assertEqual (self .expected_data , data )
279316
317+ def test_create_remote_ip (self ):
318+ self ._setup_security_group_rule ({
319+ 'protocol' : 'icmp' ,
320+ 'remote_ip_prefix' : '10.0.2.0/24' ,
321+ })
322+ arglist = [
323+ '--protocol' , self ._security_group_rule .protocol ,
324+ '--remote-ip' , self ._security_group_rule .remote_ip_prefix ,
325+ self ._security_group .id ,
326+ ]
327+ verifylist = [
328+ ('protocol' , self ._security_group_rule .protocol ),
329+ ('remote_ip' , self ._security_group_rule .remote_ip_prefix ),
330+ ('group' , self ._security_group .id ),
331+ ]
332+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
333+
334+ columns , data = self .cmd .take_action (parsed_args )
335+
336+ self .network .create_security_group_rule .assert_called_once_with (** {
337+ 'direction' : self ._security_group_rule .direction ,
338+ 'ethertype' : self ._security_group_rule .ethertype ,
339+ 'protocol' : self ._security_group_rule .protocol ,
340+ 'remote_ip_prefix' : self ._security_group_rule .remote_ip_prefix ,
341+ 'security_group_id' : self ._security_group .id ,
342+ })
343+ self .assertEqual (self .expected_columns , columns )
344+ self .assertEqual (self .expected_data , data )
345+
280346 def test_create_network_options (self ):
281347 self ._setup_security_group_rule ({
282348 'direction' : 'egress' ,
@@ -498,6 +564,15 @@ def test_create_all_source_options(self):
498564 self .assertRaises (tests_utils .ParserException ,
499565 self .check_parser , self .cmd , arglist , [])
500566
567+ def test_create_all_remote_options (self ):
568+ arglist = [
569+ '--remote-ip' , '10.10.0.0/24' ,
570+ '--remote-group' , self ._security_group .id ,
571+ self ._security_group .id ,
572+ ]
573+ self .assertRaises (tests_utils .ParserException ,
574+ self .check_parser , self .cmd , arglist , [])
575+
501576 def test_create_bad_protocol (self ):
502577 arglist = [
503578 '--protocol' , 'foo' ,
@@ -588,6 +663,38 @@ def test_create_source_group(self):
588663 self .assertEqual (expected_columns , columns )
589664 self .assertEqual (expected_data , data )
590665
666+ def test_create_remote_group (self ):
667+ expected_columns , expected_data = self ._setup_security_group_rule ({
668+ 'from_port' : 22 ,
669+ 'to_port' : 22 ,
670+ 'group' : {'name' : self ._security_group .name },
671+ })
672+ arglist = [
673+ '--dst-port' , str (self ._security_group_rule .from_port ),
674+ '--remote-group' , self ._security_group .name ,
675+ self ._security_group .id ,
676+ ]
677+ verifylist = [
678+ ('dst_port' , (self ._security_group_rule .from_port ,
679+ self ._security_group_rule .to_port )),
680+ ('remote_group' , self ._security_group .name ),
681+ ('group' , self ._security_group .id ),
682+ ]
683+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
684+
685+ columns , data = self .cmd .take_action (parsed_args )
686+
687+ self .compute .security_group_rules .create .assert_called_once_with (
688+ self ._security_group .id ,
689+ self ._security_group_rule .ip_protocol ,
690+ self ._security_group_rule .from_port ,
691+ self ._security_group_rule .to_port ,
692+ self ._security_group_rule .ip_range ['cidr' ],
693+ self ._security_group .id ,
694+ )
695+ self .assertEqual (expected_columns , columns )
696+ self .assertEqual (expected_data , data )
697+
591698 def test_create_source_ip (self ):
592699 expected_columns , expected_data = self ._setup_security_group_rule ({
593700 'ip_protocol' : 'icmp' ,
@@ -620,6 +727,38 @@ def test_create_source_ip(self):
620727 self .assertEqual (expected_columns , columns )
621728 self .assertEqual (expected_data , data )
622729
730+ def test_create_remote_ip (self ):
731+ expected_columns , expected_data = self ._setup_security_group_rule ({
732+ 'ip_protocol' : 'icmp' ,
733+ 'from_port' : - 1 ,
734+ 'to_port' : - 1 ,
735+ 'ip_range' : {'cidr' : '10.0.2.0/24' },
736+ })
737+ arglist = [
738+ '--protocol' , self ._security_group_rule .ip_protocol ,
739+ '--remote-ip' , self ._security_group_rule .ip_range ['cidr' ],
740+ self ._security_group .id ,
741+ ]
742+ verifylist = [
743+ ('protocol' , self ._security_group_rule .ip_protocol ),
744+ ('remote_ip' , self ._security_group_rule .ip_range ['cidr' ]),
745+ ('group' , self ._security_group .id ),
746+ ]
747+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
748+
749+ columns , data = self .cmd .take_action (parsed_args )
750+
751+ self .compute .security_group_rules .create .assert_called_once_with (
752+ self ._security_group .id ,
753+ self ._security_group_rule .ip_protocol ,
754+ self ._security_group_rule .from_port ,
755+ self ._security_group_rule .to_port ,
756+ self ._security_group_rule .ip_range ['cidr' ],
757+ None ,
758+ )
759+ self .assertEqual (expected_columns , columns )
760+ self .assertEqual (expected_data , data )
761+
623762 def test_create_proto_option (self ):
624763 expected_columns , expected_data = self ._setup_security_group_rule ({
625764 'ip_protocol' : 'icmp' ,
0 commit comments