Skip to content

Commit bc22804

Browse files
committed
fix
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent 400f292 commit bc22804

File tree

5 files changed

+39
-49
lines changed

5 files changed

+39
-49
lines changed

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/manager/ExtensionsImportManagerImpl.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222
import java.nio.file.Files;
2323
import java.nio.file.Path;
2424
import java.nio.file.Paths;
25-
import java.util.Collection;
2625
import java.util.Collections;
27-
import java.util.HashMap;
28-
import java.util.List;
2926
import java.util.Map;
3027
import java.util.UUID;
3128

@@ -41,6 +38,7 @@
4138
import org.apache.commons.lang3.StringUtils;
4239

4340
import com.cloud.hypervisor.ExternalProvisioner;
41+
import com.cloud.utils.FileUtil;
4442
import com.cloud.utils.HttpUtils;
4543
import com.cloud.utils.component.ManagerBase;
4644
import com.cloud.utils.db.Transaction;
@@ -92,14 +90,12 @@ protected Extension importExtensionInternal(String manifestUrl, Path tempDir) {
9290
false, Collections.emptyMap());
9391

9492
for (ExtensionConfig.CustomAction action : extensionConfig.spec.customActions) {
95-
List<Map<String, String>> parameters = action.getParametersMapList();
96-
Map<Integer, Collection<Map<String, String>>> parametersMap = new HashMap<>();
97-
parametersMap.put(1, parameters);
93+
Map<Integer, Map<String, String>> parameters = action.getParametersAsMap();
9894
extensionsManager.addCustomAction(action.name, action.description, extension.getId(),
99-
action.resourcetype, action.allowedroletypes, action.timeout, true, parametersMap,
95+
action.resourcetype, action.allowedroletypes, action.timeout, true, parameters,
10096
null, null, Collections.emptyMap());
10197
}
102-
return null;
98+
return extension;
10399
});
104100
}
105101

@@ -123,8 +119,8 @@ public Extension importExtension(ImportExtensionCmd cmd) {
123119
} catch (Exception e) {
124120
logger.error(e.getMessage(), e);
125121
throw e;
126-
}/* finally {
122+
} finally {
127123
FileUtil.deletePath(tempDir.toString());
128-
}*/
124+
}
129125
}
130126
}

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/util/ExtensionConfig.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717

1818
package org.apache.cloudstack.framework.extensions.util;
1919

20+
import java.util.HashMap;
2021
import java.util.List;
2122
import java.util.Map;
22-
import java.util.stream.Collectors;
23+
24+
import org.apache.cloudstack.api.ApiConstants;
2325

2426
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2527

@@ -99,15 +101,18 @@ public static class CustomAction {
99101
public List<String> allowedroletypes;
100102
public List<Parameter> parameters;
101103

102-
public List<Map<String, String>> getParametersMapList() {
103-
return parameters.stream().map(param -> {
104-
Map<String, String> paramMap = new java.util.HashMap<>();
105-
paramMap.put("name", param.name);
106-
paramMap.put("type", param.type);
107-
paramMap.put("validationformat", param.validationformat);
108-
paramMap.put("required", Boolean.toString(param.required));
109-
return paramMap;
110-
}).collect(Collectors.toList());
104+
public Map<Integer, Map<String, String>> getParametersAsMap() {
105+
Map<Integer, Map<String, String>> paramMap = new HashMap<>();
106+
int index = 0;
107+
for (Parameter param : parameters) {
108+
Map<String, String> singleParamMap = new HashMap<>();
109+
singleParamMap.put(ApiConstants.NAME, param.name);
110+
singleParamMap.put(ApiConstants.TYPE, param.type);
111+
singleParamMap.put(ApiConstants.VALIDATION_FORMAT, param.validationformat);
112+
singleParamMap.put(ApiConstants.REQUIRED, Boolean.toString(param.required));
113+
paramMap.put(index++, singleParamMap);
114+
}
115+
return paramMap;
111116
}
112117
}
113118

@@ -119,7 +124,13 @@ public static class Parameter {
119124
}
120125

121126
public String getArchiveUrl() {
122-
return source.url + "archive/refs/heads/" + source.refs + ".zip";
127+
String type = source != null ? source.type : null;
128+
if ("git".equalsIgnoreCase(type) && source.url != null && source.url.contains("github.com")) {
129+
// ToDo: improve
130+
String ref = source.refs != null ? source.refs : "main";
131+
return source.url.replace("github.com", "codeload.github.com") + "/zip/refs/heads/" + ref;
132+
}
133+
return source == null ? null : source.url;
123134
}
124135

125136
public Spec getSpec() {

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/util/YamlParserTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public class YamlParserTest extends TestCase {
2525

2626
@Test
2727
public void testParseYaml() {
28-
String yamlFilePath = getClass().getResource("manifest.yaml").getFile();
29-
YamlParser.parseYamlFile(yamlFilePath);
28+
String yamlFilePath = getClass().getResource("testmanifest.yaml").getFile();
29+
ExtensionConfig config = YamlParser.parseYamlFile(yamlFilePath);
30+
assertNotNull(config);
3031
}
3132
}

framework/extensions/src/test/java/org/apache/cloudstack/framework/extensions/util/ZipExtractorTest.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

framework/extensions/src/test/resources/org/apache/cloudstack/framework/extensions/util/manifest.yaml renamed to framework/extensions/src/test/resources/org/apache/cloudstack/framework/extensions/util/testmanifest.yaml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@ apiVersion: cloudstack.apache.org/v1
22
kind: OrchestratorExtension
33

44
metadata:
5-
name: firecracker
6-
displayName: Firecracker Extension
5+
name: test
6+
displayName: Test Extension
77
description: >
8-
External orchestrator extension that integrates Firecracker microVMs
9-
with Apache CloudStack via the Orchestrator Extension Framework.
8+
Test extension via the Orchestrator Extension Framework.
109
version: 0.1.0
11-
maintainer: "Marco Sinhoreli <msinhore@gmail.com>"
12-
homepage: "https://github.com/msinhore/cloudstack-firecracker-extension"
10+
maintainer: "Test Maintainer <maintainer@test.com>"
11+
homepage: "https://github.com/maintainer/test"
1312

1413
source:
1514
type: git
16-
url: "https://github.com/msinhore/cloudstack-firecracker-extension"
15+
url: "https://github.com/maintainer/test"
1716
refs: "branchName"
1817

1918
spec:
@@ -25,8 +24,8 @@ spec:
2524

2625
entrypoint:
2726
language: python
28-
path: firecracker.py
29-
targetDir: /usr/share/cloudstack-management/extensions/firecracker
27+
path: test.py
28+
targetDir: /usr/share/cloudstack-management/extensions/test
3029

3130
orchestrator:
3231
requiresPrepareVm: false

0 commit comments

Comments
 (0)