diff options
author | Dan Timoney <dtimoney@att.com> | 2017-08-23 19:05:29 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2017-08-23 19:05:29 +0000 |
commit | 9b54f0025451cb147e84e47701070582df725b85 (patch) | |
tree | 87ea3fd25c36dcb743f6faf0ca40153c5034ce3f | |
parent | 26d8a24ade044273fe585df50f6715f8582f74e9 (diff) | |
parent | ce44d14eb43e6da7cdfd189b8fc48d0c1dcf57ec (diff) |
Merge "Seed code for Cloudify sshkeyshare plugin"
-rw-r--r-- | sshkeyshare/LICENSE.txt | 17 | ||||
-rw-r--r-- | sshkeyshare/README.md | 22 | ||||
-rw-r--r-- | sshkeyshare/requirements.txt | 0 | ||||
-rw-r--r-- | sshkeyshare/setup.py | 35 | ||||
-rw-r--r-- | sshkeyshare/sshkey_types.yaml | 17 | ||||
-rw-r--r-- | sshkeyshare/sshkeyshare/__init__.py | 28 | ||||
-rw-r--r-- | sshkeyshare/sshkeyshare/keyshare_plugin.py | 39 | ||||
-rw-r--r-- | sshkeyshare/tests/test_plugin.py | 14 | ||||
-rw-r--r-- | sshkeyshare/tox.ini | 7 |
9 files changed, 179 insertions, 0 deletions
diff --git a/sshkeyshare/LICENSE.txt b/sshkeyshare/LICENSE.txt new file mode 100644 index 0000000..f90f8f1 --- /dev/null +++ b/sshkeyshare/LICENSE.txt @@ -0,0 +1,17 @@ +============LICENSE_START======================================================= +org.onap.ccsdk +================================================================================ +Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +================================================================================ +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. +============LICENSE_END========================================================= diff --git a/sshkeyshare/README.md b/sshkeyshare/README.md new file mode 100644 index 0000000..00ec8cd --- /dev/null +++ b/sshkeyshare/README.md @@ -0,0 +1,22 @@ +<!-- +============LICENSE_START======================================================= +org.onap.ccsdk +================================================================================ +Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +================================================================================ +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. +============LICENSE_END========================================================= +--> + +# sshkeyshare +Cloudify plugin for creating ssh keypairs on the fly diff --git a/sshkeyshare/requirements.txt b/sshkeyshare/requirements.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sshkeyshare/requirements.txt diff --git a/sshkeyshare/setup.py b/sshkeyshare/setup.py new file mode 100644 index 0000000..56371ff --- /dev/null +++ b/sshkeyshare/setup.py @@ -0,0 +1,35 @@ +# ============LICENSE_START==================================================== +# org.onap.ccsdk +# ============================================================================= +# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# ============================================================================= +# 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. +# ============LICENSE_END====================================================== + +import os +from setuptools import setup, find_packages + +setup( + name='sshkeyshare', + version='1.0.0', + packages=find_packages(), + author='AT&T', + description=('Cloudify plugin for creating ssh keypairs on the fly.'), + license='Apache 2.0', + keywords='', + url='https://wiki.onap.org', + zip_safe=False, + package_data={'':['LICENSE.txt']}, + install_requires=[ + ] +) diff --git a/sshkeyshare/sshkey_types.yaml b/sshkeyshare/sshkey_types.yaml new file mode 100644 index 0000000..c8e8b06 --- /dev/null +++ b/sshkeyshare/sshkey_types.yaml @@ -0,0 +1,17 @@ +tosca_definitions_version: cloudify_dsl_1_3 + +imports: + - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml +plugins: + ssh_keyshare: + executor: central_deployment_agent + package_name: sshkeyshare + package_version: 1.0.0 +node_types: + ccsdk.nodes.ssh.keypair: + derived_from: cloudify.nodes.Root + properties: + interfaces: + cloudify.interfaces.lifecycle: + create: + implementation: ssh_keyshare.sshkeyshare.keyshare_plugin.generate diff --git a/sshkeyshare/sshkeyshare/__init__.py b/sshkeyshare/sshkeyshare/__init__.py new file mode 100644 index 0000000..c629bea --- /dev/null +++ b/sshkeyshare/sshkeyshare/__init__.py @@ -0,0 +1,28 @@ +# ============LICENSE_START==================================================== +# org.onap.ccsdk +# ============================================================================= +# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# ============================================================================= +# 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. +# ============LICENSE_END====================================================== + +import logging + +def get_module_logger(mod_name): + logger = logging.getLogger(mod_name) + handler=logging.StreamHandler() + formatter=logging.Formatter('%(asctime)s [%(name)-12s] %(levelname)-8s %(message)s') + handler.setFormatter(formatter) + logger.addHandler(handler) + logger.setLevel(logging.DEBUG) + return logger diff --git a/sshkeyshare/sshkeyshare/keyshare_plugin.py b/sshkeyshare/sshkeyshare/keyshare_plugin.py new file mode 100644 index 0000000..7358efd --- /dev/null +++ b/sshkeyshare/sshkeyshare/keyshare_plugin.py @@ -0,0 +1,39 @@ +# ============LICENSE_START==================================================== +# org.onap.ccsdk +# ============================================================================= +# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# ============================================================================= +# 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. +# ============LICENSE_END====================================================== + +import uuid +import os +from cloudify import ctx +from cloudify.decorators import operation + +@operation +def generate(**kwargs): + """ + Create SSH key pair + """ + tmpdir = '/tmp/{0}'.format(uuid.uuid4().hex) + os.mkdir(tmpdir, 0700) + os.system('ssh-keygen -t rsa -b 2048 -C "hadoop@cdapcluster" -N "" -f {0}/id_rsa'.format(tmpdir)) + os.system('base64 -w 0 <{0}/id_rsa >{0}/id64'.format(tmpdir)) + with open('{0}/id64'.format(tmpdir), 'r') as f: + k64 = f.read() + with open('{0}/id_rsa.pub'.format(tmpdir), 'r') as f: + pub = f.read() + os.system('rm -rf {0}'.format(tmpdir)) + ctx.instance.runtime_properties['public'] = pub.strip() + ctx.instance.runtime_properties['base64private'] = k64.strip() diff --git a/sshkeyshare/tests/test_plugin.py b/sshkeyshare/tests/test_plugin.py new file mode 100644 index 0000000..6c5fe93 --- /dev/null +++ b/sshkeyshare/tests/test_plugin.py @@ -0,0 +1,14 @@ +import sshkeyshare.keyshare_plugin +from cloudify.mocks import MockCloudifyContext +from cloudify.state import current_ctx +from cloudify import ctx + +def test_generate(): + mock_ctx = MockCloudifyContext(node_id='test_node_id', node_name='test_node_name', properties={}) + try: + current_ctx.set(mock_ctx) + sshkeyshare.keyshare_plugin.generate() + pub = ctx.instance.runtime_properties['public'] + pvt64 = ctx.instance.runtime_properties['base64private'] + finally: + current_ctx.clear() diff --git a/sshkeyshare/tox.ini b/sshkeyshare/tox.ini new file mode 100644 index 0000000..3a6c714 --- /dev/null +++ b/sshkeyshare/tox.ini @@ -0,0 +1,7 @@ +[tox] +envlist = py27 +[testenv] +deps= + pytest + cloudify==3.4 +commands=pytest |