mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #16509 from HuKeping/search-problem
Fix docker search problem
This commit is contained in:
commit
b78f66c472
4 changed files with 38 additions and 8 deletions
|
@ -41,12 +41,13 @@ func (cli *DockerCli) CmdSearch(args ...string) error {
|
||||||
|
|
||||||
// Resolve the Repository name from fqn to hostname + name
|
// Resolve the Repository name from fqn to hostname + name
|
||||||
taglessRemote, _ := parsers.ParseRepositoryTag(name)
|
taglessRemote, _ := parsers.ParseRepositoryTag(name)
|
||||||
repoInfo, err := registry.ParseRepositoryInfo(taglessRemote)
|
|
||||||
|
indexInfo, err := registry.ParseIndexInfo(taglessRemote)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
rdr, _, err := cli.clientRequestAttemptLogin("GET", "/images/search?"+v.Encode(), nil, nil, repoInfo.Index, "search")
|
rdr, _, err := cli.clientRequestAttemptLogin("GET", "/images/search?"+v.Encode(), nil, nil, indexInfo, "search")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,3 +89,11 @@ func (s *DockerSuite) TestSearchCmdOptions(c *check.C) {
|
||||||
c.Fatalf("failed to search with stars&automated&no-trunc options on the central registry: %s", out)
|
c.Fatalf("failed to search with stars&automated&no-trunc options on the central registry: %s", out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// search for repos which start with "ubuntu-" on the central registry
|
||||||
|
func (s *DockerSuite) TestSearchOnCentralRegistryWithDash(c *check.C) {
|
||||||
|
testRequires(c, Network, DaemonIsLinux)
|
||||||
|
|
||||||
|
out, exitCode := dockerCmd(c, "search", "ubuntu-")
|
||||||
|
c.Assert(exitCode, check.Equals, 0, check.Commentf("failed to search on the central registry: %s", out))
|
||||||
|
}
|
||||||
|
|
|
@ -300,15 +300,18 @@ func splitReposName(reposName string) (string, string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRepositoryInfo validates and breaks down a repository name into a RepositoryInfo
|
// NewRepositoryInfo validates and breaks down a repository name into a RepositoryInfo
|
||||||
func (config *ServiceConfig) NewRepositoryInfo(reposName string) (*RepositoryInfo, error) {
|
func (config *ServiceConfig) NewRepositoryInfo(reposName string, bySearch bool) (*RepositoryInfo, error) {
|
||||||
if err := validateNoSchema(reposName); err != nil {
|
if err := validateNoSchema(reposName); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
indexName, remoteName := splitReposName(reposName)
|
indexName, remoteName := splitReposName(reposName)
|
||||||
|
|
||||||
|
if !bySearch {
|
||||||
if err := validateRemoteName(remoteName); err != nil {
|
if err := validateRemoteName(remoteName); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
repoInfo := &RepositoryInfo{
|
repoInfo := &RepositoryInfo{
|
||||||
RemoteName: remoteName,
|
RemoteName: remoteName,
|
||||||
|
@ -359,7 +362,18 @@ func (repoInfo *RepositoryInfo) GetSearchTerm() string {
|
||||||
// ParseRepositoryInfo performs the breakdown of a repository name into a RepositoryInfo, but
|
// ParseRepositoryInfo performs the breakdown of a repository name into a RepositoryInfo, but
|
||||||
// lacks registry configuration.
|
// lacks registry configuration.
|
||||||
func ParseRepositoryInfo(reposName string) (*RepositoryInfo, error) {
|
func ParseRepositoryInfo(reposName string) (*RepositoryInfo, error) {
|
||||||
return emptyServiceConfig.NewRepositoryInfo(reposName)
|
return emptyServiceConfig.NewRepositoryInfo(reposName, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseIndexInfo will use repository name to get back an indexInfo.
|
||||||
|
func ParseIndexInfo(reposName string) (*IndexInfo, error) {
|
||||||
|
indexName, _ := splitReposName(reposName)
|
||||||
|
|
||||||
|
indexInfo, err := emptyServiceConfig.NewIndexInfo(indexName)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return indexInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NormalizeLocalName transforms a repository name into a normalize LocalName
|
// NormalizeLocalName transforms a repository name into a normalize LocalName
|
||||||
|
|
|
@ -54,7 +54,8 @@ func (s *Service) Auth(authConfig *cliconfig.AuthConfig) (string, error) {
|
||||||
// Search queries the public registry for images matching the specified
|
// Search queries the public registry for images matching the specified
|
||||||
// search terms, and returns the results.
|
// search terms, and returns the results.
|
||||||
func (s *Service) Search(term string, authConfig *cliconfig.AuthConfig, headers map[string][]string) (*SearchResults, error) {
|
func (s *Service) Search(term string, authConfig *cliconfig.AuthConfig, headers map[string][]string) (*SearchResults, error) {
|
||||||
repoInfo, err := s.ResolveRepository(term)
|
|
||||||
|
repoInfo, err := s.ResolveRepositoryBySearch(term)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -75,7 +76,13 @@ func (s *Service) Search(term string, authConfig *cliconfig.AuthConfig, headers
|
||||||
// ResolveRepository splits a repository name into its components
|
// ResolveRepository splits a repository name into its components
|
||||||
// and configuration of the associated registry.
|
// and configuration of the associated registry.
|
||||||
func (s *Service) ResolveRepository(name string) (*RepositoryInfo, error) {
|
func (s *Service) ResolveRepository(name string) (*RepositoryInfo, error) {
|
||||||
return s.Config.NewRepositoryInfo(name)
|
return s.Config.NewRepositoryInfo(name, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResolveRepositoryBySearch splits a repository name into its components
|
||||||
|
// and configuration of the associated registry.
|
||||||
|
func (s *Service) ResolveRepositoryBySearch(name string) (*RepositoryInfo, error) {
|
||||||
|
return s.Config.NewRepositoryInfo(name, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResolveIndex takes indexName and returns index info
|
// ResolveIndex takes indexName and returns index info
|
||||||
|
|
Loading…
Reference in a new issue