@@ -190,7 +190,7 @@ func (vm *DockerVM) createContainer(ctxt context.Context, client dockerClient,
190
190
191
191
func (vm * DockerVM ) deployImage (client dockerClient , ccid ccintf.CCID ,
192
192
args []string , env []string , reader io.Reader ) error {
193
- id , err := vm .GetVMName (ccid , formatImageName )
193
+ id , err := vm .GetVMNameForDocker (ccid )
194
194
if err != nil {
195
195
return err
196
196
}
@@ -235,7 +235,7 @@ func (vm *DockerVM) Deploy(ctxt context.Context, ccid ccintf.CCID,
235
235
//Start starts a container using a previously created docker image
236
236
func (vm * DockerVM ) Start (ctxt context.Context , ccid ccintf.CCID ,
237
237
args []string , env []string , filesToUpload map [string ][]byte , builder container.Builder ) error {
238
- imageName , err := vm .GetVMName (ccid , formatImageName )
238
+ imageName , err := vm .GetVMNameForDocker (ccid )
239
239
if err != nil {
240
240
return err
241
241
}
@@ -246,10 +246,7 @@ func (vm *DockerVM) Start(ctxt context.Context, ccid ccintf.CCID,
246
246
return err
247
247
}
248
248
249
- containerName , err := vm .GetVMName (ccid , nil )
250
- if err != nil {
251
- return err
252
- }
249
+ containerName := vm .GetVMName (ccid )
253
250
254
251
attachStdout := viper .GetBool ("vm.docker.attachStdout" )
255
252
@@ -405,10 +402,7 @@ func (vm *DockerVM) Start(ctxt context.Context, ccid ccintf.CCID,
405
402
406
403
//Stop stops a running chaincode
407
404
func (vm * DockerVM ) Stop (ctxt context.Context , ccid ccintf.CCID , timeout uint , dontkill bool , dontremove bool ) error {
408
- id , err := vm .GetVMName (ccid , nil )
409
- if err != nil {
410
- return err
411
- }
405
+ id := vm .GetVMName (ccid )
412
406
413
407
client , err := vm .getClientFnc ()
414
408
if err != nil {
@@ -451,7 +445,7 @@ func (vm *DockerVM) stopInternal(ctxt context.Context, client dockerClient,
451
445
452
446
//Destroy destroys an image
453
447
func (vm * DockerVM ) Destroy (ctxt context.Context , ccid ccintf.CCID , force bool , noprune bool ) error {
454
- id , err := vm .GetVMName (ccid , formatImageName )
448
+ id , err := vm .GetVMNameForDocker (ccid )
455
449
if err != nil {
456
450
return err
457
451
}
@@ -477,41 +471,22 @@ func (vm *DockerVM) Destroy(ctxt context.Context, ccid ccintf.CCID, force bool,
477
471
// GetVMName generates the VM name from peer information. It accepts a format
478
472
// function parameter to allow different formatting based on the desired use of
479
473
// the name.
480
- func (vm * DockerVM ) GetVMName (ccid ccintf.CCID , format func (string ) (string , error )) (string , error ) {
481
- name := ccid .GetName ()
482
-
483
- if vm .NetworkID != "" && vm .PeerID != "" {
484
- name = fmt .Sprintf ("%s-%s-%s" , vm .NetworkID , vm .PeerID , name )
485
- } else if vm .NetworkID != "" {
486
- name = fmt .Sprintf ("%s-%s" , vm .NetworkID , name )
487
- } else if vm .PeerID != "" {
488
- name = fmt .Sprintf ("%s-%s" , vm .PeerID , name )
489
- }
490
-
491
- if format != nil {
492
- formattedName , err := format (name )
493
- if err != nil {
494
- return formattedName , err
495
- }
496
- name = formattedName
497
- }
498
-
474
+ func (vm * DockerVM ) GetVMName (ccid ccintf.CCID ) string {
499
475
// replace any invalid characters with "-" (either in network id, peer id, or in the
500
476
// entire name returned by any format function)
501
- name = vmRegExp .ReplaceAllString (name , "-" )
502
-
503
- return name , nil
477
+ return vmRegExp .ReplaceAllString (vm .preFormatImageName (ccid ), "-" )
504
478
}
505
479
506
- // formatImageName formats the docker image from peer information. This is
480
+ // GetVMNameForDocker formats the docker image from peer information. This is
507
481
// needed to keep image (repository) names unique in a single host, multi-peer
508
482
// environment (such as a development environment). It computes the hash for the
509
483
// supplied image name and then appends it to the lowercase image name to ensure
510
484
// uniqueness.
511
- func formatImageName (name string ) (string , error ) {
485
+ func (vm * DockerVM ) GetVMNameForDocker (ccid ccintf.CCID ) (string , error ) {
486
+ name := vm .preFormatImageName (ccid )
512
487
hash := hex .EncodeToString (util .ComputeSHA256 ([]byte (name )))
513
- name = vmRegExp .ReplaceAllString (name , "-" )
514
- imageName := strings .ToLower (fmt .Sprintf ("%s-%s" , name , hash ))
488
+ saniName : = vmRegExp .ReplaceAllString (name , "-" )
489
+ imageName := strings .ToLower (fmt .Sprintf ("%s-%s" , saniName , hash ))
515
490
516
491
// Check that name complies with Docker's repository naming rules
517
492
if ! imageRegExp .MatchString (imageName ) {
@@ -521,3 +496,17 @@ func formatImageName(name string) (string, error) {
521
496
522
497
return imageName , nil
523
498
}
499
+
500
+ func (vm * DockerVM ) preFormatImageName (ccid ccintf.CCID ) string {
501
+ name := ccid .GetName ()
502
+
503
+ if vm .NetworkID != "" && vm .PeerID != "" {
504
+ name = fmt .Sprintf ("%s-%s-%s" , vm .NetworkID , vm .PeerID , name )
505
+ } else if vm .NetworkID != "" {
506
+ name = fmt .Sprintf ("%s-%s" , vm .NetworkID , name )
507
+ } else if vm .PeerID != "" {
508
+ name = fmt .Sprintf ("%s-%s" , vm .PeerID , name )
509
+ }
510
+
511
+ return name
512
+ }
0 commit comments