src/server/pkg/deploy/assets/assets.go
func WriteAssets(encoder Encoder, opts *AssetOpts, objectStoreBackend backend,
	persistentDiskBackend backend, volumeSize int,
	hostPath string) error {
	// If either backend is "local", both must be "local"
	if (persistentDiskBackend == localBackend || objectStoreBackend == localBackend) &&
		persistentDiskBackend != objectStoreBackend {
		return fmt.Errorf("if either persistentDiskBackend or objectStoreBackend "+
			"is \"local\", both must be \"local\", but persistentDiskBackend==%d, \n"+
			"and objectStoreBackend==%d", persistentDiskBackend, objectStoreBackend)
	}
	fillDefaultResourceRequests(opts, persistentDiskBackend)
	if opts.DashOnly {
		if dashErr := WriteDashboardAssets(encoder, opts); dashErr != nil {
			return dashErr
		}
		return nil
	}

	if err := encoder.Encode(ServiceAccount(opts)); err != nil {
		return err
	}
	if !opts.NoRBAC {
		if opts.LocalRoles {
			if err := encoder.Encode(Role(opts)); err != nil {
				return err
			}
			if err := encoder.Encode(RoleBinding(opts)); err != nil {
				return err
			}
		} else {
			if err := encoder.Encode(ClusterRole(opts)); err != nil {
				return err
			}
			if err := encoder.Encode(ClusterRoleBinding(opts)); err != nil {
				return err
			}
		}
	}

	if opts.EtcdNodes > 0 && opts.EtcdVolume != "" {
		return fmt.Errorf("only one of --dynamic-etcd-nodes and --static-etcd-volume should be given, but not both")
	}

	// In the dynamic route, we create a storage class which dynamically
	// provisions volumes, and run etcd as a statful set.
	// In the static route, we create a single volume, a single volume
	// claim, and run etcd as a replication controller with a single node.
	if objectStoreBackend == localBackend {
		if err := encoder.Encode(EtcdDeployment(opts, hostPath)); err != nil {
			return err
		}
	} else if opts.EtcdNodes > 0 {
		// Create a StorageClass, if the user didn't provide one.
		if opts.EtcdStorageClassName == "" {
			sc, err := EtcdStorageClass(opts, persistentDiskBackend)
			if err != nil {
				return err
			}
			if sc != nil {
				if err = encoder.Encode(sc); err != nil {
					return err
				}
			}
		}
		if err := encoder.Encode(EtcdHeadlessService(opts)); err != nil {
			return err
		}
		if err := encoder.Encode(EtcdStatefulSet(opts, persistentDiskBackend, volumeSize)); err != nil {
			return err
		}
	} else if opts.EtcdVolume != "" || persistentDiskBackend == localBackend {
		volume, err := EtcdVolume(persistentDiskBackend, opts, hostPath, opts.EtcdVolume, volumeSize)
		if err != nil {
			return err
		}
		if err = encoder.Encode(volume); err != nil {
			return err
		}
		if err = encoder.Encode(EtcdVolumeClaim(volumeSize, opts)); err != nil {
			return err
		}
		if err = encoder.Encode(EtcdDeployment(opts, "")); err != nil {
			return err
		}
	} else {
		return fmt.Errorf("unless deploying locally, either --dynamic-etcd-nodes or --static-etcd-volume needs to be provided")
	}
	if err := encoder.Encode(EtcdNodePortService(objectStoreBackend == localBackend, opts)); err != nil {
		return err
	}

	if err := encoder.Encode(PachdService(opts)); err != nil {
		return err
	}
	if err := encoder.Encode(PachdDeployment(opts, objectStoreBackend, hostPath)); err != nil {
		return err
	}
	if !opts.NoDash {
		if err := WriteDashboardAssets(encoder, opts); err != nil {
			return err
		}
	}
	if opts.TLS != nil {
		if err := WriteTLSSecret(encoder, opts); err != nil {
			return err
		}
	}
	return nil
}
func WriteAssets(encoder Encoder, opts *AssetOpts, objectStoreBackend backend,
	persistentDiskBackend backend, volumeSize int,
	hostPath string) error {
	// If either backend is "local", both must be "local"
	if (persistentDiskBackend == localBackend || objectStoreBackend == localBackend) &&
		persistentDiskBackend != objectStoreBackend {
		return fmt.Errorf("if either persistentDiskBackend or objectStoreBackend "+
			"is \"local\", both must be \"local\", but persistentDiskBackend==%d, \n"+
			"and objectStoreBackend==%d", persistentDiskBackend, objectStoreBackend)
	}
	fillDefaultResourceRequests(opts, persistentDiskBackend)
	if opts.DashOnly {
		if dashErr := WriteDashboardAssets(encoder, opts); dashErr != nil {
			return dashErr
		}
		return nil
	}

	if err := encoder.Encode(ServiceAccount(opts)); err != nil {
		return err
	}
	if !opts.NoRBAC {
		if opts.LocalRoles {
			if err := encoder.Encode(Role(opts)); err != nil {
				return err
			}
			if err := encoder.Encode(RoleBinding(opts)); err != nil {
				return err
			}
		} else {
			if err := encoder.Encode(ClusterRole(opts)); err != nil {
				return err
			}
			if err := encoder.Encode(ClusterRoleBinding(opts)); err != nil {
				return err
			}
		}
	}

	if opts.EtcdNodes > 0 && opts.EtcdVolume != "" {
		return fmt.Errorf("only one of --dynamic-etcd-nodes and --static-etcd-volume should be given, but not both")
	}

	// In the dynamic route, we create a storage class which dynamically
	// provisions volumes, and run etcd as a statful set.
	// In the static route, we create a single volume, a single volume
	// claim, and run etcd as a replication controller with a single node.
	if objectStoreBackend == localBackend {
		if err := encoder.Encode(EtcdDeployment(opts, hostPath)); err != nil {
			return err
		}
	} else if opts.EtcdNodes > 0 {
		// Create a StorageClass, if the user didn't provide one.
		if opts.EtcdStorageClassName == "" {
			sc, err := EtcdStorageClass(opts, persistentDiskBackend)
			if err != nil {
				return err
			}
			if sc != nil {
				if err = encoder.Encode(sc); err != nil {
					return err
				}
			}
		}
		if err := encoder.Encode(EtcdHeadlessService(opts)); err != nil {
			return err
		}
		if err := encoder.Encode(EtcdStatefulSet(opts, persistentDiskBackend, volumeSize)); err != nil {
			return err
		}
	} else if opts.EtcdVolume != "" || persistentDiskBackend == localBackend {
		volume, err := EtcdVolume(persistentDiskBackend, opts, hostPath, opts.EtcdVolume, volumeSize)
		if err != nil {
			return err
		}
		if err = encoder.Encode(volume); err != nil {
			return err
		}
		if err = encoder.Encode(EtcdVolumeClaim(volumeSize, opts)); err != nil {
			return err
		}
		if err = encoder.Encode(EtcdDeployment(opts, "")); err != nil {
			return err
		}
	} else {
		return fmt.Errorf("unless deploying locally, either --dynamic-etcd-nodes or --static-etcd-volume needs to be provided")
	}
	if err := encoder.Encode(EtcdNodePortService(objectStoreBackend == localBackend, opts)); err != nil {
		return err
	}

	if err := encoder.Encode(PachdService(opts)); err != nil {
		return err
	}
	if err := encoder.Encode(PachdDeployment(opts, objectStoreBackend, hostPath)); err != nil {
		return err
	}
	if !opts.NoDash {
		if err := WriteDashboardAssets(encoder, opts); err != nil {
			return err
		}
	}
	if opts.TLS != nil {
		if err := WriteTLSSecret(encoder, opts); err != nil {
			return err
		}
	}
	return nil
}
func WriteAssets ( encoder Encoder , opts * AssetOpts , objectStoreBackend backend , persistentDiskBackend backend , volumeSize int , hostPath string ) error { // If either backend is "local", both must be "local" if ( persistentDiskBackend == localBackend || objectStoreBackend == localBackend ) && persistentDiskBackend != objectStoreBackend { return fmt . Errorf ( " " + " \" \" \" \" \n " + " " , persistentDiskBackend , objectStoreBackend ) } fillDefaultResourceRequests ( opts , persistentDiskBackend ) if opts . DashOnly { if dashErr := WriteDashboardAssets ( encoder , opts ) ; dashErr != nil { return dashErr } return nil } if err := encoder . Encode ( ServiceAccount ( opts ) ) ; err != nil { return err } if ! opts . NoRBAC { if opts . LocalRoles { if err := encoder . Encode ( Role ( opts ) ) ; err != nil { return err } if err := encoder . Encode ( RoleBinding ( opts ) ) ; err != nil { return err } } else { if err := encoder . Encode ( ClusterRole ( opts ) ) ; err != nil { return err } if err := encoder . Encode ( ClusterRoleBinding ( opts ) ) ; err != nil { return err } } } if opts . EtcdNodes > 0 && opts . EtcdVolume != " " { return fmt . Errorf ( " " ) } // In the dynamic route, we create a storage class which dynamically // provisions volumes, and run etcd as a statful set. // In the static route, we create a single volume, a single volume // claim, and run etcd as a replication controller with a single node. if objectStoreBackend == localBackend { if err := encoder . Encode ( EtcdDeployment ( opts , hostPath ) ) ; err != nil { return err } } else if opts . EtcdNodes > 0 { // Create a StorageClass, if the user didn't provide one. if opts . EtcdStorageClassName == " " { sc , err := EtcdStorageClass ( opts , persistentDiskBackend ) if err != nil { return err } if sc != nil { if err = encoder . Encode ( sc ) ; err != nil { return err } } } if err := encoder . Encode ( EtcdHeadlessService ( opts ) ) ; err != nil { return err } if err := encoder . Encode ( EtcdStatefulSet ( opts , persistentDiskBackend , volumeSize ) ) ; err != nil { return err } } else if opts . EtcdVolume != " " || persistentDiskBackend == localBackend { volume , err := EtcdVolume ( persistentDiskBackend , opts , hostPath , opts . EtcdVolume , volumeSize ) if err != nil { return err } if err = encoder . Encode ( volume ) ; err != nil { return err } if err = encoder . Encode ( EtcdVolumeClaim ( volumeSize , opts ) ) ; err != nil { return err } if err = encoder . Encode ( EtcdDeployment ( opts , " " ) ) ; err != nil { return err } } else { return fmt . Errorf ( " " ) } if err := encoder . Encode ( EtcdNodePortService ( objectStoreBackend == localBackend , opts ) ) ; err != nil { return err } if err := encoder . Encode ( PachdService ( opts ) ) ; err != nil { return err } if err := encoder . Encode ( PachdDeployment ( opts , objectStoreBackend , hostPath ) ) ; err != nil { return err } if ! opts . NoDash { if err := WriteDashboardAssets ( encoder , opts ) ; err != nil { return err } } if opts . TLS != nil { if err := WriteTLSSecret ( encoder , opts ) ; err != nil { return err } } return nil }
// WriteAssets writes the assets to encoder.
WriteAssets writes the assets to encoder .