diff options
author | Andrew Gauld <ag1282@att.com> | 2017-08-23 13:28:36 -0400 |
---|---|---|
committer | Andrew Gauld <ag1282@att.com> | 2017-08-23 13:29:44 -0400 |
commit | ce44d14eb43e6da7cdfd189b8fc48d0c1dcf57ec (patch) | |
tree | c2e26604c24dbaeb1bd9115341b1fcc053c33715 /sshkeyshare | |
parent | 4468e8b611f85290633fee8ee9256297976bd2d9 (diff) |
Seed code for Cloudify sshkeyshare plugin
Change-Id: I2dbf80b45303c4383492f1336516b0746418429c
Issue-Id: CCSDK-65
Signed-off-by: Andrew Gauld <ag1282@att.com>
Diffstat (limited to 'sshkeyshare')
-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 |