traefik/vendor/github.com/jjcollinge/servicefabric/types.go
2017-11-27 14:26:04 +01:00

200 lines
6.9 KiB
Go

package servicefabric
import "encoding/xml"
// ApplicationItemsPage encapsulates the paged response
// model for Applications in the Service Fabric API
type ApplicationItemsPage struct {
ContinuationToken *string `json:"ContinuationToken"`
Items []ApplicationItem `json:"Items"`
}
// AppParameter Application parameter
type AppParameter struct {
Key string `json:"Key"`
Value string `json:"Value"`
}
// ApplicationItem encapsulates the embedded model for
// ApplicationItems within the ApplicationItemsPage model
type ApplicationItem struct {
HealthState string `json:"HealthState"`
ID string `json:"Id"`
Name string `json:"Name"`
Parameters []*AppParameter `json:"Parameters"`
Status string `json:"Status"`
TypeName string `json:"TypeName"`
TypeVersion string `json:"TypeVersion"`
}
// ServiceItemsPage encapsulates the paged response
// model for Services in the Service Fabric API
type ServiceItemsPage struct {
ContinuationToken *string `json:"ContinuationToken"`
Items []ServiceItem `json:"Items"`
}
// ServiceItem encapsulates the embedded model for
// ServiceItems within the ServiceItemsPage model
type ServiceItem struct {
HasPersistedState bool `json:"HasPersistedState"`
HealthState string `json:"HealthState"`
ID string `json:"Id"`
IsServiceGroup bool `json:"IsServiceGroup"`
ManifestVersion string `json:"ManifestVersion"`
Name string `json:"Name"`
ServiceKind string `json:"ServiceKind"`
ServiceStatus string `json:"ServiceStatus"`
TypeName string `json:"TypeName"`
}
// PartitionItemsPage encapsulates the paged response
// model for PartitionItems in the Service Fabric API
type PartitionItemsPage struct {
ContinuationToken *string `json:"ContinuationToken"`
Items []PartitionItem `json:"Items"`
}
// PartitionItem encapsulates the service information
// returned for each PartitionItem under the service
type PartitionItem struct {
CurrentConfigurationEpoch ConfigurationEpoch `json:"CurrentConfigurationEpoch"`
HealthState string `json:"HealthState"`
MinReplicaSetSize int64 `json:"MinReplicaSetSize"`
PartitionInformation PartitionInformation `json:"PartitionInformation"`
PartitionStatus string `json:"PartitionStatus"`
ServiceKind string `json:"ServiceKind"`
TargetReplicaSetSize int64 `json:"TargetReplicaSetSize"`
}
// ConfigurationEpoch Partition configuration epoch
type ConfigurationEpoch struct {
ConfigurationVersion string `json:"ConfigurationVersion"`
DataLossVersion string `json:"DataLossVersion"`
}
// PartitionInformation Partition information
type PartitionInformation struct {
HighKey string `json:"HighKey"`
ID string `json:"Id"`
LowKey string `json:"LowKey"`
ServicePartitionKind string `json:"ServicePartitionKind"`
}
// ReplicaItemBase shared data used
// in both replicas and instances
type ReplicaItemBase struct {
Address string `json:"Address"`
HealthState string `json:"HealthState"`
LastInBuildDurationInSeconds string `json:"LastInBuildDurationInSeconds"`
NodeName string `json:"NodeName"`
ReplicaRole string `json:"ReplicaRole"`
ReplicaStatus string `json:"ReplicaStatus"`
ServiceKind string `json:"ServiceKind"`
}
// ReplicaItemsPage encapsulates the response
// model for Replicas in the Service Fabric API
type ReplicaItemsPage struct {
ContinuationToken *string `json:"ContinuationToken"`
Items []ReplicaItem `json:"Items"`
}
// ReplicaItem holds replica specific data
type ReplicaItem struct {
*ReplicaItemBase
ID string `json:"ReplicaId"`
}
// GetReplicaData returns replica data
func (m *ReplicaItem) GetReplicaData() (string, *ReplicaItemBase) {
return m.ID, m.ReplicaItemBase
}
// InstanceItemsPage encapsulates the response
// model for Instances in the Service Fabric API
type InstanceItemsPage struct {
ContinuationToken *string `json:"ContinuationToken"`
Items []InstanceItem `json:"Items"`
}
// InstanceItem hold instance specific data
type InstanceItem struct {
*ReplicaItemBase
ID string `json:"InstanceId"`
}
// GetReplicaData returns replica data from an instance
func (m *InstanceItem) GetReplicaData() (string, *ReplicaItemBase) {
return m.ID, m.ReplicaItemBase
}
// ServiceType encapsulates the response model for
// Service types in the Service Fabric API
type ServiceType struct {
ServiceTypeDescription ServiceTypeDescription `json:"ServiceTypeDescription"`
ServiceManifestVersion string `json:"ServiceManifestVersion"`
ServiceManifestName string `json:"ServiceManifestName"`
IsServiceGroup bool `json:"IsServiceGroup"`
}
// ServiceTypeDescription Service Type Description
type ServiceTypeDescription struct {
IsStateful bool `json:"IsStateful"`
ServiceTypeName string `json:"ServiceTypeName"`
PlacementConstraints string `json:"PlacementConstraints"`
HasPersistedState bool `json:"HasPersistedState"`
Kind string `json:"Kind"`
Extensions []KeyValuePair `json:"Extensions"`
LoadMetrics []interface{} `json:"LoadMetrics"`
ServicePlacementPolicies []interface{} `json:"ServicePlacementPolicies"`
}
// PropertiesListPage encapsulates the response model for
// PagedPropertyInfoList in the Service Fabric API
type PropertiesListPage struct {
ContinuationToken string `json:"ContinuationToken"`
IsConsistent bool `json:"IsConsistent"`
Properties []Property `json:"Properties"`
}
// Property Paged Property Info
type Property struct {
Metadata Metadata `json:"Metadata"`
Name string `json:"Name"`
Value PropValue `json:"Value"`
}
// Metadata Property Metadata
type Metadata struct {
CustomTypeID string `json:"CustomTypeId"`
LastModifiedUtcTimestamp string `json:"LastModifiedUtcTimestamp"`
Parent string `json:"Parent"`
SequenceNumber string `json:"SequenceNumber"`
SizeInBytes int64 `json:"SizeInBytes"`
TypeID string `json:"TypeId"`
}
// PropValue Property value
type PropValue struct {
Data string `json:"Data"`
Kind string `json:"Kind"`
}
// KeyValuePair represents a key value pair structure
type KeyValuePair struct {
Key string `json:"Key"`
Value string `json:"Value"`
}
// ServiceExtensionLabels provides the structure for
// deserialising the XML document used to store labels in an Extension
type ServiceExtensionLabels struct {
XMLName xml.Name `xml:"Labels"`
Label []struct {
XMLName xml.Name `xml:"Label"`
Value string `xml:",chardata"`
Key string `xml:"Key,attr"`
}
}