3535//! PathBuf::from("fixtures/testing_rsa.pub"),
3636//! ssh_username,
3737//! );
38- //! let environment = Environment::new(env_name, ssh_credentials);
38+ //! let environment = Environment::new(env_name, ssh_credentials, 22 );
3939//!
4040//! // Environment automatically generates paths
4141//! assert_eq!(*environment.data_dir(), PathBuf::from("data/e2e-config"));
@@ -120,6 +120,9 @@ pub struct Environment<S = Created> {
120120 /// SSH credentials for connecting to instances in this environment
121121 ssh_credentials : SshCredentials ,
122122
123+ /// SSH port for connecting to instances in this environment
124+ ssh_port : u16 ,
125+
123126 /// Build directory for this environment (auto-generated)
124127 build_dir : PathBuf ,
125128
@@ -144,6 +147,7 @@ impl Environment {
144147 ///
145148 /// * `name` - The validated environment name
146149 /// * `ssh_credentials` - SSH credentials for connecting to instances
150+ /// * `ssh_port` - SSH port for connecting to instances
147151 ///
148152 /// # Returns
149153 ///
@@ -164,7 +168,8 @@ impl Environment {
164168 /// PathBuf::from("keys/prod_rsa.pub"),
165169 /// ssh_username,
166170 /// );
167- /// let environment = Environment::new(env_name, ssh_credentials);
171+ /// let ssh_port = 22;
172+ /// let environment = Environment::new(env_name, ssh_credentials, ssh_port);
168173 ///
169174 /// assert_eq!(environment.instance_name().as_str(), "torrust-tracker-vm-production");
170175 /// assert_eq!(*environment.data_dir(), PathBuf::from("data/production"));
@@ -178,7 +183,11 @@ impl Environment {
178183 /// This function does not panic. All instance name generation is guaranteed
179184 /// to succeed for valid environment names.
180185 #[ must_use]
181- pub fn new ( name : EnvironmentName , ssh_credentials : SshCredentials ) -> Environment < Created > {
186+ pub fn new (
187+ name : EnvironmentName ,
188+ ssh_credentials : SshCredentials ,
189+ ssh_port : u16 ,
190+ ) -> Environment < Created > {
182191 let env_str = name. as_str ( ) ;
183192
184193 // Generate instance name: torrust-tracker-vm-{env_name}
@@ -200,6 +209,7 @@ impl Environment {
200209 instance_name,
201210 profile_name,
202211 ssh_credentials,
212+ ssh_port,
203213 build_dir,
204214 data_dir,
205215 instance_ip : None ,
@@ -245,6 +255,7 @@ impl<S> Environment<S> {
245255 instance_name : self . instance_name ,
246256 profile_name : self . profile_name ,
247257 ssh_credentials : self . ssh_credentials ,
258+ ssh_port : self . ssh_port ,
248259 build_dir : self . build_dir ,
249260 data_dir : self . data_dir ,
250261 instance_ip : self . instance_ip ,
@@ -298,6 +309,12 @@ impl<S> Environment<S> {
298309 & self . ssh_credentials
299310 }
300311
312+ /// Returns the SSH port for this environment
313+ #[ must_use]
314+ pub fn ssh_port ( & self ) -> u16 {
315+ self . ssh_port
316+ }
317+
301318 /// Returns the SSH username for this environment
302319 #[ must_use]
303320 pub fn ssh_username ( & self ) -> & Username {
@@ -353,7 +370,7 @@ impl<S> Environment<S> {
353370 /// PathBuf::from("keys/test_rsa.pub"),
354371 /// ssh_username,
355372 /// );
356- /// let environment = Environment::new(env_name, ssh_credentials);
373+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
357374 ///
358375 /// // Before provisioning
359376 /// assert_eq!(environment.instance_ip(), None);
@@ -398,7 +415,7 @@ impl<S> Environment<S> {
398415 /// PathBuf::from("keys/prod_rsa.pub"),
399416 /// ssh_username,
400417 /// );
401- /// let environment = Environment::new(env_name, ssh_credentials);
418+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
402419 ///
403420 /// // Set IP after provisioning
404421 /// let ip = IpAddr::V4(Ipv4Addr::new(10, 0, 0, 42));
@@ -433,7 +450,7 @@ impl<S> Environment<S> {
433450 /// PathBuf::from("keys/staging_rsa.pub"),
434451 /// ssh_username,
435452 /// );
436- /// let environment = Environment::new(env_name, ssh_credentials);
453+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
437454 ///
438455 /// assert_eq!(
439456 /// environment.templates_dir(),
@@ -466,7 +483,7 @@ impl<S> Environment<S> {
466483 /// PathBuf::from("keys/prod_rsa.pub"),
467484 /// ssh_username,
468485 /// );
469- /// let environment = Environment::new(env_name, ssh_credentials);
486+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
470487 ///
471488 /// assert_eq!(
472489 /// environment.traces_dir(),
@@ -496,7 +513,7 @@ impl<S> Environment<S> {
496513 /// PathBuf::from("keys/dev_rsa.pub"),
497514 /// ssh_username,
498515 /// );
499- /// let environment = Environment::new(env_name, ssh_credentials);
516+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
500517 ///
501518 /// assert_eq!(
502519 /// environment.ansible_build_dir(),
@@ -526,7 +543,7 @@ impl<S> Environment<S> {
526543 /// PathBuf::from("keys/test_rsa.pub"),
527544 /// ssh_username,
528545 /// );
529- /// let environment = Environment::new(env_name, ssh_credentials);
546+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
530547 ///
531548 /// assert_eq!(
532549 /// environment.tofu_build_dir(),
@@ -556,7 +573,7 @@ impl<S> Environment<S> {
556573 /// PathBuf::from("keys/integration_rsa.pub"),
557574 /// ssh_username,
558575 /// );
559- /// let environment = Environment::new(env_name, ssh_credentials);
576+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
560577 ///
561578 /// assert_eq!(
562579 /// environment.ansible_templates_dir(),
@@ -586,7 +603,7 @@ impl<S> Environment<S> {
586603 /// PathBuf::from("keys/load-test-rsa.pub"),
587604 /// ssh_username,
588605 /// );
589- /// let environment = Environment::new(env_name, ssh_credentials);
606+ /// let environment = Environment::new(env_name, ssh_credentials, 22 );
590607 ///
591608 /// assert_eq!(
592609 /// environment.tofu_templates_dir(),
@@ -688,7 +705,9 @@ mod tests {
688705 ssh_username,
689706 ) ;
690707
691- Environment :: new ( env_name, ssh_credentials)
708+ let ssh_port = 22 ;
709+
710+ Environment :: new ( env_name, ssh_credentials, ssh_port)
692711 }
693712
694713 /// Builds an Environment and returns the `TempDir`
@@ -707,7 +726,8 @@ mod tests {
707726 ssh_username,
708727 ) ;
709728
710- let environment = Environment :: new ( env_name, ssh_credentials) ;
729+ let ssh_port = 22 ;
730+ let environment = Environment :: new ( env_name, ssh_credentials, ssh_port) ;
711731 ( environment, self . temp_dir )
712732 }
713733
@@ -737,6 +757,7 @@ mod tests {
737757 instance_name,
738758 profile_name,
739759 ssh_credentials,
760+ ssh_port : 22 ,
740761 data_dir : data_dir. clone ( ) ,
741762 build_dir : build_dir. clone ( ) ,
742763 instance_ip : None ,
0 commit comments