mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +00:00 
			
		
		
		
	scripts: json script to create a cx for every station
This commit is contained in:
		
							
								
								
									
										189
									
								
								json/cx_test_allsta.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										189
									
								
								json/cx_test_allsta.pl
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,189 @@ | |||||||
|  | #!/usr/bin/perl -w | ||||||
|  | use strict; | ||||||
|  | use warnings; | ||||||
|  | use diagnostics; | ||||||
|  | use Carp; | ||||||
|  | $SIG{ __DIE__  } = sub { Carp::confess( @_ ) }; | ||||||
|  | $SIG{ __WARN__ } = sub { Carp::confess( @_ ) }; | ||||||
|  |  | ||||||
|  | # Un-buffer output | ||||||
|  | $| = 1; | ||||||
|  | use Getopt::Long; | ||||||
|  | use JSON::XS; | ||||||
|  | use HTTP::Request; | ||||||
|  | use LWP; | ||||||
|  | use LWP::UserAgent; | ||||||
|  | use Data::Dumper; | ||||||
|  | use JSON; | ||||||
|  | use lib '/home/lanforge/scripts'; | ||||||
|  | use LANforge::JsonUtils qw(logg err json_request get_links_from get_thru json_post get_port_names); | ||||||
|  |  | ||||||
|  | package main; | ||||||
|  | # Default values for ye ole cmd-line args. | ||||||
|  | our $Resource  = 1; | ||||||
|  | our $quiet     = "yes"; | ||||||
|  | our $Host      = "localhost"; | ||||||
|  | our $Port      = 8080; | ||||||
|  | our $HostUri   = "http://$Host:$Port"; | ||||||
|  | our $Web       = LWP::UserAgent->new; | ||||||
|  | our $Decoder   = JSON->new->utf8; | ||||||
|  | our $ssid; | ||||||
|  | our $security; | ||||||
|  | our $passphrase; | ||||||
|  |  | ||||||
|  | my $usage = qq("$0 --host {ip or hostname} # connect to this | ||||||
|  |    --port {port number} # defaults to 8080 | ||||||
|  | ); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## | ||||||
|  | ##    M A I N | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | GetOptions | ||||||
|  | ( | ||||||
|  |   'host=s'        => \$::Host, | ||||||
|  |   'port=i'        => \$::Port | ||||||
|  | ) || (print($usage) && exit(1)); | ||||||
|  |  | ||||||
|  | $::HostUri = "http://$Host:$Port"; | ||||||
|  |  | ||||||
|  | my $uri = "/shelf/1"; | ||||||
|  | my $rh = json_request($uri); | ||||||
|  | my $ra_links = get_links_from($rh, 'resources'); | ||||||
|  | my @links2= (); | ||||||
|  | my $ra_alias_links = []; | ||||||
|  | # TODO: make this a JsonUtils::list_ports() | ||||||
|  | for $uri (@$ra_links) { | ||||||
|  |    $uri =~ s{/resource}{/port}g; | ||||||
|  |    $uri .= "/list"; | ||||||
|  |    #logg("requesting $uri"); | ||||||
|  |    $rh = json_request($uri); | ||||||
|  |    #print Dumper($rh); | ||||||
|  |    push( @$ra_alias_links, @{get_port_names($rh, 'interfaces')}); | ||||||
|  |    push(@links2, @{get_links_from($rh, 'interfaces')}); | ||||||
|  |    #logg("\nfound: "); | ||||||
|  |    #logg(@links2); | ||||||
|  | } | ||||||
|  | #print Dumper($ra_alias_links); | ||||||
|  |  | ||||||
|  | my $rh_existing_cx = json_request("/cx/list"); | ||||||
|  | #print Dumper($rh_existing_cx); | ||||||
|  |  | ||||||
|  | my $rh_existing_cxnames = {}; | ||||||
|  | for my $eid (keys %$rh_existing_cx) { | ||||||
|  |    next if ($eid !~ /^\d+\.\d+$/); | ||||||
|  |    print "=================================================================================\n"; | ||||||
|  |    print Dumper($rh_existing_cx->{$eid}); | ||||||
|  |    print "=================================================================================\n"; | ||||||
|  |    my $rh_cx = $rh_existing_cx->{$eid}; | ||||||
|  |    print Dumper($rh_cx); | ||||||
|  |    print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==\n"; | ||||||
|  |    my $cx_n = $rh_cx->{'name'}; | ||||||
|  |    print " $cx_n \n"; | ||||||
|  |    $rh_existing_cxnames->{$cx_n} = $rh_cx; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # assume resource 1, eth1 is present, and create an endpoint to it | ||||||
|  | # -A and -B are expected convention for endpoint names | ||||||
|  | my $i=999; | ||||||
|  | for my $rh_alias_link (@$ra_alias_links) { | ||||||
|  |  | ||||||
|  |    $i+=1; | ||||||
|  |  | ||||||
|  |    if (defined ($rh_existing_cxnames->{"udp_$i"})) { | ||||||
|  |       print " udp_$i already exists "; | ||||||
|  |       next; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    my $resourceB_uri = $rh_alias_link->{'uri'}; | ||||||
|  |    my ($resourceB) = $resourceB_uri =~ m{/port/1/(\d+)/}; | ||||||
|  |  | ||||||
|  |    if ($rh_alias_link->{'alias'} !~ /^sta/) { | ||||||
|  |       print " skipping $rh_alias_link->{'alias'} "; | ||||||
|  |       next; | ||||||
|  |    } | ||||||
|  |    my $rh_endp_A = { | ||||||
|  |       'alias'           => "udp_$i-A", | ||||||
|  |       'shelf'           => 1, | ||||||
|  |       'resource'        => 1, | ||||||
|  |       'port'            => 'b1000', # or eth1 | ||||||
|  |       'type'            => 'lf_udp', | ||||||
|  |       'ip_port'         => -1, | ||||||
|  |       'is_rate_bursty'  => 'NO', | ||||||
|  |       'min_rate'        => 1000000, | ||||||
|  |       'min_pkt'         => -1, | ||||||
|  |       'max_pkt'         => -1, | ||||||
|  |       'payload_pattern' => 'increasing', | ||||||
|  |       'multi_conn'      => 0 | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/add_endp", $rh_endp_A); | ||||||
|  |  | ||||||
|  |    print Dumper($rh_alias_link); | ||||||
|  |    my $rh_endp_B = { | ||||||
|  |       'alias'           => "udp_$i-B", | ||||||
|  |       'shelf'           => 1, | ||||||
|  |       'resource'        => $resourceB, | ||||||
|  |       'port'            => $rh_alias_link->{'alias'}, | ||||||
|  |       'type'            => 'lf_udp', | ||||||
|  |       'ip_port'         => -1, | ||||||
|  |       'is_rate_bursty'  => 'NO', | ||||||
|  |       'min_rate'        => 12800, | ||||||
|  |       'min_pkt'         => -1, | ||||||
|  |       'max_pkt'         => -1, | ||||||
|  |       'payload_pattern' => 'increasing', | ||||||
|  |       'multi_conn'      => 0 | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/add_endp", $rh_endp_B); | ||||||
|  |  | ||||||
|  |    my $rh_cx ={ | ||||||
|  |       'alias'     => "udp_$i", | ||||||
|  |       'test_mgr'  => 'default_tm', | ||||||
|  |       'tx_endp'   => "udp_$i-A", | ||||||
|  |       'rx_endp'   => "udp_$i-B" | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/add_cx", $rh_cx); | ||||||
|  |  | ||||||
|  |    $rh_cx = { | ||||||
|  |       'test_mgr'  => 'default_tm', | ||||||
|  |       'cx_name'   => "udp_$i", | ||||||
|  |       'milliseconds'=> 1000, | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/set_cx_report_timer", $rh_cx); | ||||||
|  |  | ||||||
|  | } | ||||||
|  | sleep (1); | ||||||
|  | $rh_existing_cx = json_request("/cx/list"); | ||||||
|  |  | ||||||
|  | for my $eid (keys %$rh_existing_cx) { | ||||||
|  |    next if ($eid !~ /\d+\.\d+/); | ||||||
|  |    my $rh_cx = $rh_existing_cx->{$eid}; | ||||||
|  |    my $cx_name = $rh_cx->{'name'}; | ||||||
|  |    next if ($cx_name !~ /^udp_/); | ||||||
|  |  | ||||||
|  |    print "run $cx_name "; | ||||||
|  |    my $set_state = { | ||||||
|  |       'test_mgr'  => 'default_tm', | ||||||
|  |       'cx_name'   => $cx_name, | ||||||
|  |       'cx_state'  => 'RUNNING' | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/set_cx_state", $set_state); | ||||||
|  | } | ||||||
|  | print "\nLetting things run..."; | ||||||
|  | sleep(2); | ||||||
|  | print "shutting them down..."; | ||||||
|  |  | ||||||
|  | for my $eid (keys %$rh_existing_cx) { | ||||||
|  |    next if ($eid !~ /\d+\.\d+/); | ||||||
|  |    my $rh_cx = $rh_existing_cx->{$eid}; | ||||||
|  |    my $cx_name = $rh_cx->{'name'}; | ||||||
|  |    next if ($cx_name !~ /^udp_/); | ||||||
|  |    print "q $cx_name "; | ||||||
|  |    my $set_state = { | ||||||
|  |       'test_mgr'  => 'default_tm', | ||||||
|  |       'cx_name'   => $cx_name, | ||||||
|  |       'cx_state'  => 'QUIESCE' | ||||||
|  |    }; | ||||||
|  |    json_post("/cli-json/set_cx_state", $set_state); | ||||||
|  | } | ||||||
|  | # | ||||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds