Documentation
¶
Index ¶
- func AssembleOperationsMap(b Blueprint) map[string]ExtendedOps
- type AbstractPropertiesMethodType
- type Attributes
- type Blueprint
- type COOKBOOKAPPENDIXIdentityAccessManagement
- type Class
- type CloudProviderInfo
- type Column
- type CookbookAppendix
- type DALImage
- type DataManagement
- type DataSource
- type DataSourceElement
- type DataUtility
- type Database
- type Deployment
- type DeploymentInfo
- type Drive
- type DriveInfo
- type ExtendedMethods
- type ExtendedOps
- type ExtraPropertiesType
- type Flow
- type GoalTreeType
- type INTERNALSTRUCTUREIdentityAccessManagement
- type Image
- type InfrastructureDeploymentInfo
- type InfrastructureType
- type InternalStructure
- type LeafType
- type Location
- type Mapping
- type Method
- type MethodsInput
- type NodeInfo
- type Overview
- type Platform
- type Property
- type ProviderElement
- type ResourceType
- type RoleMapElement
- type RoleMapUnion
- type Table
- type Tag
- type TestingOutputDatum
- type TreeStructureType
- type Type
- type VDCInfo
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssembleOperationsMap ¶
func AssembleOperationsMap(b Blueprint) map[string]ExtendedOps
Types ¶
type AbstractPropertiesMethodType ¶
type AbstractPropertiesMethodType struct {
// The method identifier this goals apply to
// required: true
MethodId *string `json:"method_id"`
// The goal tree for this method
// required: true
GoalTrees GoalTreeType `json:"goalTrees"`
}
AbstractPropertiesMethodType defines a goal tree for a method swagger:model
type Attributes ¶
type Attributes struct {
DataUtility []DataUtility `json:"dataUtility"`
Privacy []DataUtility `json:"privacy"`
Security []DataUtility `json:"security"`
}
goal trees
type Blueprint ¶
type Blueprint struct {
ID string `json:"_id"`
AbstractProperties []AbstractPropertiesMethodType `json:"ABSTRACT_PROPERTIES"`
CookbookAppendix CookbookAppendix `json:"COOKBOOK_APPENDIX"` // CookbookAppendix is the definition of the Cookbook Appendix section in the blueprint
DataManagement []DataManagement `json:"DATA_MANAGEMENT"` // list of methods
ExposedAPI spec.Swagger `json:"EXPOSED_API"` // The CAF RESTful API of the VDC, written according to the current version (3.0.1) of the; OpenAPI Specification (OAS), but also adapted to DITAS requirements
InternalStructure InternalStructure `json:"INTERNAL_STRUCTURE"` // General information about the VDC Blueprint
}
This is a VDC Blueprint which consists of five sections
func ReadBlueprint ¶
func (Blueprint) GetMethodMap ¶
func (b Blueprint) GetMethodMap() map[string]ExtendedMethods
GetMethodMap returns a map with information about each operation of the blueprint indexed by operation id.
type CloudProviderInfo ¶
type CloudProviderInfo struct {
// Endpoint to use for this infrastructure
// required:true
APIEndpoint string `json:"api_endpoint"`
// Type of the infrastructure. i.e AWS, Cloudsigma, GCP or Edge
APIType string `json:"api_type"`
// Secret identifier to use to log in to the infrastructure manager.
SecretID string `json:"secret_id"`
// Credentials to access the cloud provider. Either this or secret_id is mandatory. Each cloud provider should define the format of this element.
Credentials map[string]interface{} `json:"credentials"`
}
CloudProviderInfo contains information about a cloud provider swagger:model
type CookbookAppendix ¶
type CookbookAppendix struct {
// Information about the resources which are available to deploy VDCs
// required:true
Resources Deployment `json:"Resources"`
// Information about the clusters that were deployed with this blueprint
// required: true
Deployment DeploymentInfo `json:"Deployment"`
IdentityAccessManagement *COOKBOOKAPPENDIXIdentityAccessManagement `json:"Identity_Access_Management,omitempty"`
}
CookbookAppendix is the definition of the Cookbook Appendix section in the blueprint swagger:model
type DALImage ¶
type DALImage struct {
Images map[string]Image `json:"images,omitempty"` // Set of images to deploy indexed by the image identifier
OriginalIP string `json:"original_ip"` // IP of the original DAL's location
ClusterOriginalIPs map[string]string `json:"cluster_original_ips"` // When each cluster needs a different IP for the original DAL, it can be specified here where the key is the cluster name (which has to be unique) and the value is the IP to use when deploy the VDC to that cluster
}
DALImage about the DAL including its original location
type DataManagement ¶
type DataManagement struct {
Attributes Attributes `json:"attributes"` // goal trees
MethodID string `json:"method_id"` // The id (operationId) of the method (as indicated in the EXPOSED_API.paths field)
}
type DataSource ¶
type DataSource struct {
Class *Class `json:"class,omitempty"`
Description *string `json:"description,omitempty"`
ID string `json:"id"` // A unique identifier
Location *Location `json:"location,omitempty"`
Parameters map[string]interface{} `json:"parameters,omitempty"` // Connection parameters
Schema map[string]interface{} `json:"schema,omitempty"`
Type *Type `json:"type,omitempty"`
}
type DataSourceElement ¶
type DataSourceElement struct {
Database []Database `json:"database"` // the list of databases required by a method in a data source
DataSourceID *string `json:"dataSource_id,omitempty"` // The id of the data sources (as indicated in the Data_Sources field)
DataSourceType *string `json:"dataSource_type,omitempty"` // The type of the data sources (relationa/not_relational/object)
}
type DataUtility ¶
type DataUtility struct {
ID *string `json:"id,omitempty"` // id of the metric
Name *string `json:"name,omitempty"` // name of the metric
Properties map[string]Property `json:"properties,omitempty"` // properties related to the metric
Type *string `json:"type,omitempty"` // type of the metric
}
definition of the metric
type Deployment ¶
type Deployment struct {
// Name for this deployment
// required:true
// unique:true
Name string `json:"name"`
// Optional description
Description string `json:"description"`
// List of infrastructures to deploy for this hybrid deployment
// required:true
Infrastructures []InfrastructureType `json:"infrastructures"`
}
Deployment is a set of infrastructures that need to be instantiated or configurated to form clusters swagger:model
type DeploymentInfo ¶
type DeploymentInfo struct {
// Unique ID for the deployment
// required:true
// unique:true
ID string `json:"id" bson:"_id"`
// Name of the deployment
Name string `json:"name"`
// Lisf of infrastructures, each one representing a different cluster.
Infrastructures map[string]InfrastructureDeploymentInfo `json:"infrastructures"`
// Extra properties bound to the deployment
ExtraProperties ExtraPropertiesType `json:"extra_properties"`
// Global status of the deployment
Status string `json:"status"`
}
DeploymentInfo contains information of a deployment than may compromise several clusters swagger:model
type Drive ¶
type Drive struct {
// Unique name for the drive
// required:true
Name string `json:"name"`
// Type of the drive. It can be "SSD" or "HDD"
// pattern: SSD|HDD
// example: SSD
Type string `json:"type"`
// Size of the disk in Mb
// required:true
Size int64 `json:"size"`
}
Drive holds information about a data drive attached to a node swagger:model
type DriveInfo ¶
type DriveInfo struct {
// Name of the data drive
// unique:true
// required:true
Name string `json:"name"`
// Size of the disk in bytes
// required:true
Size int64 `json:"size"`
}
DriveInfo is the information of a drive that has been instantiated swagger:model
type ExtendedMethods ¶
type ExtendedMethods struct {
Properties AbstractPropertiesMethodType
Method DataManagement
Path string
HTTPMethod string
Tags []string
}
type ExtraPropertiesType ¶
ExtraPropertiesType represents extra properties to define for resources, infrastructures or deployments. This properties are provisioner or deployment specific and they should document them when they expect any. swagger:model
type Flow ¶
type Flow struct {
Parameters map[string]interface{} `json:"parameters,omitempty"`
Platform *Platform `json:"platform,omitempty"`
SourceCode interface{} `json:"source_code"`
}
The data flow that implements the VDC
type GoalTreeType ¶
type GoalTreeType struct {
// Goal tree for data utility properties
// required: false
DataUtility TreeStructureType `json:"dataUtility"`
// Goal tree for security properties
// required: false
Security TreeStructureType `json:"security"`
// Goal tree for privacy properties
// required: false
Privacy TreeStructureType `json:"privacy"`
}
GoalTreeType defines a goal tree swagger:model
type INTERNALSTRUCTUREIdentityAccessManagement ¶
type INTERNALSTRUCTUREIdentityAccessManagement struct {
IamEndpoint string `json:"iam_endpoint"`
JwksURI string `json:"jwks_uri"`
Provider []ProviderElement `json:"provider"`
Roles []string `json:"roles"`
}
type Image ¶
type Image struct {
ExternalPort *int64 `json:"external_port,omitempty"` // Port in which this image must be exposed. It must be unique across all images in all the; ImageSets defined in this blueprint. Due to limitations in k8s, the port range must be; bewteen 30000 and 32767
Image string `json:"image"` // Image is the image name in the standard format [group]/<image_name>:[release]
InternalPort *int64 `json:"internal_port,omitempty"` // Port in which the docker image is listening internally. Two images inside the same; ImageSet can't have the same internal port.
Environment map[string]string `json:"environment,omitempty"` // Environment is a set of environment variables to pass to this image. It can have some special variables if the value is in the form ${var}
}
Image is the information about an image that will be deployed by the deployment engine
type InfrastructureDeploymentInfo ¶
type InfrastructureDeploymentInfo struct {
// Unique infrastructure ID on the deployment
// required:true
// unique:true
ID string `json:"id"`
// Name of the infrastructure
Name string `json:"name"`
// Type of the infrastructure: cloud or edge
// pattern:cloud|edge
// required:true
Type string `json:"type"`
// Provider information
// required:true
Provider CloudProviderInfo `json:"provider"`
// Set of nodes in the infrastructure indexed by role
// required:true
Nodes map[string][]NodeInfo
// Status of the infrastructure
Status string `json:"status"`
// Configuration of VDCs running in the cluster, indexed by VDC identifier.
VDCs map[string]VDCInfo `json:"vdcs"`
// Set weather the VDM is running in this cluster or not
VDM bool
// Extra properties to pass to the provider or the provisioner
ExtraProperties ExtraPropertiesType `json:"extra_properties"`
}
InfrastructureDeploymentInfo contains information about a cluster of nodes that has been instantiated or were already existing. swagger:model
type InfrastructureType ¶
type InfrastructureType struct {
// Unique name for the infrastructure
// required:true
// unique:true
Name string `json:"name"`
// Optional description for the infrastructure
Description string `json:"description"`
// Type of the infrastructure: Cloud or Edge: Cloud infrastructures mean that the resources will be VMs that need to be instantiated. Edge means that the infrastructure is already in place and its information will be added to the database but no further work will be done by a deployer.
Type string `json:"type"`
// Provider information. Required in case of Cloud type
Provider CloudProviderInfo `json:"provider"`
// List of resources to deploy
// required:true
Resources []ResourceType `json:"resources"`
// Extra properties to pass to the provider or the provisioner
ExtraProperties ExtraPropertiesType `json:"extra_properties"`
}
InfrastructureType is a set of resources that need to be created or configured to form a cluster swagger:model
type InternalStructure ¶
type InternalStructure struct {
DALImages map[string]DALImage `json:"DAL_Images,omitempty"` // Docker images that must be deployed in the DAL indexed by DAL name. It will be used to; compose the service name and the DNS entry that other images in the cluster can access to.
DataSources []DataSource `json:"Data_Sources"`
Flow *Flow `json:"Flow,omitempty"` // The data flow that implements the VDC
IdentityAccessManagement *INTERNALSTRUCTUREIdentityAccessManagement `json:"Identity_Access_Management,omitempty"`
MethodsInput *MethodsInput `json:"Methods_Input,omitempty"` // This filed contains the part of the data source that each method needs to be executed
Overview Overview `json:"Overview"`
TestingOutputData []TestingOutputDatum `json:"Testing_Output_Data"`
VDCImages map[string]Image `json:"VDC_Images,omitempty"`
}
General information about the VDC Blueprint
type LeafType ¶
type LeafType struct {
// Unique identifier for the leaf
// required: true
// unique: true
Id *string `json:"id"`
// An optional description for the leaf
// required: false
Description string `json:"description"`
// The weight in the resolution of the constraint
// requiered: true
Weight int `json:"weight"`
// The list of attributes defined in the data management section to match. All of them must comply.
// requiered: true
Attributes []string `json:"attributes"`
}
LeafType is a leaf in a tree data structure swagger:model
type Mapping ¶
type Mapping struct {
MappingURL *string `json:"mapping_url,omitempty"`
Provider *string `json:"provider,omitempty"`
RoleMap *RoleMapUnion `json:"role_map"`
Roles []string `json:"roles"`
}
type Method ¶
type Method struct {
DataSources []DataSourceElement `json:"dataSources"` // The list of data sources required by the method
MethodID *string `json:"method_id,omitempty"` // The id (operationId) of the method (as indicated in the EXPOSED_API.paths field)
}
type MethodsInput ¶
type MethodsInput struct {
Methods []Method `json:"Methods"` // The list of methods
}
This filed contains the part of the data source that each method needs to be executed
type NodeInfo ¶
type NodeInfo struct {
// Hostname of the node.
// requiered:true
// unique:true
Hostname string `json:"hostname"`
// Role of the node. Master or slave in case of Kubernetes.
// example:master
Role string `json:"role"`
// CPU speed in Mhz.
CPU int `json:"cpu"`
// Number of cores.
Cores int `json:"cores"`
// RAM quantity in bytes.
RAM int64 `json:"ram"`
// IP assigned to this node.
// required:true
// unique:true
IP string `json:"ip"`
// Size of the boot disk in bytes
// required:true
// unique:true
DriveSize int64 `json:"drive_size" bson:"drive_size"`
// Data drives information
DataDrives []DriveInfo `json:"data_drives" bson:"data_drives"`
// Extra properties to pass to the provider or the provisioner
ExtraProperties ExtraPropertiesType `json:"extra_properties"`
}
NodeInfo is the information of a virtual machine that has been instantiated or a physical one that was pre-existing swagger:model
type Overview ¶
type Overview struct {
Description string `json:"description"` // This field should contain a short description of the VDC Blueprint
Name string `json:"name"` // This field should contain the name of the VDC Blueprint
Tags []Tag `json:"tags"` // Each element of this array should contain some keywords that describe the functionality; of each one exposed VDC method
}
type Property ¶
type Property struct {
Maximum *float64 `json:"maximum,omitempty"` // lower limit of the offered property
Minimum *float64 `json:"minimum,omitempty"` // upper limit of the offered property
Unit *string `json:"unit,omitempty"` // unit of measure of the property
Value interface{} `json:"value"` // value of the property
}
properties related to the metric
type ProviderElement ¶
type ResourceType ¶
type ResourceType struct {
// Suffix for the hostname. The real hostname will be formed of the infrastructure name + resource name
// required:true
// unique:true
Name string `json:"name"`
// Type of the VM to create i.e. n1-small
// example: n1-small
Type string `json:"type"`
// CPU speed in Mhz. Ignored if type is provided
CPU int `json:"cpu"`
// Number of cores. Ignored if type is provided
Cores int `json:"cores"`
// RAM quantity in Mb. Ignored if type is provided
RAM int64 `json:"ram"`
// Boot disk size in Mb
// required:true
Disk int64 `json:"disk"`
// Role that this VM plays. In case of a Kubernetes deployment at least one "master" is needed.
Role string `json:"role"`
// Boot image ID to use
// required:true
ImageId string `json:"image_id"`
// IP to assign this VM. In case it's not specified, the first available one will be used.
IP string `json:"ip,omitempty"`
// List of data drives to attach to this VM
Drives []Drive `json:"drives"`
// Extra properties to pass to the provider or the provisioner
ExtraProperties ExtraPropertiesType `json:"extra_properties"`
}
ResourceType has information about a node that needs to be created by a deployer. swagger:model
type RoleMapElement ¶
type RoleMapUnion ¶
type RoleMapUnion struct {
RoleMapElementArray []RoleMapElement
String *string
}
type TestingOutputDatum ¶
type TreeStructureType ¶
type TreeStructureType struct {
// The operation to apply to the subtree or leaves
// required: true
// pattern: AND|OR
// example: AND
Type *string `json:"type"`
// The subtrees pending from this node
// required: false
Children []TreeStructureType `json:"children"`
// The leaves pending from this node
// required: false
Leaves []LeafType `json:"leaves"`
}
TreeStructureType is a tree structure with a root and subtrees or leaves swagger:model
func (TreeStructureType) String ¶
func (t TreeStructureType) String() string