...

Source file src/github.com/Azure/azure-sdk-for-go/services/preview/datalake/analytics/2015-11-01-preview/job/models.go

Documentation: github.com/Azure/azure-sdk-for-go/services/preview/datalake/analytics/2015-11-01-preview/job

     1  package job
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  //
     6  // Code generated by Microsoft (R) AutoRest Code Generator.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  import (
    10  	"context"
    11  	"encoding/json"
    12  	"github.com/Azure/go-autorest/autorest"
    13  	"github.com/Azure/go-autorest/autorest/date"
    14  	"github.com/Azure/go-autorest/autorest/to"
    15  	"github.com/Azure/go-autorest/tracing"
    16  	"github.com/gofrs/uuid"
    17  	"net/http"
    18  )
    19  
    20  // The package's fully qualified name.
    21  const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/datalake/analytics/2015-11-01-preview/job"
    22  
    23  // DataPath a Data Lake Analytics U-SQL job data path item.
    24  type DataPath struct {
    25  	autorest.Response `json:"-"`
    26  	// JobID - READ-ONLY; Gets the id of the job this data is for.
    27  	JobID *uuid.UUID `json:"jobId,omitempty"`
    28  	// Command - READ-ONLY; Gets the command that this job data relates to.
    29  	Command *string `json:"command,omitempty"`
    30  	// Paths - READ-ONLY; Gets the list of paths to all of the job data.
    31  	Paths *[]string `json:"paths,omitempty"`
    32  }
    33  
    34  // MarshalJSON is the custom marshaler for DataPath.
    35  func (dp DataPath) MarshalJSON() ([]byte, error) {
    36  	objectMap := make(map[string]interface{})
    37  	return json.Marshal(objectMap)
    38  }
    39  
    40  // ErrorDetails the Data Lake Analytics job error details.
    41  type ErrorDetails struct {
    42  	// Description - READ-ONLY; Gets the error message description
    43  	Description *string `json:"description,omitempty"`
    44  	// Details - READ-ONLY; Gets the details of the error message.
    45  	Details *string `json:"details,omitempty"`
    46  	// EndOffset - READ-ONLY; Gets the end offset in the job where the error was found.
    47  	EndOffset *int32 `json:"endOffset,omitempty"`
    48  	// ErrorID - READ-ONLY; Gets the specific identifier for the type of error encountered in the job.
    49  	ErrorID *string `json:"errorId,omitempty"`
    50  	// FilePath - READ-ONLY; Gets the path to any supplemental error files, if any.
    51  	FilePath *string `json:"filePath,omitempty"`
    52  	// HelpLink - READ-ONLY; Gets the link to MSDN or Azure help for this type of error, if any.
    53  	HelpLink *string `json:"helpLink,omitempty"`
    54  	// InternalDiagnostics - READ-ONLY; Gets the internal diagnostic stack trace if the user requesting the job error details has sufficient permissions it will be retrieved, otherwise it will be empty.
    55  	InternalDiagnostics *string `json:"internalDiagnostics,omitempty"`
    56  	// LineNumber - READ-ONLY; Gets the specific line number in the job where the error occurred.
    57  	LineNumber *int32 `json:"lineNumber,omitempty"`
    58  	// Message - READ-ONLY; Gets the user friendly error message for the failure.
    59  	Message *string `json:"message,omitempty"`
    60  	// Resolution - READ-ONLY; Gets the recommended resolution for the failure, if any.
    61  	Resolution *string `json:"resolution,omitempty"`
    62  	// InnerError - READ-ONLY; Gets the inner error of this specific job error message, if any.
    63  	InnerError *InnerError `json:"InnerError,omitempty"`
    64  	// Severity - READ-ONLY; Gets the severity level of the failure. Possible values include: 'Warning', 'Error'
    65  	Severity SeverityTypes `json:"severity,omitempty"`
    66  	// Source - READ-ONLY; Gets the ultimate source of the failure (usually either SYSTEM or USER).
    67  	Source *string `json:"source,omitempty"`
    68  	// StartOffset - READ-ONLY; Gets the start offset in the job where the error was found
    69  	StartOffset *int32 `json:"startOffset,omitempty"`
    70  }
    71  
    72  // MarshalJSON is the custom marshaler for ErrorDetails.
    73  func (ed ErrorDetails) MarshalJSON() ([]byte, error) {
    74  	objectMap := make(map[string]interface{})
    75  	return json.Marshal(objectMap)
    76  }
    77  
    78  // HiveJobProperties ...
    79  type HiveJobProperties struct {
    80  	// StatementInfo - Gets or sets the statement information for each statement in the script
    81  	StatementInfo *[]HiveJobStatementInfo `json:"statementInfo,omitempty"`
    82  	// LogsLocation - Gets or sets the Hive logs location
    83  	LogsLocation *string `json:"logsLocation,omitempty"`
    84  	// WarehouseLocation - Gets or sets the runtime version of the U-SQL engine to use
    85  	WarehouseLocation *string `json:"warehouseLocation,omitempty"`
    86  	// StatementCount - Gets or sets the number of statements that will be run based on the script
    87  	StatementCount *int32 `json:"statementCount,omitempty"`
    88  	// ExecutedStatementCount - Gets or sets the number of statements that have been run based on the script
    89  	ExecutedStatementCount *int32 `json:"executedStatementCount,omitempty"`
    90  	// RuntimeVersion - Gets or sets the runtime version of the U-SQL engine to use
    91  	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
    92  	// Script - Gets or sets the U-SQL script to run
    93  	Script *string `json:"script,omitempty"`
    94  	// Type - Possible values include: 'TypeJobProperties', 'TypeUSQL', 'TypeHive'
    95  	Type Type `json:"type,omitempty"`
    96  }
    97  
    98  // MarshalJSON is the custom marshaler for HiveJobProperties.
    99  func (hjp HiveJobProperties) MarshalJSON() ([]byte, error) {
   100  	hjp.Type = TypeHive
   101  	objectMap := make(map[string]interface{})
   102  	if hjp.StatementInfo != nil {
   103  		objectMap["statementInfo"] = hjp.StatementInfo
   104  	}
   105  	if hjp.LogsLocation != nil {
   106  		objectMap["logsLocation"] = hjp.LogsLocation
   107  	}
   108  	if hjp.WarehouseLocation != nil {
   109  		objectMap["warehouseLocation"] = hjp.WarehouseLocation
   110  	}
   111  	if hjp.StatementCount != nil {
   112  		objectMap["statementCount"] = hjp.StatementCount
   113  	}
   114  	if hjp.ExecutedStatementCount != nil {
   115  		objectMap["executedStatementCount"] = hjp.ExecutedStatementCount
   116  	}
   117  	if hjp.RuntimeVersion != nil {
   118  		objectMap["runtimeVersion"] = hjp.RuntimeVersion
   119  	}
   120  	if hjp.Script != nil {
   121  		objectMap["script"] = hjp.Script
   122  	}
   123  	if hjp.Type != "" {
   124  		objectMap["type"] = hjp.Type
   125  	}
   126  	return json.Marshal(objectMap)
   127  }
   128  
   129  // AsUSQLJobProperties is the BasicProperties implementation for HiveJobProperties.
   130  func (hjp HiveJobProperties) AsUSQLJobProperties() (*USQLJobProperties, bool) {
   131  	return nil, false
   132  }
   133  
   134  // AsHiveJobProperties is the BasicProperties implementation for HiveJobProperties.
   135  func (hjp HiveJobProperties) AsHiveJobProperties() (*HiveJobProperties, bool) {
   136  	return &hjp, true
   137  }
   138  
   139  // AsProperties is the BasicProperties implementation for HiveJobProperties.
   140  func (hjp HiveJobProperties) AsProperties() (*Properties, bool) {
   141  	return nil, false
   142  }
   143  
   144  // AsBasicProperties is the BasicProperties implementation for HiveJobProperties.
   145  func (hjp HiveJobProperties) AsBasicProperties() (BasicProperties, bool) {
   146  	return &hjp, true
   147  }
   148  
   149  // HiveJobStatementInfo ...
   150  type HiveJobStatementInfo struct {
   151  	// LogLocation - Gets or sets the log location for this statement.
   152  	LogLocation *string `json:"logLocation,omitempty"`
   153  	// ResultPreviewLocation - Gets or sets the result preview location for this statement.
   154  	ResultPreviewLocation *string `json:"resultPreviewLocation,omitempty"`
   155  	// ResultLocation - Gets or sets the result location for this statement.
   156  	ResultLocation *string `json:"resultLocation,omitempty"`
   157  	// ErrorMessage - Gets or sets the error message for this statement.
   158  	ErrorMessage *string `json:"errorMessage,omitempty"`
   159  }
   160  
   161  // InfoListResult list of jobInfo items.
   162  type InfoListResult struct {
   163  	autorest.Response `json:"-"`
   164  	// Value - READ-ONLY; Gets the list of jobInfo items.
   165  	Value *[]Information `json:"value,omitempty"`
   166  	// NextLink - READ-ONLY; Gets the link (url) to the next page of results.
   167  	NextLink *string `json:"nextLink,omitempty"`
   168  	// Count - READ-ONLY; Gets the total count of results that are available, but might not be returned in the current page.
   169  	Count *int64 `json:"count,omitempty"`
   170  }
   171  
   172  // MarshalJSON is the custom marshaler for InfoListResult.
   173  func (ilr InfoListResult) MarshalJSON() ([]byte, error) {
   174  	objectMap := make(map[string]interface{})
   175  	return json.Marshal(objectMap)
   176  }
   177  
   178  // InfoListResultIterator provides access to a complete listing of Information values.
   179  type InfoListResultIterator struct {
   180  	i    int
   181  	page InfoListResultPage
   182  }
   183  
   184  // NextWithContext advances to the next value.  If there was an error making
   185  // the request the iterator does not advance and the error is returned.
   186  func (iter *InfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
   187  	if tracing.IsEnabled() {
   188  		ctx = tracing.StartSpan(ctx, fqdn+"/InfoListResultIterator.NextWithContext")
   189  		defer func() {
   190  			sc := -1
   191  			if iter.Response().Response.Response != nil {
   192  				sc = iter.Response().Response.Response.StatusCode
   193  			}
   194  			tracing.EndSpan(ctx, sc, err)
   195  		}()
   196  	}
   197  	iter.i++
   198  	if iter.i < len(iter.page.Values()) {
   199  		return nil
   200  	}
   201  	err = iter.page.NextWithContext(ctx)
   202  	if err != nil {
   203  		iter.i--
   204  		return err
   205  	}
   206  	iter.i = 0
   207  	return nil
   208  }
   209  
   210  // Next advances to the next value.  If there was an error making
   211  // the request the iterator does not advance and the error is returned.
   212  // Deprecated: Use NextWithContext() instead.
   213  func (iter *InfoListResultIterator) Next() error {
   214  	return iter.NextWithContext(context.Background())
   215  }
   216  
   217  // NotDone returns true if the enumeration should be started or is not yet complete.
   218  func (iter InfoListResultIterator) NotDone() bool {
   219  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   220  }
   221  
   222  // Response returns the raw server response from the last page request.
   223  func (iter InfoListResultIterator) Response() InfoListResult {
   224  	return iter.page.Response()
   225  }
   226  
   227  // Value returns the current value or a zero-initialized value if the
   228  // iterator has advanced beyond the end of the collection.
   229  func (iter InfoListResultIterator) Value() Information {
   230  	if !iter.page.NotDone() {
   231  		return Information{}
   232  	}
   233  	return iter.page.Values()[iter.i]
   234  }
   235  
   236  // Creates a new instance of the InfoListResultIterator type.
   237  func NewInfoListResultIterator(page InfoListResultPage) InfoListResultIterator {
   238  	return InfoListResultIterator{page: page}
   239  }
   240  
   241  // IsEmpty returns true if the ListResult contains no values.
   242  func (ilr InfoListResult) IsEmpty() bool {
   243  	return ilr.Value == nil || len(*ilr.Value) == 0
   244  }
   245  
   246  // hasNextLink returns true if the NextLink is not empty.
   247  func (ilr InfoListResult) hasNextLink() bool {
   248  	return ilr.NextLink != nil && len(*ilr.NextLink) != 0
   249  }
   250  
   251  // infoListResultPreparer prepares a request to retrieve the next set of results.
   252  // It returns nil if no more results exist.
   253  func (ilr InfoListResult) infoListResultPreparer(ctx context.Context) (*http.Request, error) {
   254  	if !ilr.hasNextLink() {
   255  		return nil, nil
   256  	}
   257  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   258  		autorest.AsJSON(),
   259  		autorest.AsGet(),
   260  		autorest.WithBaseURL(to.String(ilr.NextLink)))
   261  }
   262  
   263  // InfoListResultPage contains a page of Information values.
   264  type InfoListResultPage struct {
   265  	fn  func(context.Context, InfoListResult) (InfoListResult, error)
   266  	ilr InfoListResult
   267  }
   268  
   269  // NextWithContext advances to the next page of values.  If there was an error making
   270  // the request the page does not advance and the error is returned.
   271  func (page *InfoListResultPage) NextWithContext(ctx context.Context) (err error) {
   272  	if tracing.IsEnabled() {
   273  		ctx = tracing.StartSpan(ctx, fqdn+"/InfoListResultPage.NextWithContext")
   274  		defer func() {
   275  			sc := -1
   276  			if page.Response().Response.Response != nil {
   277  				sc = page.Response().Response.Response.StatusCode
   278  			}
   279  			tracing.EndSpan(ctx, sc, err)
   280  		}()
   281  	}
   282  	for {
   283  		next, err := page.fn(ctx, page.ilr)
   284  		if err != nil {
   285  			return err
   286  		}
   287  		page.ilr = next
   288  		if !next.hasNextLink() || !next.IsEmpty() {
   289  			break
   290  		}
   291  	}
   292  	return nil
   293  }
   294  
   295  // Next advances to the next page of values.  If there was an error making
   296  // the request the page does not advance and the error is returned.
   297  // Deprecated: Use NextWithContext() instead.
   298  func (page *InfoListResultPage) Next() error {
   299  	return page.NextWithContext(context.Background())
   300  }
   301  
   302  // NotDone returns true if the page enumeration should be started or is not yet complete.
   303  func (page InfoListResultPage) NotDone() bool {
   304  	return !page.ilr.IsEmpty()
   305  }
   306  
   307  // Response returns the raw server response from the last page request.
   308  func (page InfoListResultPage) Response() InfoListResult {
   309  	return page.ilr
   310  }
   311  
   312  // Values returns the slice of values for the current page or nil if there are no values.
   313  func (page InfoListResultPage) Values() []Information {
   314  	if page.ilr.IsEmpty() {
   315  		return nil
   316  	}
   317  	return *page.ilr.Value
   318  }
   319  
   320  // Creates a new instance of the InfoListResultPage type.
   321  func NewInfoListResultPage(cur InfoListResult, getNextPage func(context.Context, InfoListResult) (InfoListResult, error)) InfoListResultPage {
   322  	return InfoListResultPage{
   323  		fn:  getNextPage,
   324  		ilr: cur,
   325  	}
   326  }
   327  
   328  // Information the common Data Lake Analytics job information properties.
   329  type Information struct {
   330  	autorest.Response `json:"-"`
   331  	// JobID - Gets or sets the job's unique identifier (a GUID).
   332  	JobID *uuid.UUID `json:"jobId,omitempty"`
   333  	// Name - Gets or sets the friendly name of the job.
   334  	Name *string `json:"name,omitempty"`
   335  	// Type - Gets or sets the job type of the current job (Hive or USql). Possible values include: 'USQL', 'Hive'
   336  	Type TypeEnum `json:"type,omitempty"`
   337  	// Submitter - Gets or sets the user or account that submitted the job.
   338  	Submitter *string `json:"submitter,omitempty"`
   339  	// ErrorMessage - READ-ONLY; Gets the error message details for the job, if the job failed.
   340  	ErrorMessage *[]ErrorDetails `json:"errorMessage,omitempty"`
   341  	// DegreeOfParallelism - Gets or sets the degree of parallelism used for this job. This must be greater than 0.
   342  	DegreeOfParallelism *int32 `json:"degreeOfParallelism,omitempty"`
   343  	// DegreeOfParallelismPercent - the degree of parallelism in percentage used for this job.
   344  	DegreeOfParallelismPercent *float64 `json:"degreeOfParallelismPercent,omitempty"`
   345  	// Priority - Gets or sets the priority value for the current job. Lower numbers have a higher priority. By default, a job has a priority of 1000. This must be greater than 0.
   346  	Priority *int32 `json:"priority,omitempty"`
   347  	// SubmitTime - READ-ONLY; Gets the time the job was submitted to the service.
   348  	SubmitTime *date.Time `json:"submitTime,omitempty"`
   349  	// StartTime - READ-ONLY; Gets the start time of the job.
   350  	StartTime *date.Time `json:"startTime,omitempty"`
   351  	// EndTime - READ-ONLY; Gets the completion time of the job.
   352  	EndTime *date.Time `json:"endTime,omitempty"`
   353  	// State - READ-ONLY; Gets the job state. When the job is in the Ended state, refer to Result and ErrorMessage for details. Possible values include: 'StateAccepted', 'StateCompiling', 'StateEnded', 'StateNew', 'StateQueued', 'StateRunning', 'StateScheduling', 'StateStarting', 'StatePaused', 'StateWaitingForCapacity'
   354  	State State `json:"state,omitempty"`
   355  	// Result - READ-ONLY; Gets the result of job execution or the current result of the running job. Possible values include: 'None', 'Succeeded', 'Cancelled', 'Failed'
   356  	Result Result `json:"result,omitempty"`
   357  	// StateAuditRecords - READ-ONLY; Gets the job state audit records, indicating when various operations have been performed on this job.
   358  	StateAuditRecords *[]StateAuditRecord `json:"stateAuditRecords,omitempty"`
   359  	// HierarchyQueueNode - READ-ONLY; the name of hierarchy queue node this job is assigned to, null if job has not been assigned yet or the account doesn't have hierarchy queue.
   360  	HierarchyQueueNode *string `json:"hierarchyQueueNode,omitempty"`
   361  	// Properties - Gets or sets the job specific properties.
   362  	Properties BasicProperties `json:"properties,omitempty"`
   363  }
   364  
   365  // MarshalJSON is the custom marshaler for Information.
   366  func (i Information) MarshalJSON() ([]byte, error) {
   367  	objectMap := make(map[string]interface{})
   368  	if i.JobID != nil {
   369  		objectMap["jobId"] = i.JobID
   370  	}
   371  	if i.Name != nil {
   372  		objectMap["name"] = i.Name
   373  	}
   374  	if i.Type != "" {
   375  		objectMap["type"] = i.Type
   376  	}
   377  	if i.Submitter != nil {
   378  		objectMap["submitter"] = i.Submitter
   379  	}
   380  	if i.DegreeOfParallelism != nil {
   381  		objectMap["degreeOfParallelism"] = i.DegreeOfParallelism
   382  	}
   383  	if i.DegreeOfParallelismPercent != nil {
   384  		objectMap["degreeOfParallelismPercent"] = i.DegreeOfParallelismPercent
   385  	}
   386  	if i.Priority != nil {
   387  		objectMap["priority"] = i.Priority
   388  	}
   389  	objectMap["properties"] = i.Properties
   390  	return json.Marshal(objectMap)
   391  }
   392  
   393  // UnmarshalJSON is the custom unmarshaler for Information struct.
   394  func (i *Information) UnmarshalJSON(body []byte) error {
   395  	var m map[string]*json.RawMessage
   396  	err := json.Unmarshal(body, &m)
   397  	if err != nil {
   398  		return err
   399  	}
   400  	for k, v := range m {
   401  		switch k {
   402  		case "jobId":
   403  			if v != nil {
   404  				var jobID uuid.UUID
   405  				err = json.Unmarshal(*v, &jobID)
   406  				if err != nil {
   407  					return err
   408  				}
   409  				i.JobID = &jobID
   410  			}
   411  		case "name":
   412  			if v != nil {
   413  				var name string
   414  				err = json.Unmarshal(*v, &name)
   415  				if err != nil {
   416  					return err
   417  				}
   418  				i.Name = &name
   419  			}
   420  		case "type":
   421  			if v != nil {
   422  				var typeVar TypeEnum
   423  				err = json.Unmarshal(*v, &typeVar)
   424  				if err != nil {
   425  					return err
   426  				}
   427  				i.Type = typeVar
   428  			}
   429  		case "submitter":
   430  			if v != nil {
   431  				var submitter string
   432  				err = json.Unmarshal(*v, &submitter)
   433  				if err != nil {
   434  					return err
   435  				}
   436  				i.Submitter = &submitter
   437  			}
   438  		case "errorMessage":
   439  			if v != nil {
   440  				var errorMessage []ErrorDetails
   441  				err = json.Unmarshal(*v, &errorMessage)
   442  				if err != nil {
   443  					return err
   444  				}
   445  				i.ErrorMessage = &errorMessage
   446  			}
   447  		case "degreeOfParallelism":
   448  			if v != nil {
   449  				var degreeOfParallelism int32
   450  				err = json.Unmarshal(*v, &degreeOfParallelism)
   451  				if err != nil {
   452  					return err
   453  				}
   454  				i.DegreeOfParallelism = &degreeOfParallelism
   455  			}
   456  		case "degreeOfParallelismPercent":
   457  			if v != nil {
   458  				var degreeOfParallelismPercent float64
   459  				err = json.Unmarshal(*v, &degreeOfParallelismPercent)
   460  				if err != nil {
   461  					return err
   462  				}
   463  				i.DegreeOfParallelismPercent = &degreeOfParallelismPercent
   464  			}
   465  		case "priority":
   466  			if v != nil {
   467  				var priority int32
   468  				err = json.Unmarshal(*v, &priority)
   469  				if err != nil {
   470  					return err
   471  				}
   472  				i.Priority = &priority
   473  			}
   474  		case "submitTime":
   475  			if v != nil {
   476  				var submitTime date.Time
   477  				err = json.Unmarshal(*v, &submitTime)
   478  				if err != nil {
   479  					return err
   480  				}
   481  				i.SubmitTime = &submitTime
   482  			}
   483  		case "startTime":
   484  			if v != nil {
   485  				var startTime date.Time
   486  				err = json.Unmarshal(*v, &startTime)
   487  				if err != nil {
   488  					return err
   489  				}
   490  				i.StartTime = &startTime
   491  			}
   492  		case "endTime":
   493  			if v != nil {
   494  				var endTime date.Time
   495  				err = json.Unmarshal(*v, &endTime)
   496  				if err != nil {
   497  					return err
   498  				}
   499  				i.EndTime = &endTime
   500  			}
   501  		case "state":
   502  			if v != nil {
   503  				var state State
   504  				err = json.Unmarshal(*v, &state)
   505  				if err != nil {
   506  					return err
   507  				}
   508  				i.State = state
   509  			}
   510  		case "result":
   511  			if v != nil {
   512  				var resultVar Result
   513  				err = json.Unmarshal(*v, &resultVar)
   514  				if err != nil {
   515  					return err
   516  				}
   517  				i.Result = resultVar
   518  			}
   519  		case "stateAuditRecords":
   520  			if v != nil {
   521  				var stateAuditRecords []StateAuditRecord
   522  				err = json.Unmarshal(*v, &stateAuditRecords)
   523  				if err != nil {
   524  					return err
   525  				}
   526  				i.StateAuditRecords = &stateAuditRecords
   527  			}
   528  		case "hierarchyQueueNode":
   529  			if v != nil {
   530  				var hierarchyQueueNode string
   531  				err = json.Unmarshal(*v, &hierarchyQueueNode)
   532  				if err != nil {
   533  					return err
   534  				}
   535  				i.HierarchyQueueNode = &hierarchyQueueNode
   536  			}
   537  		case "properties":
   538  			if v != nil {
   539  				properties, err := unmarshalBasicProperties(*v)
   540  				if err != nil {
   541  					return err
   542  				}
   543  				i.Properties = properties
   544  			}
   545  		}
   546  	}
   547  
   548  	return nil
   549  }
   550  
   551  // InnerError the Data Lake Analytics job error details.
   552  type InnerError struct {
   553  	// DiagnosticCode - READ-ONLY; Gets the diagnostic error code.
   554  	DiagnosticCode *int32 `json:"diagnosticCode,omitempty"`
   555  	// Severity - READ-ONLY; Gets the severity level of the failure. Possible values include: 'Warning', 'Error'
   556  	Severity SeverityTypes `json:"severity,omitempty"`
   557  	// Details - READ-ONLY; Gets the details of the error message.
   558  	Details *string `json:"details,omitempty"`
   559  	// Component - READ-ONLY; Gets the component that failed.
   560  	Component *string `json:"component,omitempty"`
   561  	// ErrorID - READ-ONLY; Gets the specific identifier for the type of error encountered in the job.
   562  	ErrorID *string `json:"errorId,omitempty"`
   563  	// HelpLink - READ-ONLY; Gets the link to MSDN or Azure help for this type of error, if any.
   564  	HelpLink *string `json:"helpLink,omitempty"`
   565  	// InternalDiagnostics - READ-ONLY; Gets the internal diagnostic stack trace if the user requesting the job error details has sufficient permissions it will be retrieved, otherwise it will be empty.
   566  	InternalDiagnostics *string `json:"internalDiagnostics,omitempty"`
   567  	// Message - READ-ONLY; Gets the user friendly error message for the failure.
   568  	Message *string `json:"message,omitempty"`
   569  	// Resolution - READ-ONLY; Gets the recommended resolution for the failure, if any.
   570  	Resolution *string `json:"resolution,omitempty"`
   571  	// Source - READ-ONLY; Gets the ultimate source of the failure (usually either SYSTEM or USER).
   572  	Source *string `json:"source,omitempty"`
   573  	// Description - READ-ONLY; Gets the error message description
   574  	Description *string `json:"description,omitempty"`
   575  }
   576  
   577  // MarshalJSON is the custom marshaler for InnerError.
   578  func (ie InnerError) MarshalJSON() ([]byte, error) {
   579  	objectMap := make(map[string]interface{})
   580  	return json.Marshal(objectMap)
   581  }
   582  
   583  // BasicProperties the common Data Lake Analytics job properties.
   584  type BasicProperties interface {
   585  	AsUSQLJobProperties() (*USQLJobProperties, bool)
   586  	AsHiveJobProperties() (*HiveJobProperties, bool)
   587  	AsProperties() (*Properties, bool)
   588  }
   589  
   590  // Properties the common Data Lake Analytics job properties.
   591  type Properties struct {
   592  	// RuntimeVersion - Gets or sets the runtime version of the U-SQL engine to use
   593  	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
   594  	// Script - Gets or sets the U-SQL script to run
   595  	Script *string `json:"script,omitempty"`
   596  	// Type - Possible values include: 'TypeJobProperties', 'TypeUSQL', 'TypeHive'
   597  	Type Type `json:"type,omitempty"`
   598  }
   599  
   600  func unmarshalBasicProperties(body []byte) (BasicProperties, error) {
   601  	var m map[string]interface{}
   602  	err := json.Unmarshal(body, &m)
   603  	if err != nil {
   604  		return nil, err
   605  	}
   606  
   607  	switch m["type"] {
   608  	case string(TypeUSQL):
   609  		var usjp USQLJobProperties
   610  		err := json.Unmarshal(body, &usjp)
   611  		return usjp, err
   612  	case string(TypeHive):
   613  		var hjp HiveJobProperties
   614  		err := json.Unmarshal(body, &hjp)
   615  		return hjp, err
   616  	default:
   617  		var p Properties
   618  		err := json.Unmarshal(body, &p)
   619  		return p, err
   620  	}
   621  }
   622  func unmarshalBasicPropertiesArray(body []byte) ([]BasicProperties, error) {
   623  	var rawMessages []*json.RawMessage
   624  	err := json.Unmarshal(body, &rawMessages)
   625  	if err != nil {
   626  		return nil, err
   627  	}
   628  
   629  	pArray := make([]BasicProperties, len(rawMessages))
   630  
   631  	for index, rawMessage := range rawMessages {
   632  		p, err := unmarshalBasicProperties(*rawMessage)
   633  		if err != nil {
   634  			return nil, err
   635  		}
   636  		pArray[index] = p
   637  	}
   638  	return pArray, nil
   639  }
   640  
   641  // MarshalJSON is the custom marshaler for Properties.
   642  func (p Properties) MarshalJSON() ([]byte, error) {
   643  	p.Type = TypeJobProperties
   644  	objectMap := make(map[string]interface{})
   645  	if p.RuntimeVersion != nil {
   646  		objectMap["runtimeVersion"] = p.RuntimeVersion
   647  	}
   648  	if p.Script != nil {
   649  		objectMap["script"] = p.Script
   650  	}
   651  	if p.Type != "" {
   652  		objectMap["type"] = p.Type
   653  	}
   654  	return json.Marshal(objectMap)
   655  }
   656  
   657  // AsUSQLJobProperties is the BasicProperties implementation for Properties.
   658  func (p Properties) AsUSQLJobProperties() (*USQLJobProperties, bool) {
   659  	return nil, false
   660  }
   661  
   662  // AsHiveJobProperties is the BasicProperties implementation for Properties.
   663  func (p Properties) AsHiveJobProperties() (*HiveJobProperties, bool) {
   664  	return nil, false
   665  }
   666  
   667  // AsProperties is the BasicProperties implementation for Properties.
   668  func (p Properties) AsProperties() (*Properties, bool) {
   669  	return &p, true
   670  }
   671  
   672  // AsBasicProperties is the BasicProperties implementation for Properties.
   673  func (p Properties) AsBasicProperties() (BasicProperties, bool) {
   674  	return &p, true
   675  }
   676  
   677  // Resource the Data Lake Analytics U-SQL job resources.
   678  type Resource struct {
   679  	// Name - Gets or set the name of the resource.
   680  	Name *string `json:"name,omitempty"`
   681  	// ResourcePath - Gets or sets the path to the resource.
   682  	ResourcePath *string `json:"resourcePath,omitempty"`
   683  	// Type - Gets or sets the job resource type. Possible values include: 'VertexResource', 'StatisticsResource'
   684  	Type ResourceType `json:"type,omitempty"`
   685  }
   686  
   687  // StateAuditRecord the Data Lake Analytics U-SQL job state audit records for tracking the lifecycle of a
   688  // job.
   689  type StateAuditRecord struct {
   690  	// NewState - READ-ONLY; Gets the new state the job is in.
   691  	NewState *string `json:"newState,omitempty"`
   692  	// TimeStamp - READ-ONLY; Gets the time stamp that the state change took place.
   693  	TimeStamp *date.Time `json:"timeStamp,omitempty"`
   694  	// RequestedByUser - READ-ONLY; Gets the user who requests the change.
   695  	RequestedByUser *string `json:"requestedByUser,omitempty"`
   696  	// Details - READ-ONLY; Gets  the details of the audit log.
   697  	Details *string `json:"details,omitempty"`
   698  }
   699  
   700  // MarshalJSON is the custom marshaler for StateAuditRecord.
   701  func (sar StateAuditRecord) MarshalJSON() ([]byte, error) {
   702  	objectMap := make(map[string]interface{})
   703  	return json.Marshal(objectMap)
   704  }
   705  
   706  // Statistics the Data Lake Analytics U-SQL job execution statistics.
   707  type Statistics struct {
   708  	autorest.Response `json:"-"`
   709  	// LastUpdateTimeUtc - READ-ONLY; Gets the last update time for the statistics.
   710  	LastUpdateTimeUtc *date.Time `json:"lastUpdateTimeUtc,omitempty"`
   711  	// Stages - READ-ONLY; Gets the list of stages for the job.
   712  	Stages *[]StatisticsVertexStage `json:"stages,omitempty"`
   713  }
   714  
   715  // MarshalJSON is the custom marshaler for Statistics.
   716  func (s Statistics) MarshalJSON() ([]byte, error) {
   717  	objectMap := make(map[string]interface{})
   718  	return json.Marshal(objectMap)
   719  }
   720  
   721  // StatisticsVertexStage the Data Lake Analytics U-SQL job statistics vertex stage information.
   722  type StatisticsVertexStage struct {
   723  	// DataRead - READ-ONLY; Gets the amount of data read, in bytes.
   724  	DataRead *int64 `json:"dataRead,omitempty"`
   725  	// DataReadCrossPod - READ-ONLY; Gets the amount of data read across multiple pods, in bytes.
   726  	DataReadCrossPod *int64 `json:"dataReadCrossPod,omitempty"`
   727  	// DataReadIntraPod - READ-ONLY; Gets the amount of data read in one pod, in bytes.
   728  	DataReadIntraPod *int64 `json:"dataReadIntraPod,omitempty"`
   729  	// DataToRead - READ-ONLY; Gets the amount of data remaining to be read, in bytes.
   730  	DataToRead *int64 `json:"dataToRead,omitempty"`
   731  	// DataWritten - READ-ONLY; Gets the amount of data written, in bytes.
   732  	DataWritten *int64 `json:"dataWritten,omitempty"`
   733  	// DuplicateDiscardCount - READ-ONLY; Gets the number of duplicates that were discarded.
   734  	DuplicateDiscardCount *int32 `json:"duplicateDiscardCount,omitempty"`
   735  	// FailedCount - READ-ONLY; Gets the number of failures that occurred in this stage.
   736  	FailedCount *int32 `json:"failedCount,omitempty"`
   737  	// MaxVertexDataRead - READ-ONLY; Gets the maximum amount of data read in a single vertex, in bytes.
   738  	MaxVertexDataRead *int64 `json:"maxVertexDataRead,omitempty"`
   739  	// MinVertexDataRead - READ-ONLY; Gets the minimum amount of data read in a single vertex, in bytes.
   740  	MinVertexDataRead *int64 `json:"minVertexDataRead,omitempty"`
   741  	// ReadFailureCount - READ-ONLY; Gets the number of read failures in this stage.
   742  	ReadFailureCount *int32 `json:"readFailureCount,omitempty"`
   743  	// RevocationCount - READ-ONLY; Gets the number of vertices that were revoked during this stage.
   744  	RevocationCount *int32 `json:"revocationCount,omitempty"`
   745  	// RunningCount - READ-ONLY; Gets the number of currently running vertices in this stage.
   746  	RunningCount *int32 `json:"runningCount,omitempty"`
   747  	// ScheduledCount - READ-ONLY; Gets the number of currently scheduled vertices in this stage
   748  	ScheduledCount *int32 `json:"scheduledCount,omitempty"`
   749  	// StageName - READ-ONLY; Gets the name of this stage in job execution.
   750  	StageName *string `json:"stageName,omitempty"`
   751  	// SucceededCount - READ-ONLY; Gets the number of vertices that succeeded in this stage.
   752  	SucceededCount *int32 `json:"succeededCount,omitempty"`
   753  	// TempDataWritten - READ-ONLY; Gets the amount of temporary data written, in bytes.
   754  	TempDataWritten *int64 `json:"tempDataWritten,omitempty"`
   755  	// TotalCount - READ-ONLY; Gets the total vertex count for this stage.
   756  	TotalCount *int32 `json:"totalCount,omitempty"`
   757  	// TotalFailedTime - READ-ONLY; Gets the amount of time that failed vertices took up in this stage.
   758  	TotalFailedTime *string `json:"totalFailedTime,omitempty"`
   759  	// TotalProgress - READ-ONLY; Gets the current progress of this stage, as a percentage.
   760  	TotalProgress *int32 `json:"totalProgress,omitempty"`
   761  	// TotalSucceededTime - READ-ONLY; Gets the amount of time all successful vertices took in this stage.
   762  	TotalSucceededTime *string `json:"totalSucceededTime,omitempty"`
   763  }
   764  
   765  // MarshalJSON is the custom marshaler for StatisticsVertexStage.
   766  func (svs StatisticsVertexStage) MarshalJSON() ([]byte, error) {
   767  	objectMap := make(map[string]interface{})
   768  	return json.Marshal(objectMap)
   769  }
   770  
   771  // USQLJobProperties ...
   772  type USQLJobProperties struct {
   773  	// Resources - Gets or sets the list of resources that are required by the job
   774  	Resources *[]Resource `json:"resources,omitempty"`
   775  	// Statistics - Gets or sets the job specific statistics.
   776  	Statistics *Statistics `json:"statistics,omitempty"`
   777  	// DebugData - Gets or sets the job specific debug data locations.
   778  	DebugData *DataPath `json:"debugData,omitempty"`
   779  	// AlgebraFilePath - READ-ONLY; Gets the U-SQL algebra file path after the job has completed
   780  	AlgebraFilePath *string `json:"algebraFilePath,omitempty"`
   781  	// TotalCompilationTime - READ-ONLY; Gets the total time this job spent compiling. This value should not be set by the user and will be ignored if it is.
   782  	TotalCompilationTime *string `json:"totalCompilationTime,omitempty"`
   783  	// TotalPauseTime - READ-ONLY; Gets the total time this job spent paused. This value should not be set by the user and will be ignored if it is.
   784  	TotalPauseTime *string `json:"totalPauseTime,omitempty"`
   785  	// TotalQueuedTime - READ-ONLY; Gets the total time this job spent queued. This value should not be set by the user and will be ignored if it is.
   786  	TotalQueuedTime *string `json:"totalQueuedTime,omitempty"`
   787  	// TotalRunningTime - READ-ONLY; Gets the total time this job spent executing. This value should not be set by the user and will be ignored if it is.
   788  	TotalRunningTime *string `json:"totalRunningTime,omitempty"`
   789  	// RootProcessNodeID - READ-ONLY; Gets the ID used to identify the job manager coordinating job execution. This value should not be set by the user and will be ignored if it is.
   790  	RootProcessNodeID *string `json:"rootProcessNodeId,omitempty"`
   791  	// YarnApplicationID - READ-ONLY; Gets the ID used to identify the yarn application executing the job. This value should not be set by the user and will be ignored if it is.
   792  	YarnApplicationID *string `json:"yarnApplicationId,omitempty"`
   793  	// YarnApplicationTimeStamp - READ-ONLY; Gets the timestamp (in ticks) for the yarn application executing the job. This value should not be set by the user and will be ignored if it is.
   794  	YarnApplicationTimeStamp *int64 `json:"yarnApplicationTimeStamp,omitempty"`
   795  	// CompileMode - Gets or sets the compile mode for the job. Possible values include: 'Semantic', 'Full', 'SingleBox'
   796  	CompileMode CompileMode `json:"compileMode,omitempty"`
   797  	// RuntimeVersion - Gets or sets the runtime version of the U-SQL engine to use
   798  	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
   799  	// Script - Gets or sets the U-SQL script to run
   800  	Script *string `json:"script,omitempty"`
   801  	// Type - Possible values include: 'TypeJobProperties', 'TypeUSQL', 'TypeHive'
   802  	Type Type `json:"type,omitempty"`
   803  }
   804  
   805  // MarshalJSON is the custom marshaler for USQLJobProperties.
   806  func (usjp USQLJobProperties) MarshalJSON() ([]byte, error) {
   807  	usjp.Type = TypeUSQL
   808  	objectMap := make(map[string]interface{})
   809  	if usjp.Resources != nil {
   810  		objectMap["resources"] = usjp.Resources
   811  	}
   812  	if usjp.Statistics != nil {
   813  		objectMap["statistics"] = usjp.Statistics
   814  	}
   815  	if usjp.DebugData != nil {
   816  		objectMap["debugData"] = usjp.DebugData
   817  	}
   818  	if usjp.CompileMode != "" {
   819  		objectMap["compileMode"] = usjp.CompileMode
   820  	}
   821  	if usjp.RuntimeVersion != nil {
   822  		objectMap["runtimeVersion"] = usjp.RuntimeVersion
   823  	}
   824  	if usjp.Script != nil {
   825  		objectMap["script"] = usjp.Script
   826  	}
   827  	if usjp.Type != "" {
   828  		objectMap["type"] = usjp.Type
   829  	}
   830  	return json.Marshal(objectMap)
   831  }
   832  
   833  // AsUSQLJobProperties is the BasicProperties implementation for USQLJobProperties.
   834  func (usjp USQLJobProperties) AsUSQLJobProperties() (*USQLJobProperties, bool) {
   835  	return &usjp, true
   836  }
   837  
   838  // AsHiveJobProperties is the BasicProperties implementation for USQLJobProperties.
   839  func (usjp USQLJobProperties) AsHiveJobProperties() (*HiveJobProperties, bool) {
   840  	return nil, false
   841  }
   842  
   843  // AsProperties is the BasicProperties implementation for USQLJobProperties.
   844  func (usjp USQLJobProperties) AsProperties() (*Properties, bool) {
   845  	return nil, false
   846  }
   847  
   848  // AsBasicProperties is the BasicProperties implementation for USQLJobProperties.
   849  func (usjp USQLJobProperties) AsBasicProperties() (BasicProperties, bool) {
   850  	return &usjp, true
   851  }
   852  

View as plain text