Skip to content
Snippets Groups Projects
Commit ca34189c authored by garciadav's avatar garciadav Committed by bravof
Browse files

Add ha proxy packages

parent e24726fc
No related branches found
No related tags found
1 merge request!65Snmp package2
Showing
with 318 additions and 0 deletions
......@@ -16,3 +16,9 @@
[submodule "magma/hackfest_gateway_vnfd/charms/vyos-config/mod/charm-helpers"]
path = magma/hackfest_gateway_vnfd/charms/vyos-config/mod/charm-helpers
url = https://github.com/juju/charm-helpers.git
[submodule "charm-packages/ha_proxy_charm_vnf/charms/simple/mod/operator"]
path = charm-packages/ha_proxy_charm_vnf/charms/simple/mod/operator
url = https://github.com/canonical/operator
[submodule "charm-packages/ha_proxy_charm_vnf/charms/simple/mod/charms.osm"]
path = charm-packages/ha_proxy_charm_vnf/charms/simple/mod/charms.osm
url = https://github.com/charmed-osm/charms.osm
nsd:nsd-catalog:
nsd:
- id: ha_proxy_charm-ns
name: ha_proxy_charm-ns
short-name: ha_proxy_charm-ns
description: NS with 2 VNFs with cloudinit connected by datanet and mgmtnet VLs
version: '1.0'
logo: osm.png
constituent-vnfd:
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index: '1'
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index: '2'
vld:
- id: mgmtnet
name: mgmtnet
short-name: mgmtnet
type: ELAN
mgmt-network: 'true'
vim-network-name: osm-ext
vnfd-connection-point-ref:
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index-ref: '1'
vnfd-connection-point-ref: vnf-mgmt
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index-ref: '2'
vnfd-connection-point-ref: vnf-mgmt
- id: datanet
name: datanet
short-name: datanet
type: ELAN
vnfd-connection-point-ref:
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index-ref: '1'
vnfd-connection-point-ref: vnf-data
- vnfd-id-ref: ha_proxy_charm-vnf
member-vnf-index-ref: '2'
vnfd-connection-point-ref: vnf-data
charm-packages/ha_proxy_charm_ns/icons/osm.png

54.6 KiB

##
# Copyright 2020 Canonical Ltd.
# 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.
##
touch:
description: "Touch a file on the VNF."
params:
filename:
description: "The name of the file to touch."
type: string
default: ""
required:
- filename
# Standard OSM functions
start:
description: "Stop the service on the VNF."
stop:
description: "Stop the service on the VNF."
restart:
description: "Stop the service on the VNF."
reboot:
description: "Reboot the VNF virtual machine."
upgrade:
description: "Upgrade the software on the VNF."
# Required by charms.osm.sshproxy
run:
description: "Run an arbitrary command"
params:
command:
description: "The command to execute."
type: string
default: ""
required:
- command
generate-ssh-key:
description: "Generate a new SSH keypair for this unit. This will replace any existing previously generated keypair."
verify-ssh-credentials:
description: "Verify that this unit can authenticate with server specified by ssh-hostname and ssh-username."
get-ssh-public-key:
description: "Get the public SSH key for this unit."
##
# Copyright 2020 Canonical Ltd.
# 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.
##
options:
ssh-hostname:
type: string
default: ""
description: "The hostname or IP address of the machine to"
ssh-username:
type: string
default: ""
description: "The username to login as."
ssh-password:
type: string
default: ""
description: "The password used to authenticate."
ssh-public-key:
type: string
default: ""
description: "The public key of this unit."
ssh-key-type:
type: string
default: "rsa"
description: "The type of encryption to use for the SSH key."
ssh-key-bits:
type: int
default: 4096
description: "The number of bits to use for the SSH key."
../src/charm.py
\ No newline at end of file
../src/charm.py
\ No newline at end of file
../src/charm.py
\ No newline at end of file
../../mod/charms.osm/charms/osm/
\ No newline at end of file
../mod/operator/ops
\ No newline at end of file
##
# Copyright 2020 Canonical Ltd.
# 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.
##
name: simple-ha-proxy
summary: A simple example proxy charm
description: |
Simple proxy charm is an example charm used in OSM Hackfests
series:
- xenial
- bionic
peers:
proxypeer:
interface: proxypeer
Subproject commit 7938406a724cd87b73e111d724f120d7a5172d7f
Subproject commit a84ce8776b368a8b2bccdb173716e342db9a6b36
#!/usr/bin/env python3
##
# Copyright 2020 Canonical Ltd.
# 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.
##
import sys
sys.path.append("lib")
from charms.osm.sshproxy import SSHProxyCharm
from ops.main import main
class MySSHProxyCharm(SSHProxyCharm):
def __init__(self, framework, key):
super().__init__(framework, key)
# Listen to charm events
self.framework.observe(self.on.config_changed, self.on_config_changed)
self.framework.observe(self.on.install, self.on_install)
self.framework.observe(self.on.start, self.on_start)
# Listen to the touch action event
self.framework.observe(self.on.touch_action, self.on_touch_action)
def on_config_changed(self, event):
"""Handle changes in configuration"""
super().on_config_changed(event)
def on_install(self, event):
"""Called when the charm is being installed"""
super().on_install(event)
def on_start(self, event):
"""Called when the charm is being started"""
super().on_start(event)
def on_touch_action(self, event):
"""Touch a file."""
if self.model.unit.is_leader():
filename = event.params["filename"]
proxy = self.get_ssh_proxy()
stdout, stderr = proxy.run("touch {}".format(filename))
event.set_results({"output": stdout})
else:
event.fail("Unit is not leader")
return
if __name__ == "__main__":
main(MySSHProxyCharm)
#cloud-config
password: osm4u
chpasswd: { expire: False }
ssh_pwauth: True
write_files:
- content: |
# My new helloworld file
owner: root:root
permissions: '0644'
path: /root/helloworld.txt
vnfd:vnfd-catalog:
vnfd:
- id: ha_proxy_charm-vnf
name: ha_proxy_charm-vnf
short-name: ha_proxy_charm-vnf
version: 1.0
description: A VNF consisting of 1 VDU connected to two external VL, and one for data and another one for management
logo: osm.png
connection-point:
- id: vnf-mgmt
name: vnf-mgmt
short-name: vnf-mgmt
type: VPORT
- id: vnf-data
name: vnf-data
short-name: vnf-data
type: VPORT
mgmt-interface:
cp: vnf-mgmt
vdu:
- id: mgmtVM
name: mgmtVM
image: ubuntu16.04
count: 1
vm-flavor:
vcpu-count: 1
memory-mb: 1024
storage-gb: 10
interface:
- name: mgmtVM-eth0
position: 1
type: EXTERNAL
virtual-interface:
type: PARAVIRT
external-connection-point-ref: vnf-mgmt
- name: dataVM-xe0
position: 2
type: EXTERNAL
virtual-interface:
type: PARAVIRT
external-connection-point-ref: vnf-data
cloud-init-file: cloud-config.txt
vnf-configuration:
juju:
charm: simple
initial-config-primitive:
- seq: 1
name: config
parameter:
- name: ssh-hostname
value: <rw_mgmt_ip>
- name: ssh-username
value: ubuntu
- name: ssh-password
value: osm4u
- seq: 2
name: touch
parameter:
- name: filename
data-type: STRING
value: '/home/ubuntu/first-touch'
config-primitive:
- name: touch
parameter:
- name: filename
data-type: STRING
default-value: '/home/ubuntu/touched'
charm-packages/ha_proxy_charm_vnf/icons/osm.png

54.6 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment