Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CONF
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UvA
CONF
Commits
03737f98
Commit
03737f98
authored
5 years ago
by
Spiros Koulouzis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added interface type
parent
ba498120
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
108 additions
and
57 deletions
+108
-57
nodes.yaml
TOSCA/types/nodes.yaml
+0
-7
TOSCAUtils.java
...c/main/java/nl/uva/sne/drip/commons/utils/TOSCAUtils.java
+26
-28
ProvisionerApiController.java
...in/java/nl/uva/sne/drip/api/ProvisionerApiController.java
+10
-7
ProvisionerService.java
...main/java/nl/uva/sne/drip/service/ProvisionerService.java
+45
-0
application.properties
drip-manager/src/main/resources/application.properties
+4
-1
pom.xml
drip-provisioner/pom.xml
+12
-2
Consumer.java
.../main/java/nl/uva/sne/drip/drip/provisioner/Consumer.java
+10
-11
RPCServer.java
...main/java/nl/uva/sne/drip/drip/provisioner/RPCServer.java
+1
-1
No files found.
TOSCA/types/nodes.yaml
View file @
03737f98
...
...
@@ -111,13 +111,6 @@ node_types:
credential
:
type
:
tosca.datatypes.Credential
required
:
false
status
:
type
:
string
required
:
true
default
:
"
fresh"
description
:
The state of this topology
constraints
:
-
valid_values
:
[
"
fresh"
,
"
running"
,
"
deleted"
,
"
failed"
,
"
stopped"
]
subnet
:
type
:
string
required
:
false
...
...
This diff is collapsed.
Click to expand it.
drip-commons/src/main/java/nl/uva/sne/drip/commons/utils/TOSCAUtils.java
View file @
03737f98
...
...
@@ -22,6 +22,9 @@ import java.util.Iterator;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
nl.uva.sne.drip.model.TopologyTemplate
;
import
nl.uva.sne.drip.model.ToscaTemplate
;
import
sun.reflect.generics.reflectiveObjects.NotImplementedException
;
/**
*
...
...
@@ -29,9 +32,10 @@ import java.util.Set;
*/
public
class
TOSCAUtils
{
public
static
List
<
Map
<
String
,
Object
>>
getVMsFromTopology
(
Map
<
String
,
Object
>
toscaPlan
)
{
List
<
String
>
vmNames
=
getVMsNodeNamesFromTopology
(
toscaPlan
);
Map
<
String
,
Object
>
nodeTemplates
=
(
Map
<
String
,
Object
>)
((
Map
<
String
,
Object
>)
toscaPlan
.
get
(
"topology_template"
)).
get
(
"node_templates"
);
public
static
List
<
Map
<
String
,
Object
>>
getVMsFromTopology
(
ToscaTemplate
toscaTemplate
)
{
List
<
String
>
vmNames
=
getVMsNodeNamesFromTopology
(
toscaTemplate
);
TopologyTemplate
topologyTemplate
=
toscaTemplate
.
getTopologyTemplate
();
Map
<
String
,
Object
>
nodeTemplates
=
topologyTemplate
.
getNodeTemplates
();
List
<
Map
<
String
,
Object
>>
vmList
=
new
ArrayList
<>();
for
(
String
vmName
:
vmNames
)
{
Map
<
String
,
Object
>
vm
=
(
Map
<
String
,
Object
>)
nodeTemplates
.
get
(
vmName
);
...
...
@@ -41,9 +45,11 @@ public class TOSCAUtils {
return
vmList
;
}
public
static
List
<
String
>
getVMsNodeNamesFromTopology
(
Map
<
String
,
Object
>
toscaPlan
)
{
Map
<
String
,
Object
>
topologyTemplate
=
(
Map
<
String
,
Object
>)
toscaPlan
.
get
(
"topology_template"
);
Map
<
String
,
Object
>
nodeTemplates
=
(
Map
<
String
,
Object
>)
(
topologyTemplate
).
get
(
"node_templates"
);
public
static
List
<
String
>
getVMsNodeNamesFromTopology
(
ToscaTemplate
toscaTemplate
)
{
TopologyTemplate
topologyTemplate
=
toscaTemplate
.
getTopologyTemplate
();
Map
<
String
,
Object
>
nodeTemplates
=
topologyTemplate
.
getNodeTemplates
();
Iterator
it
=
nodeTemplates
.
entrySet
().
iterator
();
List
<
String
>
vmNames
=
new
ArrayList
<>();
while
(
it
.
hasNext
())
{
...
...
@@ -79,21 +85,13 @@ public class TOSCAUtils {
return
outputs
;
}
public
static
Map
<
String
,
String
>
getOutputsForNode
(
Map
<
String
,
Object
>
toscaProvisonMap
,
String
nodeName
)
{
Map
<
String
,
Object
>
topologyTemplate
=
(
Map
<
String
,
Object
>)
((
Map
<
String
,
Object
>)
toscaProvisonMap
.
get
(
"topology_template"
));
Map
<
String
,
Object
>
outputs
=
(
Map
<
String
,
Object
>)
topologyTemplate
.
get
(
"outputs"
);
Map
<
String
,
String
>
matchedOutputs
=
new
HashMap
<>();
Iterator
it
=
outputs
.
entrySet
().
iterator
();
while
(
it
.
hasNext
())
{
Map
.
Entry
output
=
(
Map
.
Entry
)
it
.
next
();
List
<
Map
<
String
,
String
>>
val
=
(
List
<
Map
<
String
,
String
>>)
output
.
getValue
();
for
(
Map
<
String
,
String
>
map
:
val
)
{
if
(
map
.
containsKey
(
nodeName
))
{
matchedOutputs
.
put
((
String
)
output
.
getKey
(),
map
.
get
(
nodeName
));
}
}
}
return
matchedOutputs
;
public
static
Map
<
String
,
String
>
getOutputsForNode
(
ToscaTemplate
toscaTemplate
,
String
nodeName
)
{
TopologyTemplate
topologyTemplate
=
toscaTemplate
.
getTopologyTemplate
();
List
<
Map
<
String
,
Object
>>
outputs
=
topologyTemplate
.
getOutputs
();
List
<
Map
<
String
,
Object
>>
matchedOutputs
=
new
ArrayList
<>();
throw
new
NotImplementedException
();
}
public
static
List
<
String
>
getOutputPair
(
Map
<
String
,
Object
>
outputs
,
String
key
)
{
...
...
@@ -101,9 +99,9 @@ public class TOSCAUtils {
return
outputPair
;
}
public
static
List
<
Map
.
Entry
>
getDockerContainers
(
Map
<
String
,
Object
>
toscaPlan
)
{
Map
<
String
,
Object
>
topologyTemplate
=
(
Map
<
String
,
Object
>)
toscaPlan
.
get
(
"topology_template"
);
Map
<
String
,
Object
>
nodeTemplates
=
(
Map
<
String
,
Object
>)
(
topologyTemplate
).
get
(
"node_templates"
);
public
static
List
<
Map
.
Entry
>
getDockerContainers
(
ToscaTemplate
toscaTemplate
)
{
TopologyTemplate
topologyTemplate
=
toscaTemplate
.
getTopologyTemplate
(
);
Map
<
String
,
Object
>
nodeTemplates
=
topologyTemplate
.
getNodeTemplates
(
);
Iterator
it
=
nodeTemplates
.
entrySet
().
iterator
();
List
<
Map
.
Entry
>
dockerContainers
=
new
ArrayList
<>();
while
(
it
.
hasNext
())
{
...
...
@@ -117,8 +115,8 @@ public class TOSCAUtils {
return
dockerContainers
;
}
public
static
List
<
Map
<
String
,
Object
>>
tosca2KubernetesDeployment
(
Map
<
String
,
Object
>
toscaPlan
)
{
List
<
Map
.
Entry
>
dockerContainers
=
getDockerContainers
(
tosca
Plan
);
public
static
List
<
Map
<
String
,
Object
>>
tosca2KubernetesDeployment
(
ToscaTemplate
toscaTemplate
)
{
List
<
Map
.
Entry
>
dockerContainers
=
getDockerContainers
(
tosca
Template
);
List
<
Map
<
String
,
Object
>>
deployments
=
new
ArrayList
<>();
Iterator
<
Map
.
Entry
>
dicIt
=
dockerContainers
.
iterator
();
...
...
@@ -162,8 +160,8 @@ public class TOSCAUtils {
return
deployments
;
}
public
static
List
<
Map
<
String
,
Object
>>
tosca2KubernetesService
(
Map
<
String
,
Object
>
toscaPlan
)
{
List
<
Map
.
Entry
>
dockerContainers
=
getDockerContainers
(
tosca
Plan
);
public
static
List
<
Map
<
String
,
Object
>>
tosca2KubernetesService
(
ToscaTemplate
toscaTemplate
)
{
List
<
Map
.
Entry
>
dockerContainers
=
getDockerContainers
(
tosca
Template
);
List
<
Map
<
String
,
Object
>>
services
=
new
ArrayList
<>();
Iterator
<
Map
.
Entry
>
dicIt
=
dockerContainers
.
iterator
();
while
(
dicIt
.
hasNext
())
{
...
...
This diff is collapsed.
Click to expand it.
drip-manager/src/main/java/nl/uva/sne/drip/api/ProvisionerApiController.java
View file @
03737f98
...
...
@@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.PathVariable;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.logging.Level
;
import
nl.uva.sne.drip.service.DRIPService
;
import
nl.uva.sne.drip.service.ProvisionerService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -26,10 +28,8 @@ public class ProvisionerApiController implements ProvisionerApi {
private
final
HttpServletRequest
request
;
@Value
(
"${message.broker.queue.provisioner}"
)
private
String
queueName
;
@Autowired
private
DRIPService
drip
Service
;
private
ProvisionerService
provisioner
Service
;
@org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
public
ProvisionerApiController
(
ObjectMapper
objectMapper
,
HttpServletRequest
request
)
{
...
...
@@ -39,13 +39,16 @@ public class ProvisionerApiController implements ProvisionerApi {
@Override
public
ResponseEntity
<
String
>
provisionPlanToscaTemplateByID
(
@ApiParam
(
value
=
"ID of topolog template to p
la
n"
,
required
=
true
)
@ApiParam
(
value
=
"ID of topolog template to p
rovisio
n"
,
required
=
true
)
@PathVariable
(
"id"
)
String
id
)
{
String
accept
=
request
.
getHeader
(
"Accept"
);
if
(
accept
!=
null
&&
accept
.
contains
(
"text/plain"
))
{
dripService
.
setRequestQeueName
(
queueName
);
String
planedYemplateId
=
dripService
.
execute
(
id
);
return
new
ResponseEntity
<>(
planedYemplateId
,
HttpStatus
.
NOT_IMPLEMENTED
);
try
{
String
planedYemplateId
=
provisionerService
.
provision
(
id
);
return
new
ResponseEntity
<>(
planedYemplateId
,
HttpStatus
.
OK
);
}
catch
(
IOException
ex
)
{
java
.
util
.
logging
.
Logger
.
getLogger
(
ProvisionerApiController
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
null
,
ex
);
}
}
return
new
ResponseEntity
<>(
HttpStatus
.
INTERNAL_SERVER_ERROR
);
...
...
This diff is collapsed.
Click to expand it.
drip-manager/src/main/java/nl/uva/sne/drip/service/ProvisionerService.java
0 → 100644
View file @
03737f98
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package
nl
.
uva
.
sne
.
drip
.
service
;
import
java.io.IOException
;
import
java.util.concurrent.TimeoutException
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
nl.uva.sne.drip.commons.utils.TOSCAUtils
;
import
nl.uva.sne.drip.model.Message
;
import
nl.uva.sne.drip.model.ToscaTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
/**
*
* @author S. Koulouzis
*/
@Service
public
class
ProvisionerService
{
@Value
(
"${message.broker.queue.provisioner}"
)
private
String
queueName
;
@Value
(
"${tosca.types.interface}"
)
private
String
toscaTypesInterface
;
@Autowired
private
ToscaTemplateService
toscaTemplateService
;
public
String
provision
(
String
id
)
throws
IOException
{
String
ymlToscaTemplate
=
toscaTemplateService
.
findByID
(
id
);
ToscaTemplate
toscaTemplate
=
toscaTemplateService
.
getYaml2ToscaTemplate
(
ymlToscaTemplate
);
TOSCAUtils
.
getVMsFromTopology
(
toscaTemplate
);
return
null
;
}
}
This diff is collapsed.
Click to expand it.
drip-manager/src/main/resources/application.properties
View file @
03737f98
...
...
@@ -17,4 +17,7 @@ db.username=drip-user
db.password
=
drip-pass
spring.jackson.deserialization.UNWRAP_ROOT_VALUE
=
true
\ No newline at end of file
spring.jackson.deserialization.UNWRAP_ROOT_VALUE
=
true
tosca.types.interface
=
https://raw.githubusercontent.com/skoulouzis/DRIP/DRIP_3.0/TOSCA/interfaces/interface_types.yml
\ No newline at end of file
This diff is collapsed.
Click to expand it.
drip-provisioner/pom.xml
View file @
03737f98
...
...
@@ -25,8 +25,18 @@
<groupId>
com.rabbitmq
</groupId>
<artifactId>
amqp-client
</artifactId>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.9.9.3
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip-commons
</artifactId>
<version>
3.0.0
</version>
<type>
jar
</type>
</dependency>
</dependencies>
...
...
This diff is collapsed.
Click to expand it.
drip-provisioner/src/main/java/nl/uva/sne/drip/drip/provisioner/Consumer.java
View file @
03737f98
...
...
@@ -15,6 +15,8 @@
*/
package
nl
.
uva
.
sne
.
drip
.
drip
.
provisioner
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.SerializationFeature
;
import
com.rabbitmq.client.AMQP
;
import
com.rabbitmq.client.Channel
;
import
com.rabbitmq.client.DefaultConsumer
;
...
...
@@ -25,6 +27,7 @@ import java.io.IOException;
import
java.util.concurrent.TimeoutException
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
nl.uva.sne.drip.model.Message
;
/**
*
...
...
@@ -36,16 +39,15 @@ import java.util.logging.Logger;
public
class
Consumer
extends
DefaultConsumer
{
private
final
Channel
channel
;
// Map<String, String> em = new HashMap<>();
private
final
Logger
logger
;
private
final
String
messageBrokerHost
;
private
final
ObjectMapper
objectMapper
;
public
Consumer
(
Channel
channel
,
String
messageBrokerHost
)
throws
IOException
,
TimeoutException
{
public
Consumer
(
Channel
channel
)
throws
IOException
,
TimeoutException
{
super
(
channel
);
this
.
channel
=
channel
;
this
.
messageBrokerHost
=
messageBrokerHost
;
logger
=
Logger
.
getLogger
(
Consumer
.
class
.
getName
());
this
.
objectMapper
=
new
ObjectMapper
();
objectMapper
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
}
@Override
...
...
@@ -56,18 +58,15 @@ public class Consumer extends DefaultConsumer {
.
correlationId
(
properties
.
getCorrelationId
())
.
build
();
String
response
=
""
;
//The queue only moves bytes so we need to convert them to string
String
message
=
new
String
(
body
,
"UTF-8"
);
Message
message
=
objectMapper
.
readValue
(
new
String
(
body
,
"UTF-8"
),
Message
.
class
);
String
tempInputDirPath
=
System
.
getProperty
(
"java.io.tmpdir"
)
+
File
.
separator
+
"Input-"
+
Long
.
toString
(
System
.
nanoTime
())
+
File
.
separator
;
File
tempInputDir
=
new
File
(
tempInputDirPath
);
if
(!(
tempInputDir
.
mkdirs
()))
{
throw
new
FileNotFoundException
(
"Could not create input directory: "
+
tempInputDir
.
getAbsolutePath
());
}
response
=
"response"
;
String
response
=
objectMapper
.
writeValueAsString
(
message
)
;
logger
.
log
(
Level
.
INFO
,
"Sending Response: '{'0'}'{0}"
,
response
);
// Logger.getLogger(Consumer.class.getName()).log(Level.INFO, "Sending Response: {0}", response);
...
...
This diff is collapsed.
Click to expand it.
drip-provisioner/src/main/java/nl/uva/sne/drip/drip/provisioner/RPCServer.java
View file @
03737f98
...
...
@@ -70,7 +70,7 @@ public class RPCServer {
//We define the queue name
channel
.
queueDeclare
(
prop
.
getProperty
(
"message.broker.queue.provisioner"
,
"provisioner"
),
false
,
false
,
false
,
null
);
DefaultConsumer
c
;
c
=
new
nl
.
uva
.
sne
.
drip
.
drip
.
provisioner
.
Consumer
(
channel
,
prop
.
getProperty
(
"message.broker.host"
)
);
c
=
new
nl
.
uva
.
sne
.
drip
.
drip
.
provisioner
.
Consumer
(
channel
);
//Start listening for messages
channel
.
basicConsume
(
prop
.
getProperty
(
"message.broker.queue.provisioner"
,
"provisioner"
),
false
,
c
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment