9971c500fea07b44bbf3f7b7f7907e4863217fcd
[ccsdk/cds.git] /
1 /*
2  *  Copyright © 2019 IBM.
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16
17 package org.onap.ccsdk.cds.blueprintsprocessor.ssh.service
18
19 import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintProperties
20 import org.onap.ccsdk.cds.blueprintsprocessor.ssh.BasicAuthSshClientProperties
21 import org.onap.ccsdk.cds.blueprintsprocessor.ssh.SshClientProperties
22 import org.onap.ccsdk.cds.blueprintsprocessor.ssh.SshLibConstants
23 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
24 import org.springframework.stereotype.Service
25
26 @Service(SshLibConstants.SERVICE_BLUEPRINT_SSH_LIB_PROPERTY)
27 open class BluePrintSshLibPropertyService(private var bluePrintProperties: BluePrintProperties) {
28
29     fun blueprintSshClientService(selector: String): BlueprintSshClientService {
30         val prefix = "${SshLibConstants.PROPERTY_SSH_CLIENT_PREFIX}$selector"
31         val sshClientProperties = sshClientProperties(prefix)
32         return blueprintSshClientService(sshClientProperties)
33     }
34
35     fun sshClientProperties(prefix: String): SshClientProperties {
36         val type = bluePrintProperties.propertyBeanType("$prefix.type", String::class.java)
37         return when (type) {
38             SshLibConstants.TYPE_BASIC_AUTH -> {
39                 basicAuthSshClientProperties(prefix)
40             }
41             else -> {
42                 throw BluePrintProcessorException("SSH adaptor($type) is not supported")
43             }
44         }
45     }
46
47     private fun blueprintSshClientService(sshClientProperties: SshClientProperties): BlueprintSshClientService {
48
49         when (sshClientProperties) {
50             is BasicAuthSshClientProperties -> {
51                 return BasicAuthSshClientService(sshClientProperties)
52             }
53             else -> {
54                 throw BluePrintProcessorException("couldn't get SSH client service for")
55             }
56         }
57     }
58
59     private fun basicAuthSshClientProperties(prefix: String): BasicAuthSshClientProperties {
60         return bluePrintProperties.propertyBeanType(
61                 prefix, BasicAuthSshClientProperties::class.java)
62     }
63
64 }