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
7f94f332
Commit
7f94f332
authored
Sep 13, 2019
by
Spiros Koulouzis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
try to attach outputs to TOSCA
parent
446c8c13
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
119 additions
and
142 deletions
+119
-142
DeployService.java
.../main/java/nl/uva/sne/drip/api/service/DeployService.java
+10
-125
ProvisionService.java
...in/java/nl/uva/sne/drip/api/service/ProvisionService.java
+33
-11
TOSCAUtils.java
...c/main/java/nl/uva/sne/drip/commons/utils/TOSCAUtils.java
+73
-0
P2PConverter.java
...ain/java/nl/uva/sne/drip/drip/converter/P2PConverter.java
+1
-1
workspace.xml
drip_planner2/.idea/workspace.xml
+2
-5
No files found.
drip-api/src/main/java/nl/uva/sne/drip/api/service/DeployService.java
View file @
7f94f332
...
...
@@ -200,27 +200,22 @@ public class DeployService {
if
(
pro
==
null
)
{
throw
new
NotFoundException
();
}
List
<
String
>
loginKeysIDs
=
pro
.
getDeployerKeyPairIDs
();
//
List<String> loginKeysIDs = pro.getDeployerKeyPairIDs();
List
<
Message
>
messages
=
new
ArrayList
<>();
// if (loginKeysIDs == null || loginKeysIDs.isEmpty()) {
// List<String> cloudConfIDs = pro.getCloudCredentialsIDs();
// CloudCredentials cCred = cloudCredentialsService.findOne(cloudConfIDs.get(0));
// loginKeysIDs = cCred.getkeyPairIDs();
// }
List
<
KeyPair
>
loginKeys
=
new
ArrayList
<>();
for
(
String
keyID
:
loginKeysIDs
)
{
KeyPair
key
=
keyDao
.
findOne
(
keyID
);
loginKeys
.
add
(
key
);
}
//
for (String keyID : loginKeysIDs) {
//
KeyPair key = keyDao.findOne(keyID);
//
loginKeys.add(key);
//
}
List
<
DeployParameter
>
deployParams
=
pro
.
getDeployParameters
();
//
List<DeployParameter> deployParams = pro.getDeployParameters();
List
<
MessageParameter
>
parameters
=
new
ArrayList
<>();
for
(
DeployParameter
dp
:
deployParams
)
{
MessageParameter
messageParameter
=
createCredentialPartameter
(
dp
,
loginKeys
);
parameters
.
add
(
messageParameter
);
}
//
for (DeployParameter dp : deployParams) {
//
MessageParameter messageParameter = createCredentialPartameter(dp, loginKeys);
//
parameters.add(messageParameter);
//
}
MessageParameter
managerTypeParameter
=
createManagerTypeParameter
(
managerType
);
parameters
.
add
(
managerTypeParameter
);
...
...
@@ -258,17 +253,12 @@ public class DeployService {
}
private
MessageParameter
createCredentialPartameter
(
DeployParameter
dp
,
List
<
KeyPair
>
loginKeys
)
{
// String cName = dp.getCloudCertificateName();
MessageParameter
messageParameter
=
new
MessageParameter
();
messageParameter
.
setName
(
"credential"
);
messageParameter
.
setEncoding
(
"UTF-8"
);
String
key
=
null
;
for
(
KeyPair
lk
:
loginKeys
)
{
// String lkName = lk.getPrivateKey().getAttributes().get("domain_name");
// if (lkName.equals(cName)) {
key
=
lk
.
getPrivateKey
().
getKey
();
// break;
// }
}
messageParameter
.
setValue
(
key
);
Map
<
String
,
String
>
attributes
=
new
HashMap
<>();
...
...
@@ -474,114 +464,9 @@ public class DeployService {
}
private
BenchmarkResult
parseSaveBenchmarkResult
(
AnsibleOutput
ansOut
)
{
// KeyValueHolder res = ansOut.getAnsibleResult();
// if (res != null) {
// List<String> cmdList = res.getCmd();
// if (cmdList != null) {
//
// switch (cmdList.get(0)) {
// case "sysbench":
// String[] out = res.getStdout().split("\n");
// String version = getSysbeanchVersion(out[0]);
// int numOfThreads = getNumberOfThreads(out[3]);
// Double executionTime = getExecutionTime(out[14]);
// int totalNumberOfEvents = getTotalNumberOfEvents(out[15]);
//
// double minExecutionTimePerRequest = getMinExecutionTimePerRequest(out[18]);
// double avgExecutionTimePerRequest = getAvgExecutionTimePerRequest(out[19]);
// double maxExecutionTimePerRequest = getMaxExecutionTimePerRequest(out[20]);
// double approx95Percentile = getApprox95Percentile(out[21]);
//
// double avgEventsPerThread = getAvgEventsPerThread(out[24]);
// double stddevEventsPerThread = getStddevEventsPerThread(out[24]);
//
// double avgExecTimePerThread = getAvgExecTimePerThread(out[25]);
// double stddevExecTimePerThread = getStddevExecTimePerThread(out[25]);
//
// SysbenchCPUBenchmark b = new SysbenchCPUBenchmark();
// b.setSysbenchVersion(version);
//
// b.setNumberOfThreads(numOfThreads);
// b.setExecutionTime(executionTime * 1000);
//
// b.setTotalNumberOfEvents(totalNumberOfEvents);
//
// b.setAvgEventsPerThread(avgEventsPerThread);
// b.setStddevEventsPerThread(stddevEventsPerThread);
//
// b.setAvgExecTimePerThread(avgExecTimePerThread * 1000);
// b.setStddevExecTimePerThread(stddevExecTimePerThread);
// b.setApprox95Percentile(approx95Percentile);
//
// b.setMinExecutionTimePerRequest(minExecutionTimePerRequest);
// b.setAvgExecutionTimePerRequest(avgExecutionTimePerRequest);
// b.setMaxExecutionTimePerRequest(maxExecutionTimePerRequest);
//
// b.setAnsibleOutputID(ansOut.getId());
//
// b.setCloudDeploymentDomain(ansOut.getCloudDeploymentDomain());
// b.setHost(ansOut.getHost());
// b.setVmType(ansOut.getVmType());
// b = (SysbenchCPUBenchmark) benchmarkResultService.save(b);
// return b;
//
// default:
// return null;
//
// }
// }
// }
return
null
;
}
private
String
getSysbeanchVersion
(
String
string
)
{
return
string
.
replaceAll
(
"sysbench"
,
""
).
replaceAll
(
": multi-threaded system evaluation benchmark"
,
""
);
}
private
int
getNumberOfThreads
(
String
string
)
{
return
Integer
.
valueOf
(
string
.
replaceAll
(
"Number of threads: "
,
""
));
}
private
Double
getExecutionTime
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"total time:"
,
""
).
replaceAll
(
"s"
,
""
).
trim
());
}
private
int
getTotalNumberOfEvents
(
String
string
)
{
return
Integer
.
valueOf
(
string
.
replaceAll
(
"total number of events:"
,
""
).
replaceAll
(
"s"
,
""
).
trim
());
}
private
Double
getAvgEventsPerThread
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"events \\(avg/stddev\\):"
,
""
).
trim
().
split
(
"/"
)[
0
]);
}
private
Double
getStddevEventsPerThread
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"events \\(avg/stddev\\):"
,
""
).
trim
().
split
(
"/"
)[
1
]);
}
private
Double
getAvgExecTimePerThread
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"execution time \\(avg/stddev\\):"
,
""
).
trim
().
split
(
"/"
)[
0
]);
}
private
Double
getStddevExecTimePerThread
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"execution time \\(avg/stddev\\):"
,
""
).
trim
().
split
(
"/"
)[
1
]);
}
private
double
getMinExecutionTimePerRequest
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"min:"
,
""
).
replaceAll
(
"ms"
,
""
).
trim
());
}
private
double
getAvgExecutionTimePerRequest
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"avg:"
,
""
).
replaceAll
(
"ms"
,
""
).
trim
());
}
private
double
getMaxExecutionTimePerRequest
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"max:"
,
""
).
replaceAll
(
"ms"
,
""
).
trim
());
}
private
double
getApprox95Percentile
(
String
string
)
{
return
Double
.
valueOf
(
string
.
replaceAll
(
"approx. 95 percentile:"
,
""
).
replaceAll
(
"ms"
,
""
).
trim
());
}
private
String
parseValue
(
String
value
)
throws
JSONException
{
JSONArray
ja
=
new
JSONArray
(
value
);
JSONArray
newJa
=
new
JSONArray
();
...
...
drip-api/src/main/java/nl/uva/sne/drip/api/service/ProvisionService.java
View file @
7f94f332
...
...
@@ -58,6 +58,9 @@ import org.springframework.security.core.context.SecurityContextHolder;
import
nl.uva.sne.drip.api.dao.ProvisionResponseDao
;
import
nl.uva.sne.drip.api.rpc.ProvisionerCaller1
;
import
nl.uva.sne.drip.commons.utils.DRIPLogHandler
;
import
nl.uva.sne.drip.commons.utils.TOSCAUtils
;
import
static
nl
.
uva
.
sne
.
drip
.
commons
.
utils
.
TOSCAUtils
.
getVMsFromTopology
;
import
static
nl
.
uva
.
sne
.
drip
.
commons
.
utils
.
TOSCAUtils
.
getVMsNodeNamesFromTopology
;
import
nl.uva.sne.drip.drip.commons.data.v1.external.Key
;
import
nl.uva.sne.drip.drip.commons.data.v1.external.KeyPair
;
import
nl.uva.sne.drip.drip.commons.data.v1.external.ScaleRequest
;
...
...
@@ -343,7 +346,6 @@ public class ProvisionService {
parameters
.
add
(
action
);
PlanResponse
plan
=
addCloudCredentialsOnTOSCAPlan
(
provisionRequest
);
List
<
MessageParameter
>
topologies
=
buildTopologyParams
(
plan
);
parameters
.
addAll
(
topologies
);
invokationMessage
.
setParameters
(
parameters
);
...
...
@@ -418,7 +420,6 @@ public class ProvisionService {
provisionResponse
=
new
ProvisionResponse
();
}
List
<
DeployParameter
>
deployParameters
=
new
ArrayList
<>();
Map
<
String
,
Object
>
kvMap
=
null
;
KeyPair
userKey
=
new
KeyPair
();
KeyPair
deployerKey
=
new
KeyPair
();
...
...
@@ -426,6 +427,14 @@ public class ProvisionService {
Map
<
String
,
Key
>
privateCloudKeys
=
new
HashMap
<>();
Map
<
String
,
Key
>
publicCloudKeys
=
new
HashMap
<>();
PlanResponse
plan
=
addCloudCredentialsOnTOSCAPlan
(
provisionRequest
);
Map
<
String
,
Object
>
toscaPlan
=
plan
.
getKeyValue
();
Map
<
String
,
Object
>
topologyTemplate
=
(
Map
<
String
,
Object
>)
((
Map
<
String
,
Object
>)
toscaPlan
.
get
(
"topology_template"
));
List
<
Map
<
String
,
Object
>>
vmList
=
getVMsFromTopology
(
toscaPlan
);
List
<
String
>
nodeNames
=
getVMsNodeNamesFromTopology
(
toscaPlan
);
Map
<
String
,
Object
>
outputs
=
new
HashMap
<>();
for
(
MessageParameter
p
:
parameters
)
{
String
name
=
p
.
getName
();
if
(
name
.
toLowerCase
().
contains
(
"exception"
))
{
...
...
@@ -441,21 +450,27 @@ public class ProvisionService {
throw
new
Exception
(
"Provision failed"
);
// this.deleteProvisionedResources(provisionResponse);
}
for
(
String
line
:
lines
)
{
DeployParameter
deployParam
=
new
DeployParameter
();
String
[]
parts
=
line
.
split
(
" "
);
for
(
int
i
=
0
;
i
<
lines
.
length
;
i
++)
{
// DeployParameter deployParam = new DeployParameter();
String
[]
parts
=
lines
[
i
].
split
(
" "
);
String
deployIP
=
parts
[
0
];
String
deployUser
=
parts
[
1
];
// String deployCertPath = parts[2];
// String cloudCertificateName = FilenameUtils.removeExtension(FilenameUtils.getBaseName(deployCertPath));
String
deployRole
=
parts
[
2
];
deployParam
.
setIP
(
deployIP
);
deployParam
.
setRole
(
deployRole
);
deployParam
.
setUser
(
deployUser
);
// deployParam.setCloudCertificateName(cloudCertificateName);
deployParameters
.
add
(
deployParam
);
String
nodeName
=
nodeNames
.
get
(
i
);
Map
<
String
,
Object
>
ipOutput
=
TOSCAUtils
.
buildTOSCAOutput
(
nodeName
,
deployIP
);
Map
<
String
,
Object
>
roleOutput
=
TOSCAUtils
.
buildTOSCAOutput
(
nodeName
,
deployRole
);
outputs
.
put
(
"ip"
,
ipOutput
);
outputs
.
put
(
"role"
,
roleOutput
);
Map
<
String
,
Object
>
properties
=
(
Map
<
String
,
Object
>)
vmList
.
get
(
i
).
get
(
"properties"
);
properties
.
put
(
"user_name"
,
deployUser
);
}
break
;
case
"public_user_key"
:
Key
key
=
new
Key
();
...
...
@@ -511,7 +526,13 @@ public class ProvisionService {
kvMap
.
put
(
name
,
Converter
.
ymlString2Map
(
value
));
break
;
}
for
(
String
nodeName
:
nodeNames
)
{
Map
<
String
,
Object
>
keyOutput
=
TOSCAUtils
.
buildTOSCAOutput
(
nodeName
,
p
.
getValue
());
outputs
.
put
(
name
,
keyOutput
);
}
}
topologyTemplate
.
put
(
"outputs"
,
outputs
);
List
<
String
>
userKeyIds
=
null
;
if
(
provisionRequest
!=
null
)
{
userKeyIds
=
provisionRequest
.
getUserKeyPairIDs
();
...
...
@@ -571,7 +592,8 @@ public class ProvisionService {
// provisionResponse.setCloudKeyPairIDs(existingCloudKeyPairIDs);
// provisionResponse.setDeployParameters(deployParameters);
provisionResponse
.
setKvMap
(
kvMap
);
// provisionResponse.setKvMap(kvMap);
provisionResponse
.
setKvMap
(
toscaPlan
);
if
(
provisionRequest
!=
null
)
{
// provisionResponse.setCloudCredentialsIDs(provisionRequest.getCloudCredentialsIDs());
provisionResponse
.
setPlanID
(
provisionRequest
.
getPlanID
());
...
...
drip-commons/src/main/java/nl/uva/sne/drip/commons/utils/TOSCAUtils.java
0 → 100644
View file @
7f94f332
/*
* Copyright 2019 S. Koulouzis
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
nl
.
uva
.
sne
.
drip
.
commons
.
utils
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
/**
*
* @author S. Koulouzis
*/
public
class
TOSCAUtils
{
public
static
List
<
Map
<
String
,
Object
>>
getVMsFromTopology
(
Map
<
String
,
Object
>
toscaPlan
)
{
List
<
String
>
vmNames
=
getVMsNodeNamesFromTopology
(
toscaPlan
);
Map
<
String
,
Object
>
topologyTemplate
=
(
Map
<
String
,
Object
>)
toscaPlan
.
get
(
"topology_template"
);
List
<
Map
<
String
,
Object
>>
vmList
=
new
ArrayList
<>();
for
(
String
vmName
:
vmNames
)
{
Map
<
String
,
Object
>
vm
=
(
Map
<
String
,
Object
>)
topologyTemplate
.
get
(
vmName
);
// Map<String, Object> properties = (Map<String, Object>) vm.get("properties");
vmList
.
add
(
vm
);
}
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"
);
Iterator
it
=
nodeTemplates
.
entrySet
().
iterator
();
List
<
String
>
vmNames
=
new
ArrayList
<>();
while
(
it
.
hasNext
())
{
Map
.
Entry
node
=
(
Map
.
Entry
)
it
.
next
();
Map
<
String
,
Object
>
nodeValue
=
(
Map
<
String
,
Object
>)
node
.
getValue
();
String
type
=
(
String
)
nodeValue
.
get
(
"type"
);
if
(
type
.
equals
(
"tosca.nodes.ARTICONF.VM.topology"
))
{
List
<
Map
<
String
,
Object
>>
requirements
=
(
List
<
Map
<
String
,
Object
>>)
nodeValue
.
get
(
"requirements"
);
for
(
Map
<
String
,
Object
>
req
:
requirements
)
{
Map
.
Entry
<
String
,
Object
>
requirementEntry
=
req
.
entrySet
().
iterator
().
next
();
String
nodeName
=
(
String
)
((
Map
<
String
,
Object
>)
req
.
get
(
requirementEntry
.
getKey
())).
get
(
"node"
);
vmNames
.
add
(
nodeName
);
}
}
}
return
vmNames
;
}
public
static
Map
<
String
,
Object
>
buildTOSCAOutput
(
String
nodeName
,
String
value
)
{
Map
<
String
,
Object
>
output
=
new
HashMap
();
Map
<
String
,
Object
>
outputValue
=
new
HashMap
();
List
<
String
>
att
=
new
ArrayList
<>();
att
.
add
(
nodeName
);
att
.
add
(
value
);
outputValue
.
put
(
"get_attribute"
,
att
);
output
.
put
(
"value"
,
outputValue
);
return
output
;
}
}
drip-planner2provisioner/src/main/java/nl/uva/sne/drip/drip/converter/P2PConverter.java
View file @
7f94f332
...
...
@@ -57,7 +57,7 @@ public class P2PConverter {
break
;
}
}
List
<
Object
>
vmList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>
>
vmList
=
new
ArrayList
<>();
for
(
String
vmName
:
vmNames
)
{
Map
<
String
,
Object
>
vm
=
(
Map
<
String
,
Object
>)
topologyTemplate
.
get
(
vmName
);
Map
<
String
,
Object
>
properties
=
(
Map
<
String
,
Object
>)
vm
.
get
(
"properties"
);
...
...
drip_planner2/.idea/workspace.xml
View file @
7f94f332
...
...
@@ -2,11 +2,8 @@
<project
version=
"4"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"462ede19-adfe-472b-975e-fefefa973fe0"
name=
"Default Changelist"
comment=
"slolved cap error"
>
<change
beforePath=
"$PROJECT_DIR$/../TOSCA/types/nodes.yaml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../TOSCA/types/nodes.yaml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/PlannerService.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/PlannerService.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../drip-planner2provisioner/src/main/java/nl/uva/sne/drip/drip/converter/P2PConverter.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../drip-planner2provisioner/src/main/java/nl/uva/sne/drip/drip/converter/P2PConverter.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/src/planner/basic_planner.py"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/src/planner/basic_planner.py"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/DeployService.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/DeployService.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/ProvisionService.java"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/../drip-api/src/main/java/nl/uva/sne/drip/api/service/ProvisionService.java"
afterDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/venv/lib/python3.6/site-packages/easy-install.pth"
beforeDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/venv/lib/python3.6/site-packages/prettytable.py"
beforeDir=
"false"
/>
<change
beforePath=
"$PROJECT_DIR$/venv/lib/python3.6/site-packages/pyparsing.py"
beforeDir=
"false"
/>
...
...
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