worker/server: add file resolver job
Add a file resolver job to the worker server in order for us to resolve the contents of a remote file.
This commit is contained in:
parent
98d611d34f
commit
c056db4811
2 changed files with 61 additions and 1 deletions
|
|
@ -89,6 +89,18 @@ func (j *OSBuildJobResult) TargetResultsByName(name target.TargetName) []*target
|
||||||
return targetResults
|
return targetResults
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (j *FileResolveJobResult) ResolutionErrors() []*clienterrors.Error {
|
||||||
|
resolutionErrors := []*clienterrors.Error{}
|
||||||
|
|
||||||
|
for _, result := range j.Results {
|
||||||
|
if result.ResolutionError != nil {
|
||||||
|
resolutionErrors = append(resolutionErrors, result.ResolutionError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolutionErrors
|
||||||
|
}
|
||||||
|
|
||||||
type KojiInitJob struct {
|
type KojiInitJob struct {
|
||||||
Server string `json:"server"`
|
Server string `json:"server"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
|
@ -256,6 +268,22 @@ type ContainerResolveJobResult struct {
|
||||||
JobResult
|
JobResult
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type FileResolveJob struct {
|
||||||
|
URLs []string `json:"urls"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FileResolveJobResultItem struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
Content []byte `json:"content"`
|
||||||
|
ResolutionError *clienterrors.Error `json:"target_error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FileResolveJobResult struct {
|
||||||
|
Success bool `json:"success"`
|
||||||
|
Results []FileResolveJobResultItem `json:"results"`
|
||||||
|
JobResult
|
||||||
|
}
|
||||||
|
|
||||||
type OSTreeResolveSpec struct {
|
type OSTreeResolveSpec struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Ref string `json:"ref"`
|
Ref string `json:"ref"`
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ const (
|
||||||
JobTypeDepsolve string = "depsolve"
|
JobTypeDepsolve string = "depsolve"
|
||||||
JobTypeManifestIDOnly string = "manifest-id-only"
|
JobTypeManifestIDOnly string = "manifest-id-only"
|
||||||
JobTypeContainerResolve string = "container-resolve"
|
JobTypeContainerResolve string = "container-resolve"
|
||||||
|
JobTypeFileResolve string = "file-resolve"
|
||||||
JobTypeOSTreeResolve string = "ostree-resolve"
|
JobTypeOSTreeResolve string = "ostree-resolve"
|
||||||
JobTypeAWSEC2Copy string = "aws-ec2-copy"
|
JobTypeAWSEC2Copy string = "aws-ec2-copy"
|
||||||
JobTypeAWSEC2Share string = "aws-ec2-share"
|
JobTypeAWSEC2Share string = "aws-ec2-share"
|
||||||
|
|
@ -167,6 +168,10 @@ func (s *Server) EnqueueContainerResolveJob(job *ContainerResolveJob, channel st
|
||||||
return s.enqueue(JobTypeContainerResolve, job, nil, channel)
|
return s.enqueue(JobTypeContainerResolve, job, nil, channel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) EnqueueFileResolveJob(job *FileResolveJob, channel string) (uuid.UUID, error) {
|
||||||
|
return s.enqueue(JobTypeFileResolve, job, nil, channel)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) EnqueueOSTreeResolveJob(job *OSTreeResolveJob, channel string) (uuid.UUID, error) {
|
func (s *Server) EnqueueOSTreeResolveJob(job *OSTreeResolveJob, channel string) (uuid.UUID, error) {
|
||||||
return s.enqueue(JobTypeOSTreeResolve, job, nil, channel)
|
return s.enqueue(JobTypeOSTreeResolve, job, nil, channel)
|
||||||
}
|
}
|
||||||
|
|
@ -242,6 +247,13 @@ func (s *Server) JobDependencyChainErrors(id uuid.UUID) (*clienterrors.Error, er
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
jobResult = &containerResolveJR.JobResult
|
jobResult = &containerResolveJR.JobResult
|
||||||
|
case JobTypeFileResolve:
|
||||||
|
var fileResolveJR FileResolveJobResult
|
||||||
|
jobInfo, err = s.FileResolveJobInfo(id, &fileResolveJR)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
jobResult = &fileResolveJR.JobResult
|
||||||
case JobTypeOSTreeResolve:
|
case JobTypeOSTreeResolve:
|
||||||
var ostreeResolveJR OSTreeResolveJobResult
|
var ostreeResolveJR OSTreeResolveJobResult
|
||||||
jobInfo, err = s.OSTreeResolveJobInfo(id, &ostreeResolveJR)
|
jobInfo, err = s.OSTreeResolveJobInfo(id, &ostreeResolveJR)
|
||||||
|
|
@ -388,6 +400,20 @@ func (s *Server) ContainerResolveJobInfo(id uuid.UUID, result *ContainerResolveJ
|
||||||
return jobInfo, nil
|
return jobInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) FileResolveJobInfo(id uuid.UUID, result *FileResolveJobResult) (*JobInfo, error) {
|
||||||
|
jobInfo, err := s.jobInfo(id, result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if jobInfo.JobType != JobTypeFileResolve {
|
||||||
|
return nil, fmt.Errorf("expected %q, found %q job instead", JobTypeFileResolve, jobInfo.JobType)
|
||||||
|
}
|
||||||
|
|
||||||
|
return jobInfo, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) OSTreeResolveJobInfo(id uuid.UUID, result *OSTreeResolveJobResult) (*JobInfo, error) {
|
func (s *Server) OSTreeResolveJobInfo(id uuid.UUID, result *OSTreeResolveJobResult) (*JobInfo, error) {
|
||||||
jobInfo, err := s.jobInfo(id, result)
|
jobInfo, err := s.jobInfo(id, result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -716,7 +742,6 @@ func (s *Server) RequeueOrFinishJob(token uuid.UUID, maxRetries uint64, result j
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
jobResult = &awsEC2ShareJR.JobResult
|
jobResult = &awsEC2ShareJR.JobResult
|
||||||
|
|
||||||
case JobTypeContainerResolve:
|
case JobTypeContainerResolve:
|
||||||
var containerResolveJR ContainerResolveJobResult
|
var containerResolveJR ContainerResolveJobResult
|
||||||
jobInfo, err = s.ContainerResolveJobInfo(jobId, &containerResolveJR)
|
jobInfo, err = s.ContainerResolveJobInfo(jobId, &containerResolveJR)
|
||||||
|
|
@ -724,6 +749,13 @@ func (s *Server) RequeueOrFinishJob(token uuid.UUID, maxRetries uint64, result j
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
jobResult = &containerResolveJR.JobResult
|
jobResult = &containerResolveJR.JobResult
|
||||||
|
case JobTypeFileResolve:
|
||||||
|
var fileResolveJR FileResolveJobResult
|
||||||
|
jobInfo, err = s.FileResolveJobInfo(jobId, &fileResolveJR)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
jobResult = &fileResolveJR.JobResult
|
||||||
case JobTypeOSTreeResolve:
|
case JobTypeOSTreeResolve:
|
||||||
var ostreeResolveJR OSTreeResolveJobResult
|
var ostreeResolveJR OSTreeResolveJobResult
|
||||||
jobInfo, err = s.OSTreeResolveJobInfo(jobId, &ostreeResolveJR)
|
jobInfo, err = s.OSTreeResolveJobInfo(jobId, &ostreeResolveJR)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue